Гуру-тест: Форматирование в макете

1. fixin 4253 21.09.12 16:12 Сейчас в теме
Есть некий макет, например:

Сумма: $сумма$
Курс: $курс$
Валюта: $валюта$

Есть некая функция форматирования, которая обрабатывает макет по структуре Параметров:
Функция ЗаменитьПараметры(ТекМакет, Параметры) Экспорт
	Для Каждого ПараметрыКЗ Из Параметры Цикл
		ЗначениеПоля = ПараметрыКЗ.Значение;
		ТекМакет = СтрЗаменить(ТекМакет, "$" + ПараметрыКЗ.Ключ + "$", ЗначениеПоля);
	КонецЦикла;
	
	Возврат ТекМакет;
КонецФункции
Показать


Вопрос - как максимально просто и функционально добавить поддержку форматирования числе с различным количеством знаком после запятой в эту функцию форматирования?

Например, сумму нужно форматировать до 2 знаков после запятой, а курс - до четырех.

Проверку на имя поля не предлагать - неуниверсальное решение.
+
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mailrum2004 1 21.09.12 16:42 Сейчас в теме
В макет можно что-нибудь добавлять?
например:

Сумма: $сумма$$ЧДЦ=2$
Курс: $курс$$ЧДЦ=4$
Валюта: $валюта$
+
4. fixin 4253 21.09.12 17:45 Сейчас в теме
(2) в макет и код можно добавлять все что угодно.
(2) слишком сложно, попробуйте ка написать код разбора - сами увидите, есть решение проще.
(3) э нет, так не годится, форматом нужно управлять из макета.

Конкретизирую - нужно дописать движок подстановки параметров максимально просто так, чтобы форматом чисел можно было управлять из макета. ;-) Для буквоедов уточню - всего 4 формата - 0,1,2,3 и 4 знака после запятой.

Нужно показать код разбора и способ изменения макета.
У меня код разбора офигительно простой. ;-)
+
5. CratosX 112 26.04.17 18:44 Сейчас в теме
(4) как в итоге сделал?
+
6. fixin 4253 26.04.17 22:35 Сейчас в теме
(5) точно не помню.
Вроде так:


Функция ЗаменитьПараметры(ТекМакет, Параметры) Экспорт
    Для Каждого ПараметрыКЗ Из Параметры Цикл
        ЗначениеПоля = ПараметрыКЗ.Значение;
        ТекМакет = СтрЗаменить(ТекМакет, "$" + ПараметрыКЗ.Ключ + "#5.2$", Формат(ЗначениеПоля, "ЧДЦ=2"));
        ТекМакет = СтрЗаменить(ТекМакет, "$" + ПараметрыКЗ.Ключ + "#5.3$", Формат(ЗначениеПоля, "ЧДЦ=3"));
        ТекМакет = СтрЗаменить(ТекМакет, "$" + ПараметрыКЗ.Ключ + "$", ЗначениеПоля);
    КонецЦикла;
    
    Возврат ТекМакет;
КонецФункции

Показать


Т.е. использовал в замене все форматы, которые использовал в оригинальном макете.
+
3. fishca 1254 21.09.12 17:11 Сейчас в теме
Параметры - это структура?

Параметры = Новый Структура("Курс, Сумма");
Параметры.Вставить("Курс", Формат(ЗначениеКурса, "ЧЦ=15; ЧДЦ=4"));
Параметры.Вставить("Сумма", Формат(ЗначениеСуммы, "ЧЦ=15; ЧДЦ=2"));

Больше что-то на ум ничего универсального не приходит :(
+
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот