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

19.04.25

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

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

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

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

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

 

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

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

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

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

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

Внимание!!!

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

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

Вступайте в нашу телеграмм-группу Инфостарт

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

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

16500 руб.

02.09.2020    261370    1458    421    

1170

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    7133    372    shapa_pro    27    

69

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    20623    ovetgana    112    

115

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Описан способ заполнения списка доступных значений для полей наборов данных и параметров в схеме компоновки данных для любых конфигураций (с использованием БСП или без).

01.07.2025    11825    krasnoshchekovpavel    7    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    11424    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

27.02.2025    17038    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    14796    Akcium    17    

47

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    11877    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Pim 190 20.04.25 07:36 Сейчас в теме
Тема интересная, но почему автор не раскрыл некоторые моменты. Например, где "реализуется" ПередЗагрузкойНастроекВКомпоновщик? Модуль объекта, модуль менеджера? Суть параметров процедуры не совсем ясна.
2. ixijixi 2151 21.04.25 08:57 Сейчас в теме
(1) Это в модуле объекта. Там, кстати, кроме ПередЗагрузкойНастроекВКомпоновщик много интересного
Для отправки сообщения требуется регистрация/авторизация