Программная модификация СКД типового отчета - добавляем набор данных Штрихкоды

19.04.25

Разработка - СКД

Иногда надо добавить поле в СКД в типовой отчет. Например, вывести штрихкод. Решаем задачу с помощью расширения при помощи программной доработки макета.

Сперва подключаем обработчик ПередЗагрузкойНастроекВКомпоновщик в процедуре ОпределитьНастройкиФормы

Доступные обработчики:

  1. ПриСозданииНаСервере
  2. ПередЗагрузкойНастроекВКомпоновщик
  3. ПослеЗагрузкиНастроекВКомпоновщик
  4. ПередЗагрузкойВариантаНаСервере
  5. ПриЗагрузкеВариантаНаСервере
  6. ПриЗагрузкеПользовательскихНастроекНаСервере
  7. ПередЗаполнениемПанелиБыстрыхНастроек
  8. ПослеЗаполненияПанелиБыстрыхНастроек
  9. ПриОпределенииПараметровВыбора
  10. ПриОпределенииИспользуемыхТаблиц
  11. ПриОпределенииОсновныхПолей
  12. ПередФормированиемОтчета

 

&После("ОпределитьНастройкиФормы")
Процедура З_ОпределитьНастройкиФормы(Форма, КлючВарианта, Настройки)
    Настройки.События.ПередЗагрузкойНастроекВКомпоновщик = истина;
КонецПроцедуры

Если в отчете уже подключен данный обработчик, то делать это не нужно.

Реализуем код обработчика
 

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

Процедура ДобавитьПолеНабораДанныхСКД(Знач НаборКомплекты, Знач Путь, Знач Заголовок = "")
    
    Поле = НаборКомплекты.Поля.Добавить(Тип("ПолеНабораДанныхСхемыКомпоновкиДанных"));
    Поле.Поле = Путь;
    Поле.ПутьКДанным = Путь;
    Поле.Заголовок = ?(Заголовок = "", Путь, Заголовок);
    
КонецПроцедуры

Внимание!!!

При данном варианте доработки не работает сохранение варианта с добавленными полями. 

Видимо, тема раскрыта не до конца.

СКД программно БСП

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    184724    1029    403    

968

СКД Программист Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

Хорошая отчетная форма - сродни искусству. Есть какое-то невероятное эстетическое удовольствие в том, чтобы разобраться в логике учета и анализируемых показателях, спроектировать архитектуру хранения данных так, чтобы оптимально собрать эти показатели вместе с аналитическими разрезами в запросе, а затем настроить отображение так, чтобы, глядя на результат, сразу было понятно, что это за отчет и какие задачи он призван решать. Система компоновки данных - это моя первая, главная и, наверное, единственная "рабочая" любовь. Ее я использую везде, где только можно и где нельзя тоже. Хочу поделиться с вами некоторыми практическими приемами в работе с отчетами на СКД, которые, надеюсь, будут полезны.

27.02.2025    9870    ovetgana    50    

87

СКД Программист Платформа 1С v8.3 Система компоновки данных Бесплатно (free)

СКД – инструмент, на базе которого в современных конфигурациях реализованы практически все отчеты. СКД используется в динамических списках, печатных формах и универсальных механизмах. Если построить простейший отчет может каждый разработчик, то с нюансами знакомы далеко не все. Расскажем о неочевидных на первый взгляд приемах, способных значительно повысить качество отчетов.

24.12.2024    7407    Akcium    13    

43

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    13424    implecs    6    

51

Инструментарий разработчика СКД Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

По выбранной схеме компоновки данных генерирует программный код, который генерирует СКД, аналогичную исходной схеме. Есть дополнительные инструменты для просмотра дерева схемы, сравнение исходной схемы и полученной по коду, а также сравнение изменений в сгенерированном коде для исходной схемы и для измененной.

3 стартмани

05.02.2024    9117    65    obmailok    21    

82

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы 1C:Бухгалтерия Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3711    6    Yashazz    2    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 1C:Бухгалтерия Абонемент ($m)

Долгое время поддерживаю web-портал, в котором появилась необходимость создавать отчеты. Просмотрев различные фреймворки на js, я решил сделать свое решение, которое позволяло бы быстро разрабатывать и добавлять новые отчеты на web-портал.

2 стартмани

11.12.2023    12782    25    John_d    30    

128
Оставьте свое сообщение