Каталог решений - Функция заполнения документа word по шаблону. Аналог функции CRM_ЗаменитьШаблонВВордеНаТекст

Функция заполнения документа word по шаблону. Аналог функции CRM_ЗаменитьШаблонВВордеНаТекст

Функция заполнения документа word по шаблону. Аналог функции CRM_ЗаменитьШаблонВВордеНаТекст

В наличии

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

Категория:

Описание

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

В crm это было реализована таким образом: создавался макет договора в формате doc – docx, и сохранялся на диске. Затем в коде получали этот договор, сохраняли на диске под другим именем и уже в этой копии заменялся текст на необходимый. Например, чтобы вставить в макет номер договора у нас нужно было вставить в этот макет текст вида {Номер}.  Обязанности по замене в crm выполняла функция CRM_ЗаменитьШаблонВВордеНаТекст, в которую передавался объект Word. Код этой функции зашит в ключ защиты, что и вызывало такие проблемы.

 

Предлагаю аналог функции «CRM_ЗаменитьШаблонВВордеНаТекст», выполняемый без ключа защиты

////////////////////////////////////////////////////////////////////////////////
//
// Функция ЗаменитьШаблонВВордеНаТекст
// 
// Описание:
//  Ищет, заданный текст в Word Документе. Если текст найден возвращает Истина. 
// 	Также, если передавать Параметр везде, то и выполняет замену найденного текста
// Параметры (название, тип, дифференцированное значение)
// 	Ворд - comobject Word, 
//  ТекстНайти - тип Строка, текст для поиска в документе
//  ТекстЗаменить - тип Строка, текст, на который будет заменятся ТекстНайти, 
// 	Везде - тип Булево (Если не передается, принимает значение Неопределено),
//  указывает где следует производить замену
// ОСНОВНЫЕ ПАРАМЕТРЫ ПЕРЕДАВАЕМЫЕ В ОБЪЕКТ FIND
//  УчитыватьРегистр - Тип Булево.
//  ИскатьЦелоеСлово - Тип Булево.
// 	ИспользоватьДопЗнаки - Тип Булево.
//  ИскатьКакЗвучит - Тип Булево.
// Возвращаемое значение: Истина ИЛИ Ложь	 	
Функция ЗаменитьШаблонВВордеНаТекст(Ворд, Знач ТекстНайти, ОбластьПоиска = Неопределено, Знач ТекстЗаменить = "", Везде = Неопределено, 
	УчитыватьРегистр = Ложь, ИскатьЦелоеСлово = Истина, ИспользоватьДопЗнаки = Ложь, ИскатьКакЗвучит = Ложь)
	
	//Колво раз, сколько нужно заменять текст в документе	
	Если Везде = Неопределено Тогда
		Колво = 0; //ни разу		
	ИначеЕсли Везде Тогда 
		Колво = 2;//Все 
	Иначе 
		Колво = 1;//1 раз
	КонецЕсли; 
	Если ОбластьПоиска = Неопределено Тогда
		ОбластьПоиска = Ворд.ActiveDocument.Content;		
	КонецЕсли; 
	//Если Текст больше 255 знаков, 
	//то вводим его методом печати, а не вставкой
	Если СтрДлина(ТекстЗаменить) > 255 И Колво > 0 Тогда
		ОбластьПоиска.Select();
		ОбластьПоиска	= Ворд.Selection;
		Find			= ОбластьПоиска.Find;
		Найден			= Ложь;
		Попытка
			Пока Find.Execute(ТекстНайти, УчитыватьРегистр, ИскатьЦелоеСлово, ИспользоватьДопЗнаки, ИскатьКакЗвучит) Цикл
				//Печатаем текст замены, если найден
				Ворд.Selection.TypeText(ТекстЗаменить);
				Найден = Истина;
				Если Колво = 1 Тогда
					Прервать 	
				КонецЕсли; 			
			КонецЦикла;
			Возврат Найден;
		Исключение
			Возврат Ложь;	
		КонецПопытки;
	Иначе
		Если Колво = 1 Тогда
			ОбластьПоиска.Select();
			ОбластьПоиска = Ворд.Selection;
		КонецЕсли; 
		
		Find = ОбластьПоиска.Find;
		//Убираем форматирование, чтобы оно не влияло на поиск
		Find.ClearFormatting();
		
		//Параметры объекта Find
		//1 - ТекстПоиска, тип Строка - по умолчанию "", можно использовать для поиска специальные символы:
		// "^p" - для поиска параграфов, "^t" - сиволы табуляции
		//2- УчитыватьРегистр, тип Булево - по умолчанию Ложь
		//3 - ИскатьЦелоеСлово, тип Булево - по умолчанию Истина
		//4 - ИспользоватьДопЗнаки - использует подстановочные знаки - по умолчанию Ложь
		//5 - ИскатьКакЗвучит - Ищет слова похожие по звучанию - по умолчанию Ложь
		//6 - НаправлениеВперед - Указывет направаление поиска вперед - по умолчанию Ложь
		//9 - ИскатьФорматирование - Указывает необходимо ли искать по форматированию - по умолчанию Ложь
		//10 - ТекстЗаменить - Текст для замены
		//11 - Колво - указыавет, сколько раз произоводить замену: 2 - во всем документе, 1 - только первый найденный, 0 - нигде
		Попытка
			Возврат Find.Execute(ТекстНайти,УчитыватьРегистр,ИскатьЦелоеСлово,ИспользоватьДопЗнаки, ИскатьКакЗвучит,,,,,ТекстЗаменить,Колво)
		Исключение
			Возврат Ложь;
		КонецПопытки;
	КонецЕсли;
КонецФункции

P.S. Пишите свои замечания по улучшению кода


Мои работы:

Общее

Перенос данных XML с Анализом и выборочной загрузкой.

Универсальный редактор таблиц и движения документа (LITE) (Обычная Форма)

Универсальный редактор таблиц и движения документа (PRO) (Обычная Форма)

Универсальный редактор Таблиц и Движений документов (Управляемая форма)

Запуск 1С под другим пользователем без пароля.

 

Управление торговлей 11

Установка цен в УТ11. Произвольный запрос к данным ИБ

 

ЗУП 2.5

Скрываем неиспользуемые виды расчета

Резервы отпусков в Документе «Отражение Зарплаты в Регламентированном Учете» (Оценочные Обязательства)

 

Комплексная И УПП

Форма работы с сотрудниками, как из зуп 2.5

 

has been added to your cart:
Оформление заказа