Разрабатываем отчет на СКД, содержащий данные из расширения

17.10.22

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

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

    Как известно, объекты, добавленные в расширении конфигурации недоступны ни во внешних отчетах, ни во внешних обработках во время разработки в конфигураторе. Поэтому для того, чтобы разработать отчет, использующий данные и из объектов расширения, и из объектов конфигурации у нас есть два варианта:

  1. Заимствовать все, необходимые объекты из основной конфигурации в расширение и в расширении же уже разрабатывать нужный отчет. 

  Минус данного подхода в том, что чем больше объектов мы позаимствуем из конфигурации, тем сложнее будет потом анализировать изменения в расширении при обновлении на новый релиз. Есть ещё один момент, который делает такой способ непригодным - необходимость использовать данные из двух и более различных расширений. Поэтому данный способ разработки в данной статье я рассматривать не буду.

  2. Сформировать макет СКД в режиме 1С предприятия посредством консоли отчета, а потом встроить его во внешний отчет. 

 Для формирования макета СКД я использую управляемую консоль отчетов от уважаемого Evg-Lylyk. Чтобы сделать макет СКД, приходится запускать 1С предприятие в режиме толстого клиента. Ну и далее всё по школе - пишу запрос, помещаю его в макет, настраиваю ресурсы, группировки и поля. В консоли отчета, в отличие от конфигуратора, доступны объекты всех расширений.

   Далее я сохраняю макет СКД в файл:

и загружаю сохраненный файл в макет СКД внешнего отчета.

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

   На этом работа по разработке отчета закончена в большинстве случаев, но есть один нюанс:

 В некоторых случаях после проделанных действий, при попытке запустить внешний отчет можно получить следующую ошибку:

   

 "Повторяющееся поле итога".

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

  

  макет

Чтобы выйти из положения, я применяю следующий приём:

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

Функция ПолучитьСхемуКомпоновкиИзФайла()  
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	МакетСКД = ПолучитьМакет("СКД");
	МакетСКД.Записать(ИмяВременногоФайла);
	ЧтениеXML = Новый ЧтениеXML;
	ЧтениеXML.ОткрытьФайл(ИмяВременногоФайла);
	СхемаКомпоновкиДанных = СериализаторXDTO.ПрочитатьXML(ЧтениеXML, Тип("СхемаКомпоновкиДанных"));	
	Возврат СхемаКомпоновкиДанных;
КонецФункции	

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

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

	КомпоновкаДанныхСервер.УстановитьЗаголовкиМакетаКомпоновки(СтруктураЗаголовковПолей(), МакетКомпоновки);
	
	ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
	ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);

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

КонецПроцедуры

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

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

     Разработка на 1С:Предприятие 8.3 (8.3.20.1838), 1С:ERP Управление предприятием 2 (2.5.8.221)

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

Внешний отчет расширение СКД разработка повторяющееся поле итога

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

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

См. также

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

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

16500 руб.

02.09.2020    257364    1425    421    

1163

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

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

29.01.2026    6631    342    shapa_pro    27    

69

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

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

29.10.2025    19241    ovetgana    112    

112

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

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

01.07.2025    11151    krasnoshchekovpavel    7    

68

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

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

10.04.2025    10696    Neti    0    

41

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

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

27.02.2025    16637    ovetgana    50    

93

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

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

24.12.2024    14304    Akcium    17    

46

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

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

20.08.2024    11176    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. pstrig 20.10.22 08:30 Сейчас в теме
Спасибо за ньюансы!
2. vic777tor 20.10.22 09:31 Сейчас в теме
Не плохо бы удалять временный файл перед строкой Возврат СхемаКомпоновкиДанных.
А лучше в таких случаях использовать поток в памяти.
3. al_zzz 325 20.10.22 10:12 Сейчас в теме
(2) Сначала так и сделал. Но если пытаюсь удалить, то возникает ошибка.
С потоком в памяти да, лучше.
4. Dot78 41 24.10.22 07:59 Сейчас в теме
В копилочку. Сохранять в макет и доставать программно не додумалась. Недавно сталкивалась с задачей, отчет задействующий объекты трех расширений, соответственно полноценно работать с конструктором можно только в режиме предприятия, собрала и сохранила в виде варианта универсального отчета,, пыталась сохранить схему компановки в файл и загрузить в отчет в одном из расширений, он запускался без ошибок, но почему-то пустой. Так и не смогла разобраться, почему. Встроила в расширение команду вызова варианта отчета по ключу
5. glek 119 28.02.23 12:27 Сейчас в теме
Поступаю проще: в тексте запроса набора данных пишу "Рыбу" (что-то типа Выбрать 0 Как Количество и так далее), а уже при компоновке данных переопределяю текст запроса. И не надо ничего запускать в толстом и тому подобное.
dehro; VyacheslavShilov; AVAGROUP_IT; katod1985; user1107052; +5 Ответить
6. al_zzz 325 28.02.23 16:17 Сейчас в теме
(5) Я правильно понял, вы имеете ввиду, что консолью не пользуетесь?
А текст запроса пишите просто в текстовом редакторе вручную, без конструктора(он же не будет видеть объекты из расширения)?
В чём тогда ваш способ проще, чем запустить консоль в толстом клиенте?
7. glek 119 28.02.23 16:24 Сейчас в теме
(6) Пользуюсь консолью запросов в режиме предприятия. Он работает в любом клиенте. И не надо ничего дополнительно настраивать в компоновке. Просто подменяю запрос.
8. glek 119 28.02.23 16:30 Сейчас в теме
(6) Кроме того, есть консоль СКД в тонком клиенте. Всё равно не пользуюсь.
9. KVIKS 500 15.03.23 16:27 Сейчас в теме
(5) Фишка этого метода в том, что можно весть отчет написать в конфигураторе в качестве запроса можно описать пустые поля и полностью настроить итоги группировки и прочее. А при запуске подменять у него текст запроса (сам запрос конечно сделать в консоли в режиме предприятия). Это избавит вас хранить отдельный макет скд в двоичных.
10. gmtv 14 08.06.23 14:33 Сейчас в теме
Тут больше вопрос к 1С, почему старина конфигуратор до сих пор не научился работать с несколькими расширениями и мы вынуждены прибегать вот к этому.
NikeeNik; dehro; METRANDIR; Мах; Pushno; Feelthis; sys1c; katod1985; mikl79; romankoav; user1107052; +11 Ответить
11. user625969_Skreg2016 08.12.23 15:19 Сейчас в теме
Столкнулся с такой же проблемой (объекты в расширении).
Получилось запихнуть новую схему через выгрузку в файлы:
Выгрузил отчет в файлы:
подменил файл ...\Templates\ОсновнаяСхемаКомпоновкиДанных\Ext\Template.xml на файл схемы полученной из консоли.
загрузил отчет из файлов
Сохранил.
NikusXXZ; triton34; Igor_Ryaboff; +3 Ответить
12. EmptyLogin 19.02.24 08:26 Сейчас в теме
(11)
Выгрузил отчет в файлы

КАК Вы это сделали?
13. triton34 12.04.24 13:07 Сейчас в теме
Спасибо вам большое, помогли.
14. Feelthis 38 28.11.24 14:41 Сейчас в теме
Чел, ты просто спас меня! 2 пиалы чая этому господину!
15. user1559729 06.02.25 10:10 Сейчас в теме
Спасибо. Помогло.
Использовал типовую консоль СКД - https://its.1c.ru/db/metod8dev/content/3401/hdoc
Для отправки сообщения требуется регистрация/авторизация