Добавить валюту заказа в шаблон УНФ

Задача — добавить возможность использования поля «Валюта заказа» в печатных формах, реализованных через штатный инструмент «Шаблоны КП и договоров» в УНФ.

Поле «Валюта заказа» в списке доступных полей отсутствует:

Значит, нужно его добавить.

Сначала ищем, где формируется список полей. Похоже, что в этой секции модуля менеджера заказа покупателя:

Добавляем эту процедуру в расширение Доработки:

&После(«ДобавитьПараметрыЗаказаПокупателяВШаблон»)
Процедура дор_ДобавитьПараметрыЗаказаПокупателяВШаблон(ПараметрыШаблона)
   
МетаданныеЗаказа = Метаданные.Документы.ЗаказПокупателя;
   
ШаблоныПечатиОфисныхДокументов.ДобавитьПараметрШаблона(ПараметрыШаблона, «ЗаказПокупателя.ВалютаДокумента», МетаданныеЗаказа.Реквизиты.ВалютаДокумента.Синоним);
КонецПроцедуры

Список параметров заполняется в процедуре ДобавитьПараметрыЗаказаПокупателяВШаблон:

Теперь поле Валюта — доступно в заказе.

Значения полей заполняются в процедуре ЗаполнитьЗначенияПараметровЗаказа:

Добавляем эту процедуру в расширение Доработки:

&После(«ЗаполнитьЗначенияПараметровЗаказа»)
Процедура дор_ЗаполнитьЗначенияПараметровЗаказа(ОбъектПечати, ОписаниеПараметров, ДополнительныеПараметры)
   
//Осипов 2021-04-12
   
Для Каждого Эл ИЗ ОписаниеПараметров Цикл
        Если
Эл.Ключ = «ЗаказПокупателя.ВалютаДокумента» Тогда
            Если
ЗначениеЗаполнено(Эл.Формат) Тогда
               
Эл.Значение = СокрЛП(ОбъектПечати.ВалютаДокумента[Эл.Формат]);
            Иначе
               
Эл.Значение = СокрЛП(ОбъектПечати.ВалютаДокумента.НаименованиеПолное);
            КонецЕсли;
            Прервать;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

К сожалению, мы не можем поменять код запроса, но это может и к лучшему, т.к. мы можем вычислять значение на языке 1С так, как захотим.

Посмотрел в отладчике, как выглядит массив структур ОписаниеПараметров, всё понятно:

Добавляем поле Валюта в шаблон (в левом верхнем углу):

Проверяем печатную форму, валюта выводится:

Однако пользователь захотел еще и выводить валюту в разных форматах, для этого задействую колонку Формат:

В поле Формат можно указывать следующие значения:

  • НаименованиеПолное — наименование (длинное)
  • Код — цифровой код 643, 840, …
  • Наименование — символьный код USD, BYN, RUB
  • НаименованиеСокращенное — сокращенное наименование
  • СимвольноеПредставление — $, ..

Если формат не заполнен, используется НаименованиеПолное.

Я хотел предложить пользователю универсальный формат: BYN=брб;RUB=руб;USD=$. Тогда бы он мог вообще управлять какой текст выводить для какой валюты, но он посчитал лишним.

Время факт: 1,5 час.

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *