Сперва подключаем обработчик ПередЗагрузкойНастроекВКомпоновщик в процедуре ОпределитьНастройкиФормы
Доступные обработчики:
- ПриСозданииНаСервере
- ПередЗагрузкойНастроекВКомпоновщик
- ПослеЗагрузкиНастроекВКомпоновщик
- ПередЗагрузкойВариантаНаСервере
- ПриЗагрузкеВариантаНаСервере
- ПриЗагрузкеПользовательскихНастроекНаСервере
- ПередЗаполнениемПанелиБыстрыхНастроек
- ПослеЗаполненияПанелиБыстрыхНастроек
- ПриОпределенииПараметровВыбора
- ПриОпределенииИспользуемыхТаблиц
- ПриОпределенииОсновныхПолей
- ПередФормированиемОтчета
&После("ОпределитьНастройкиФормы")
Процедура З_ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки)
Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = истина;
КонецПроцедуры
Если в отчете уже подключен данный обработчик, то делать это не нужно.
Реализуем код обработчика
Процедура ПередЗагрузкойНастроекВКомпоновщик(Контекст, КлючСхемы, КлючВарианта, НовыеНастройкиКД, НовыеПользовательскиеНастройкиКД) Экспорт
//Проверка что схема уже инициализирована
Если КлючСхемы = КлючВарианта Тогда
Возврат;
КонецЕсли;
КлючСхемы = КлючВарианта;
//Программная доработка макета - добавляем набор данных и связываем его с имеющимся в СКД
НаборКомплекты = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
НаборКомплекты.ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных[0].Имя;
НаборКомплекты.АвтоЗаполнениеДоступныхПолей = Истина;
НаборКомплекты.Имя = "ШтрихкодыНоменклатуры";
НаборКомплекты.Запрос =
"ВЫБРАТЬ
| ШтрихкодыНоменклатуры.Штрихкод КАК Штрихкод,
| ШтрихкодыНоменклатуры.Номенклатура КАК Номенклатура,
| ШтрихкодыНоменклатуры.Характеристика КАК Характеристика
|ИЗ
| РегистрСведений.ШтрихкодыНоменклатуры КАК ШтрихкодыНоменклатуры";
ДобавитьПолеНабораДанныхСКД(НаборКомплекты, "Штрихкод");
СвязьНоменклатура = СхемаКомпоновкиДанных.СвязиНаборовДанных.Добавить();
СвязьНоменклатура.НаборДанныхИсточник = "РасчетыСКомитентами";
СвязьНоменклатура.НаборДанныхПриемник = "ШтрихкодыНоменклатуры";
СвязьНоменклатура.ВыражениеИсточник = "Номенклатура";
СвязьНоменклатура.ВыражениеПриемник = "Номенклатура";
СвязьХарактеристика = СхемаКомпоновкиДанных.СвязиНаборовДанных.Добавить();
СвязьХарактеристика.НаборДанныхИсточник = "РасчетыСКомитентами";
СвязьХарактеристика.НаборДанныхПриемник = "ШтрихкодыНоменклатуры";
СвязьХарактеристика.ВыражениеИсточник = "Характеристика";
СвязьХарактеристика.ВыражениеПриемник = "Характеристика";
ВычисляемоеПоле = СхемаКомпоновкиДанных.ВычисляемыеПоля.Добавить();
ВычисляемоеПоле.ПутьКДанным = "Штрихкод";
ВычисляемоеПоле.Выражение = "Штрихкод";
ВычисляемоеПоле.Заголовок = "Штрихкод";
//Подключаем схему
МодульОтчетыСервер = ОбщегоНазначения.ОбщийМодуль("ОтчетыСервер");
МодульОтчетыСервер.ПодключитьСхему(ЭтотОбъект, Контекст, СхемаКомпоновкиДанных, КлючСхемы);
КонецПроцедуры
Процедура ДобавитьПолеНабораДанныхСКД(Знач НаборКомплекты, Знач Путь, Знач Заголовок = "")
Поле = НаборКомплекты.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
Поле.Поле = Путь;
Поле.ПутьКДанным = Путь;
Поле.Заголовок = ?(Заголовок = "", Путь, Заголовок);
КонецПроцедуры
Внимание!!!
При данном варианте доработки не работает сохранение варианта с добавленными полями.
Видимо, тема раскрыта не до конца.