Тема: Последовательности

Добавить документ в последовательность

Запрос = Новый Запрос("
|ВЫБРАТЬ
| ВзаиморасчетыСПокупателями.Регистратор,
| ВзаиморасчетыСПокупателями.Период КАК Период,
| ВзаиморасчетыСПокупателями.Контрагент,
| ВзаиморасчетыСПокупателями.ВидРеализации,
| ВзаиморасчетыСПокупателями.МоментВремени
|ИЗ
| Последовательность.ВзаиморасчетыСПокупателями КАК ВзаиморасчетыСПокупателями
|ГДЕ
| ВзаиморасчетыСПокупателями.ВидРеализации = Значение(Справочник.ВидыРеализации.ПустаяСсылка)
|
|УПОРЯДОЧИТЬ ПО
| Период
|");

Выборка = Запрос.Выполнить().Выбрать();
// Создать набор записей таблицы регистрации последовательности
// (при этом он пуст)
НаборЗаписейРегистрации = Последовательности.ВзаиморасчетыСПокупателями.СоздатьНаборЗаписей();
Пока Выборка.Следующий() Цикл
ОбработкаПрерыванияПользователя();
// Установить отбор по очередному зарегистрированному документу
// в наборе записей
НаборЗаписейРегистрации.Отбор.Регистратор.Установить(Выборка.Регистратор);
НоваяЗапись = НаборЗаписейРегистрации.Добавить();
НоваяЗапись.Регистратор = Выборка.Регистратор;
НоваяЗапись.Период = Выборка.Регистратор.Дата;
НоваяЗапись.Контрагент = Выборка.Регистратор.Контрагент;
НоваяЗапись.ВидРеализации = Выборка.Регистратор.ВидРеализации;
НаборЗаписейРегистрации.Записать();
НаборЗаписейРегистрации.Очистить();
Состояние(Выборка.Период);
КонецЕсли;
КонецЦикла;

Тема: Табличный документ

В файле mxl расставить страницы.

Таб = Новый ТабличныйДокумент;
Таб.Прочитать(ПутьКФайлу);
Таб.ТолькоПросмотр=Ложь;
ОбластьПервойЯчейки = Таб.НайтиТекст("(личная подпись)",,,,,,);

Если ОбластьПервойЯчейки = Неопределено тогда
Возврат;
КонецЕсли;

НомерСтрокиНачалаРЛ = ОбластьПервойЯчейки.Верх;

НомерСтрокиКонцаРЛ = НомерСтрокиНачалаРЛ + 1;
ОбластьРазделителя = Таб.Область(НомерСтрокиНачалаРЛ + 1, , НомерСтрокиНачалаРЛ + 1, );
ОбластьРазделителя.НачалоСтраницы = истина;

ОбластьСлед = Таб.Область(НомерСтрокиКонцаРЛ, , НомерСтрокиКонцаРЛ, );
ОбластьПервойЯчейки = Таб.НайтиТекст("(личная подпись)", ОбластьСлед);

Пока ОбластьПервойЯчейки <> Неопределено Цикл
НомерСтрокиНачалаРЛ = ОбластьПервойЯчейки.Верх;
НомерСтрокиКонцаРЛ = НомерСтрокиНачалаРЛ + 1;
ОбластьРазделителя = Таб.Область(НомерСтрокиНачалаРЛ + 1, , НомерСтрокиНачалаРЛ + 1, );
ОбластьРазделителя.НачалоСтраницы = истина;
ОбластьСлед = Таб.Область(НомерСтрокиКонцаРЛ, , НомерСтрокиКонцаРЛ, );
ОбластьПервойЯчейки = Таб.НайтиТекст("(личная подпись)", ОбластьСлед);

ОбработкаПрерыванияПользователя();

КонецЦикла;

Таб.Показать();

Тема: Ограничение доступа

Ограничение доступа на уровне записей по документу. Пример:

Открываем роль, выделяем нужный документ, права выделяем "Чтение". Внизу "Ограничение доступа к данным:" добавляем новую запись.
(В колонке "Поля" выбираем "прочие поля", а колонку ограничение доступа заносим этот запрос:

СписаниеМатериалов ИЗ Документ.СписаниеМатериалов КАК СписаниеМатериалов
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.Протокол КАК Протокол
ПО СписаниеМатериалов.Ссылка = Протокол.Объект
ГДЕ (Протокол.Автор = &Пользователь
ИЛИ Протокол.Автор ЕСТЬ NULL )

В этом запросе в качестве параметров можно передовать значения параметров сеанса (ПараметрыСеанса.Пользователь).
Таким образом пользователь будет видеть только документы которые он сам создал.