ПрисоединитьИЗаполнитьОбластьТаблицы (БСП)

Автор: 1С
ОбщийМодуль.УправлениеПечатьюMSWordКлиент
БСП

Присоединить заполнить область таблицы. Добавляет область списка в печатную форму из макета, при этом заменяя

// Добавляет область списка в печатную форму из макета, при этом заменяя
// параметры в области значениями из данных объекта.
// Применяется при выводе строки таблицы.
//
// Параметры:
// ПечатнаяФорма - ссылка на печатную форму.
// Область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
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПрисоединитьИЗаполнитьКоллекцию (БСП)

ПрисоединитьОбластьИЗаполнитьПараметры (БСП)

ПрисоединитьИЗаполнитьНабор (БСП)

ПрисоединитьОбласть (БСП)

TurboConf 6 - расширение Конфигуратора 1С