Программное создание отчета на СКД с расшифровкой (обычные формы)

15.10.21

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

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

Например, так:

 

 

Процедура ПоказатьОтчет(Кнопка)
	
	Отчет = Отчеты.НашОтчет.Создать();
	ФормаОтчета = Отчеты.НашОтчет.ПолучитьФорму();
	
	СхемаКомпоновкиДанных = Отчет.СхемаКомпоновкиДанных;
	Настройки             = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
   	
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
	
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ФормаОтчета.ЭлементыФормы.Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки);
	
	ФормаОтчета.Открыть();
	
КонецПроцедуры

 

 

Как можно заметить, в процедуре ПроцессорВывода.УстановитьДокумент(ФормаОтчета.ЭлементыФормы.Результат) используется форма отчета, которая должна быть создана в конфигураторе в явном виде и на ней должно присутствовать поле табличного документа с именем «Результат».

Здесь я не буду заострять внимание на установке параметров, отборов, условного оформления и прочего, так как данный код работоспособен и без этого. Но хочу обратить внимание на то, что же возвращает схема компоновки. В большинстве случаев при решении подобной задачи нам нужно будет вывести некоторые ссылочные данные. Мы исходим из того, что сам НашОтчет выводит их корректно – как представление ссылки, которые можно открыть двойным кликом мыши.

 Однако, нажав кнопку, вызывающую процедуру ПоказатьОтчет(), мы увидим лишь представления ссылочных данных, без возможности расшифровки. Хотя сам отчет нормально расшифровывает выводимые данные. Значит, нам придется самостоятельно передать эту расшифровку на вызываемую форму отчета.

Создадим на форме реквизит, в который будем передавать расшифровку, создаваемую СКД. Тип реквизита зададим как «Произвольный», так как тип ДанныеРасшифровкиКомпоновкиДанных отсутствует в списке доступных.

 

И при открытии формы передадим в нее сформированную СКД расшифровку.

 

 

Процедура ПоказатьОтчет(Кнопка)
	
	ФормаОтчета = Отчеты. НашОтчет.ПолучитьФорму();
	Отчет = Отчеты. НашОтчет.Создать();
	
	СхемаКомпоновкиДанных = Отчет.СхемаКомпоновкиДанных;
	Настройки             = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;
	
	КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
	
	ДанныеРасшифровкиКомпоновки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровкиКомпоновки);
   	
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровкиКомпоновки);
	
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ФормаОтчета.ЭлементыФормы.Результат);
    ПроцессорВывода.Вывести(ПроцессорКомпоновки);
	
	МакетКомпоновки = КомпоновщикМакета.Выполнить(Отчет.СхемаКомпоновкиДанных, Настройки);
	
	ФормаОтчета.ДанныеРасшифровки = ДанныеРасшифровкиКомпоновки;
	ФормаОтчета.Открыть();
	
КонецПроцедуры

 

Таким образом мы получим отчет, в котором расшифровка работает так же, как если бы мы его запускали непосредственно из формы отчета.

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

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

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

См. также

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

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

16500 руб.

02.09.2020    261753    1460    421    

1170

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

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

29.01.2026    7169    373    shapa_pro    27    

68

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

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

29.10.2025    20762    ovetgana    112    

115

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

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

01.07.2025    11881    krasnoshchekovpavel    7    

68

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

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

10.04.2025    11506    Neti    0    

41

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

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

27.02.2025    17083    ovetgana    50    

93

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

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

24.12.2024    14837    Akcium    17    

47

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

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

20.08.2024    11958    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. top_1c 4099 05.10.21 08:28 Сейчас в теме
Почему бы вообще всю публикацию не сделать картинкой, а не только листинг? Реклама второпях.
LeXXeR; cleaner_it; Garfild12; MCV; Sure; artbear; +6 Ответить
2. artbear 1588 05.10.21 12:42 Сейчас в теме
(1) Согласен. зачем код выводить в картинках.

читателям никакой пользы (

до исправления минусую публикацию.
cleaner_it; +1 Ответить
3. echo77 1939 05.10.21 13:45 Сейчас в теме
А что если просто написать?
ФормаОтчета = Отчет.ПолучитьФорму();
Отчет.СкомпоноватьРезультат(ФормаОтчета.ЭлементыФормы.Результат, ФормаОтчета.ДанныеРасшифровки);
ФормаОтчета.Открыть();
daho; LeXXeR; jONES1979; +3 Ответить
4. jONES1979 08.10.21 10:24 Сейчас в теме
Структура материала: В первой части постим листинг заведомо неполный, чтобы потом его типа "доработать" и выложить полный.

Надо было ещё из первого убрать " ФормаОтчета.Открыть(); " потом посетовать что при таком вызове отчет не выведется на экран, а во втором листинге таким же образом "починить".
cleaner_it; +1 Ответить
5. Madabuda 27.04.24 11:12 Сейчас в теме
Пробовал во форме внешней обработки выводить данные из макета скд в табличный документ. При расшифровке выводит циферки в окошке.
Для отправки сообщения требуется регистрация/авторизация