Если в запросе используется конструкция вида регистратор.дата или получение еще какого-либо реквизита через регистратор и это поле не отображается в полях отчета СКД, то:
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
Что при разработке отчетов требуется чтобы у пользователя с ограниченными правами, отчет формировался полностью без проверки прав!
Особенно если настроен RLS
Есть несколько способов как это сделать:
1. Установить привилегированный режим в модуле отчета
Форма отчета должна быть Управляемой, далее в модуле отчета процедура обработчика «При компоновке результата»:
2. Формирование в привилегированном режиме через Общий модуль с галкой Привелигерованный
Создаем общий модуль
так же как в пункте 1 в обработчике «При компоновке результата» пишем:
В общем модуле МЕ_ДляОтчетаСКД_ПривелРежим код:
3. Если включен режим Использовать ограничение на уровне прав доступа - RLS
Часто используется в типовых. Тут в модуле для текущего пользователя можно на время формирования отчету установить параметр сеанса ИспользоватьОграниченияПравДоступаНаУровнеЗаписей в Ложь и RLS не сработает.
После завершения формирования, не забудьте включить rls обратно установив = Истина
4. Если в запросе используется конструкция вида регистратор.дата и это поле не отображается в полях отчета СКД
Допустим Вы сделали запрос по регистру накоплений и через регистратор обратились к дате или сумме документа и при формировании отчета СКД, эти поля недоступны !? как же быть?
Проблема в том - что у регистратором может выступать несколько документов и видимо права чтение/просмотр есть не на все - поэтому через скд эта таблица целиком недоступна, решение:
1. открыть доступ на все регистраторы регистра
2. в запросе четко обозначить тип
В дополнении у пункту 1, код процедуры сформировать отчет(). Для вывода отчета я использую шаблон All4CF.ru_Template_SKD_v4.1 в нем уже реализованы почти все необходимые функции и работает в Обычных и УП формах:
Если необходимо просто прочитать движения, без последующей модификации, можно воспользоваться запросом к нужному регистру:
В запросе выбираем все поля (кроме виртуальных) из таблицы регистра РегистрНакопления.ОстаткиНоменклатуры с отбором по регистратору. Значением параметра Регистратор нужно будет установить ссылку на документ.
Если же нужно чтение с последующей модификацией движений, следует воспользоваться объектной моделью представления информации: в свойстве Движения объекта документа обратиться к нужному регистру (в нашем случае это регистр ОстаткиНоменклатуры) и прочитать набор записей регистра.
Если требуется изменить движения документа по всем регистрам, нужно обойти фиксированную коллекцию, содержащуюся в свойстве Движения:
Сначала открываем цикл перебора свойств свойства Движения – коллекций наборов записей регистров, для которых наш документ является регистратором.
Далее читаем наборы записей каждой коллекции и открываем цикл перебора записей данного набора записей.
Это можно сделать с помощью оператора языка запросов ССЫЛКА, который позволяет проверить, является ли значение выражения, указанного слева от него, ссылкой на таблицу, указанную справа.
Рассмотрим на примере, выберем из регистра накопления РеализацияУслуг только те записи, для которых регистратором является документ РеализацияТоваровУслуг: