Присоединить заполнить область таблицы. Добавляет область списка в печатную форму из макета, при этом заменяя
// Добавляет область списка в печатную форму из макета, при этом заменяя
// параметры в области значениями из данных объекта.
// Применяется при выводе строки таблицы.
//
// Параметры:
// ПечатнаяФорма - ссылка на печатную форму.
// ОбластьHandler - ссылка на область в макете.
// ИмяТаблицы - наименование таблицы (для доступа к данным).
// ДанныеОбъекта - ДанныеОбъекта
// ПереходНаСледСтроку - булево, требуется ли вставлять разрыв после вывода области.
//
Процедура ПрисоединитьИЗаполнитьОбластьТаблицы(Знач ПечатнаяФорма,
Знач ОбластьHandler,
Знач ДанныеОбъекта = Неопределено,
Знач ПереходНаСледСтроку = Истина) Экспорт
Если ДанныеОбъекта = Неопределено Или ДанныеОбъекта.Количество() = 0 Тогда
Возврат;
КонецЕсли;
ПерваяСтрока = Истина;
ОбластьHandler.Document.Range(ОбластьHandler.Start, ОбластьHandler.End).Copy();
ActiveDocument = ПечатнаяФорма.COMСоединение.ActiveDocument;
// Вставляем первый строку, по которому далее будет выполняться
// вставка новых строк с форматированием по первой.
ВставитьРазрывНаНовуюСтроку(ПечатнаяФорма);
ПозицияВставки = ActiveDocument.Range().End;
ОбластьВставки = ActiveDocument.Range(ПозицияВставки-1, ПозицияВставки-1);
ОбластьВставки.Paste();
ActiveDocument.Range(ПозицияВставки-2, ПозицияВставки-2).Delete();
Если ТипЗнч(ДанныеОбъекта[0]) = Тип("Структура") Тогда
Для Каждого ПараметрЗначение Из ДанныеОбъекта[0] Цикл
Заменить(ActiveDocument.Content, ПараметрЗначение.Ключ, ПараметрЗначение.Значение);
КонецЦикла;
КонецЕсли;
Для Каждого ДанныеСтрокиТаблицы Из ДанныеОбъекта Цикл
Если ПерваяСтрока Тогда
ПерваяСтрока = Ложь;
Продолжить;
КонецЕсли;
НоваяПозицияВставки = ActiveDocument.Range().End;
ActiveDocument.Range(ПозицияВставки-1, ActiveDocument.Range().End-1).Select();
ПечатнаяФорма.COMСоединение.Selection.InsertRowsBelow();
ActiveDocument.Range(НоваяПозицияВставки-1, ActiveDocument.Range().End-2).Select();
ПечатнаяФорма.COMСоединение.Selection.Paste();
ПозицияВставки = НоваяПозицияВставки;
Если ТипЗнч(ДанныеСтрокиТаблицы) = Тип("Структура") Тогда
Для Каждого ПараметрЗначение Из ДанныеСтрокиТаблицы Цикл
Заменить(ActiveDocument.Content, ПараметрЗначение.Ключ, ПараметрЗначение.Значение);
КонецЦикла;
КонецЕсли;
КонецЦикла;
Если ПереходНаСледСтроку Тогда
ВставитьРазрывНаНовуюСтроку(ПечатнаяФорма);
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ПрисоединитьИЗаполнитьКоллекцию (БСП)
ПрисоединитьОбластьИЗаполнитьПараметры (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)