Доброго дня, коллеги!
В рамках курса по СКД большое внимание уделяется программной работе с СКД. Обладая навыками программной работы можно решить любую “хитрую” задачу. Вот вам пример головоломки от слушателя курса :)
Курс: Профессиональная разработка отчетов в 1С 8.3 на СКД
Вопрос
Ответ
Добрый день!
Можно в модуле объекта создать процедуру ПриКомпоновкеРезультата, в которой использовать строку кода:
УстановитьПривилегированныйРежим(Истина);
В этой процедуре затем программно выполнять компоновку отчета.
Также важный момент – при загрузке настроек платформа автоматически удаляет из настроек недоступные по правам доступа поля. Поэтому можно в отчете сделать схему компоновки, в которой используется набор данных – объект. При исполнении отчета программно подменять схему компоновки данных на нужную, компоновку отчета выполнять в привилегированном режиме.
Профессиональная разработка отчетов в 1С 8.3 на СКД.
“при загрузке настроек платформа автоматически удаляет из настроек недоступные по правам доступа поля” – что бы СКД не удаляла поля можно через объединение в запрос добавить строку содержащую пустые значения нужного типа (если тип недоступен, то просто Неопределено), а потом убрать ее отбором.
Спасибо, что поделились Вашим опытом!
Попробовал вашим способом. что-то не взлетело. Получается в самом запросе же нужно убрать директиву “Разрешенные” и объединить с пустым значением. А тогда пишет “У пользователя недостаточно прав на исполнение операции”, хотя привилегированный режим при компоновке указал
В таком случае попробуйте воспользоваться набором данных – объектом, как указано в статье.
Или как вариант – в тексте запроса схемы компоновки использовать заглушку (только описание полей):
ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) КАК Номенклатура,
0 КАК Сумма
И программно в общем модуле с галочкой Привилегированный подменять текст запроса на нужный Вам, программно выполнять компоновку.
Добрый день, почему- то в серверном привилегированном модуле ошибка при чтении данных:
Ошибка вывода результата
по причине:
Ошибка при выводе результата
по причине:
Ошибка получения данных
по причине:
Ошибка создания набора данных “НаборДанных1”
по причине:
Ошибка при исполнении запроса набора данных
по причине:
Ошибка выполнения запроса
по причине:
У пользователя недостаточно прав на исполнение операции над базой данных.
Не могу прокомментировать, почему возникает такая ошибка в Вашем случае.