Каталог решений - Функция СтрШаблон с именованными маркерами

Функция СтрШаблон с именованными маркерами

Функция СтрШаблон с именованными маркерами

В наличии

Функция позволяет задавать именованные маркеры формата [Имя], в отличии от типовых нумерованных формата %n

Категория:

Описание

Преимущества по сравнению с типовой функцией СтрШаблон:
— Код вызова функции проще для восприятия за счет именованных маркеров и параметров.
— Устойчива к перестановкам параметров, к вставкам между параметрами, т.к. сопоставление выполняется по именам, а не по порядку.

Пример использования:

Текст = СтрШаблон_("Заказано товаров на сумму [Сумма] в количестве [Колво]",
  "Сумма", 2500, "Колво", 100);

Функция:

Функция СтрШаблон_(Шаблон, 
  п11="", п12="", п21="", п22="", п31="", п32="", п41="", п42="", п51="", п52="",
  п61="", п62="", п71="", п72="", п81="", п82="", п91="", п92="", п101="", п102="",
  п111="", п112="", п121="", п122="", п131="", п132="", п141="", п142="", п151="", п152="") экспорт
	     
	Результат = Шаблон;
	
	Для сч = 1 по 15 Цикл
		ИмяПараметра = Вычислить("п"+сч+"1");
		Маркер = "["+ИмяПараметра+"]";
		
		Если ИмяПараметра = "" Тогда
			Прервать; 
		ИначеЕсли СтрНайти(Результат, Маркер) = 0 Тогда
			ВызватьИсключение СтрШаблон("Не найден маркер %1 в шаблоне ""%2""", Маркер, Шаблон);
		Иначе	
			Результат = СтрЗаменить(Результат, Маркер, Вычислить("п"+сч+"2"));
		КонецЕсли;
		
	КонецЦикла;
	
	// Лишние маркеры удаляем
	Пока Истина Цикл
		Начало = СтрНайти(Результат, "[");
		Конец = СтрНайти(Результат, "]");
		
		Если Начало=0 ИЛИ Конец=0 ИЛИ Начало>Конец Тогда
			Прервать;
		КонецЕсли;
		
		Результат = Лев(Результат,Начало-1) + Сред(Результат,Конец+1);
	КонецЦикла;
	
	Возврат Результат;
	
КонецФункции

 

 

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