=== Для толстого клиента ===
1. В любой встроенный в конфигурацию Отчет, у которого не назначена основная схема компоновки данных (можно обойтись без назначения макета основной схемой, но тогда чуть больше кода писать) добавляем конструкторами а) Макет типа СхемаКомпоновкиДанных и б) форму Отчета
Форму не назначаем отчету. Форма нужна только для работы события расшифровки элемента формы Результат. В примере расшифровка документа ПоступлениеТоваровУслуг
Запрос в БД и нужный вывод полей делается в макете СКД. Описывать нечего - делаем под себя как надо.
Это все правки в Отчете, т.е. в будущем его будет очень легко обновлять, если это типовая конфигурация.
2. В том месте, где нужно вызвать Отчет программно, пишем вызов отчета.
За счет того, что макет СКД назначен как основная схема СКД сразу после создания отчета можно вызывать КомпоновщикНастроек.ПолучитьНастройки(), наложить нужные отборы.
Чтобы работала расшифровка передаем ДанныеРасшифровкиКомпоновкиДанных в СкомпоноватьРезультат(). При этом создавать/править для простых случаев процедуру ПриКомпоновкеРезультата() в модуле объекта Отчета не требуется.
Пример будет работать в любой конфигурации на любой версии платформы 8.3.* под толстым клиентом.
=== Для тонкого клиента ===
Для полноты описания: в случае с УФ под тонкого клиента действия намного проще.
Создаем как раньше конструкторами а) макет СКД и назначаем его как основную схему компоновки данных, б) управляемую форму отчета. При создании Формы отчета достаточно только поставить галочку использовать СКД.
С формой больше в принципе можно ничего не делать. В месте вызова отчета пишется следующий код, где Отбор накладывается по желанию на нужные поля.
&НаКлиенте
Процедура ОткрытьОтчет(Команда)
ПараметрыОткрытия = Новый Структура("СформироватьПриОткрытии", Истина);
ПараметрыОткрытия.Вставить("Отбор", Новый Структура("Номенклатура",ПредопределенноеЗначение("Справочник.Номенклатура.Товар1")));
ОткрытьФорму("Отчет.ОтчетУФ.Форма.ФормаОтчета",ПараметрыОткрытия,ЭтаФорма,,,,,РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
КонецПроцедуры
Расшифровка будет работать для выбранных полей ссылочного типа.
Другие мои публикации на Инфостарте: