Добавить валюту заказа в шаблон УНФ
Задача — добавить возможность использования поля «Валюта заказа» в печатных формах, реализованных через штатный инструмент «Шаблоны КП и договоров» в УНФ.
Поле «Валюта заказа» в списке доступных полей отсутствует:
Значит, нужно его добавить.
Сначала ищем, где формируется список полей. Похоже, что в этой секции модуля менеджера заказа покупателя:
Добавляем эту процедуру в расширение Доработки:
&После(«ДобавитьПараметрыЗаказаПокупателяВШаблон»)
Процедура дор_ДобавитьПараметрыЗаказаПокупателяВШаблон(ПараметрыШаблона)
МетаданныеЗаказа = Метаданные.Документы.ЗаказПокупателя;
ШаблоныПечатиОфисныхДокументов.ДобавитьПараметрШаблона(ПараметрыШаблона, «ЗаказПокупателя.ВалютаДокумента», МетаданныеЗаказа.Реквизиты.ВалютаДокумента.Синоним);
КонецПроцедуры
Список параметров заполняется в процедуре ДобавитьПараметрыЗаказаПокупателяВШаблон:
Теперь поле Валюта — доступно в заказе.
Значения полей заполняются в процедуре ЗаполнитьЗначенияПараметровЗаказа:
Добавляем эту процедуру в расширение Доработки:
&После(«ЗаполнитьЗначенияПараметровЗаказа»)
Процедура дор_ЗаполнитьЗначенияПараметровЗаказа(ОбъектПечати, ОписаниеПараметров, ДополнительныеПараметры)
//Осипов 2021-04-12
Для Каждого Эл ИЗ ОписаниеПараметров Цикл
Если Эл.Ключ = «ЗаказПокупателя.ВалютаДокумента» Тогда
Если ЗначениеЗаполнено(Эл.Формат) Тогда
Эл.Значение = СокрЛП(ОбъектПечати.ВалютаДокумента[Эл.Формат]);
Иначе
Эл.Значение = СокрЛП(ОбъектПечати.ВалютаДокумента.НаименованиеПолное);
КонецЕсли;
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
К сожалению, мы не можем поменять код запроса, но это может и к лучшему, т.к. мы можем вычислять значение на языке 1С так, как захотим.
Посмотрел в отладчике, как выглядит массив структур ОписаниеПараметров, всё понятно:
Добавляем поле Валюта в шаблон (в левом верхнем углу):
Проверяем печатную форму, валюта выводится:
Однако пользователь захотел еще и выводить валюту в разных форматах, для этого задействую колонку Формат:
В поле Формат можно указывать следующие значения:
- НаименованиеПолное — наименование (длинное)
- Код — цифровой код 643, 840, …
- Наименование — символьный код USD, BYN, RUB
- НаименованиеСокращенное — сокращенное наименование
- СимвольноеПредставление — $, ..
Если формат не заполнен, используется НаименованиеПолное.
Я хотел предложить пользователю универсальный формат: BYN=брб;RUB=руб;USD=$. Тогда бы он мог вообще управлять какой текст выводить для какой валюты, но он посчитал лишним.
Время факт: 1,5 час.
Свежие комментарии