Приветствую. Многие знают отчет "Движение документа" в типовых конфигурациях. Если обратите внимание, то он показывает движения по регистрам на которые у пользователя вообще может не быть прав на чтение. Возникла необходимость разработать внешний отчет для всех пользователей. Делал через СКД, поэтому пошли жалобы, что у некоторых из них не все поля выводятся. При проверке выяснилось, что на многие используемые в отчете регистры у пользователей нет прав. Раздавать права налево и направо я не хочу просто так. Настроек которые бы позволили вывести всю информацию через СКД независимо от прав я не нашел. Пробовал результат помещать во временную таблицу, но систему не обманешь. В итоге пришел к выводу, что можно попробовать это реализовать через ВнешнийИсточникДанных и подставить уже готовую таблицу значений. Но столкнулся с тем, что в запросе используется синтаксис ПостроителяОтчета, т.е. фигурные скобки "{}". И в этот отчет необходимо передавать отбор через параметры при открытии из другой формы. Как мы знаем, в объект Запрос можно передать параметры через УстановитьПараметры(). Но как туда программно передать параметры отборов типа этого?
|{ГДЕ
| ПартииТоваровКомпанииОбороты.Номенклатура.*,
| Регистратор.*,
| СУММА(ПартииТоваровКомпанииОбороты.СтоимостьПриход) КАК СтоимостьПриход,
| СУММА(ПартииТоваровКомпанииОбороты.СтоимостьРасход) КАК СтоимостьРасход}
А дальше как и хотели через ВнешнийИсточникДанных эту таблицу. Важно, чтобы в таблице были значения тип строка. Т.е в каждом поле скд нужно написать ПРЕДСТАВЛЕНИЕ(Регистр.Сотрудник) КАК Сотрудник. иначе есть огромный шанс увидеть ОбъектНеНайден.....
Если конфигурация на БСП то там есть много хороших вещей по передаче и установке параметров при открытии формы отчета.
Сам не пробовал но как вариант. В модуле отчёта есть процедура ПриКомпоновкеРезультата. Там можно сделать Стандартная работка=Ложь и заполнить СКД программно, взяв из отчёта схему, параметры и настройки. Затем вызвать компоновку и этим получить тот же отчёт. Естественно программный код нужно обернуть в привелигированный режим
Есть такой объект как ПостроительЗапроса, о нем ни слова не сказано в двух томах Руководства Разработчика. Возможности у него шире чем у обычного Запроса. Так как позволяет задавать те самые отборы для фигурных скобок. Есть еще объект ПостроительОтчета, но это похоже анахронизм, я не нашел в типовой конфигурации ERP ни строчки с ним. Зато ПостроительЗапроса там используется, не так много мест, но есть. В общем когда с отборами решил вопрос - появился другой. На что менять ОсновнуюСхемуКомпоновкиДанных, где прописаны все настройки, параметры. Я не могу просто так взять и стереть запрос из источника данных, так как сразу "летят" параметры. А это значит, что мне нужно полностью с нуля программно формировать нужную мне схему. А это дико не практично и не быстро. Кроме того относительно Привилегированного режима. Он не будет работать, если это отчет на основе БСП подключаемый через справочник. ДополнительныеОтчетыИОбработки и у него выставлено свойство безопасности = Истина.
Если взвесить все нюансы, то можно сделать вывод, что для реализации подобной задачи СКД мало подходит. Куда проще кинуть на форму ТабличныйДокумент и заполнить обычным Запросом. В этом случае теряется гибкость настроек, но появляется несколько свободных дней на реализацию чего-то другого.