Преимущества по сравнению с типовой функцией СтрШаблон:
- Код вызова функции проще для восприятия за счет именованных маркеров и параметров.
- Устойчива к перестановкам параметров, к вставкам между параметрами, т.к. сопоставление выполняется по именам, а не по порядку.
Пример использования:
Текст = СтрШаблон_("Заказано товаров на сумму [Сумма] в количестве [Колво]",
"Сумма", 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);
КонецЦикла;
Возврат Результат;
КонецФункции