Добрый день, коллеги! Тема библиотеки стандартных подсистем обширна и недостаточно раскрыта. Все новые конфигурации построены на основе этой библиотеки, - ЗУП 3.1, УТ 11, ERP 2.4 и другие. Поэтому Вашему вниманию предлагаю простой способ разработки контекстного отчета на основе СКД, поскольку большинство отчетов построено на СКД, и в экзамене на 1С Специалист по платформе тоже отчеты строятся на СКД, которые позволяют на своей основе построить отчеты с универсальными настройками и не создавать полностью макет вручную и программно его заполнять.
Пример построения подобного отчета можно посмотреть демо конфигурации БСП соответствующей версии на примере отчета _ДемоОтчетПоСчетамНаОплатуКонтекстный.
Для программы ЗУП 3.1.12 используется версия библиотеки стандартных подсистем 3.1.2. В отчете используется макет ОсновнаяСхемаКомпоновкиДанных.
В данной схеме компоновки отчета отсутствуют параметры, но в полях выборки есть поле ссылка, именно по нему происходит отбор, при открытии отчета.
В модуле отчета, имеются процедуры:
- СведенияОВнешнейОбработке() Экспорт - для регистрации отчета в системе
Возвращает сведения о внешнем отчете.
//
// Возвращаемое значение:
// Структура - Подробнее см. ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке().
//
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.5.1");
ПараметрыРегистрации.Информация = НСтр("ru = 'Отчет по документам ""Демо: Счет на оплату покупателю"". Используется для демонстрации возможностей подсистемы ""Дополнительные отчеты и обработки"".'");
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиОтчет();
ПараметрыРегистрации.Версия = "2.4.1.1";
ПараметрыРегистрации.Назначение.Добавить("Документ._ДемоСчетНаОплатуПокупателю");
ПараметрыРегистрации.ОпределитьНастройкиФормы = Истина;
Команда = ПараметрыРегистрации.Команды.Добавить();
Команда.Представление = НСтр("ru = 'Список используемой номенклатуры в счетах на оплату'");
Команда.Идентификатор = "Основная";
Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
Команда.ПоказыватьОповещение = Ложь;
Возврат ПараметрыРегистрации;
КонецФункции
2.И две процедуры, с помощью которых происходит передача параметров из вызывающего объекта в отчет:
// СтандартныеПодсистемы.ВариантыОтчетов
// Параметры:
// Форма - ФормаКлиентскогоПриложения, Неопределено -
// КлючВарианта - Строка, Неопределено -
// Настройки - см. ОтчетыКлиентСервер.НастройкиОтчетаПоУмолчанию
//
Процедура ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки) Экспорт
Настройки.ФормироватьСразу = Истина;
Настройки.РазрешеноИзменятьВарианты = Ложь;
Настройки.События.ПриСозданииНаСервере = Истина;
КонецПроцедуры
// Вызывается в обработчике одноименного события формы отчета после выполнения кода формы.
// См. также ФормаКлиентскогоПриложения.ПриСозданииНаСервере в синтакс-помощнике.
//
// Параметры:
// Форма - ФормаКлиентскогоПриложения - Форма отчета.
// Отказ - Булево - Передается из параметров обработчика "как есть".
// СтандартнаяОбработка - Булево - Передается из параметров обработчика "как есть".
//
Процедура ПриСозданииНаСервере(Форма, Отказ, СтандартнаяОбработка) Экспорт
ОбъектыНазначения = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(Форма.Параметры, "ОбъектыНазначения");
Если ОбъектыНазначения <> Неопределено Тогда
Форма.ФормаПараметры.Отбор.Вставить("Ссылка", ОбъектыНазначения);
КонецЕсли;
КонецПроцедуры
// Конец СтандартныеПодсистемы.ВариантыОтчетов
Таким образом в нашем случае отбор по ссылке происходит в этом участке кода:
Форма.ФормаПараметры.Отбор.Вставить("Ссылка", ОбъектыНазначения);
На основе этого примера, я сделал отчет "Лист ознакомления с графиком отпусков", который вызывается из формы списка, и формы документа "График отпусков", причем в этом отчете параметры присутствуют, и они корректно заполняются. Вместо "Ссылка" в вышеприведенном коде нужно вставить название вашего параметра.
После добавления внешнего отчета в Дополнительные отчеты и обработки необходимо также указать размещение, в нашем случае документ "График отпусков".
После этого в меню Еще... появляется пункт Дополнительные отчеты, откуда и вызывается отчет "Лист ознакомления".