Корректный вывод суммы и сроков в печатной форме

16.11.22

Задачи пользователя - Адаптация типовых решений

Простой лайфхак для вывода суммы или числа дней В скобках и склоняемых единиц измерения или валюты ЗА скобками.

Хочу поделиться простым лайфхаком (кому-то может показаться слишком простым) о том, как вывести в печатной форме сумму в виде

"(сумма прописью") <склоняемая валюта>" (например, "(двенадцать тысяч триста два) рубля") или количества дней в виде "<ЧислоДней> (ЧислоДнейПрописью) <склоняемая единица измерения> <произвольный текст>" (например, "21 (двадцать один) рабочий день с даты подписания Договора").

Использовал функции:
ПолучитьСклоненияСтрокиПоЧислу();
ЧислоПрописью();
СтрЗаменить()

Порядок выполнения (на примере количества дней):

  1. ТекстДней = СокрП(ЧислоПрописью(Выборка.Работы.СрокиВыполнения, 
                        ОбщегоНазначения.КодОсновногоЯзыка(),  
                        ", , , , , , , , 0"));

    Здесь: ЧислоПрописью(Число, ФорматнаяСтрока, ПараметрыПредметаИсчисления) - Формирует представление числа прописью в соответствии с заданными форматной строкой и параметрами предмета исчисления. Описание можно посмотреть в синтаксис-помощнике.

Выборка.Работы.СрокиВыполнения - результат запроса, в котором указывается число дней, например, "21", тип - "Число";

ОбщегоНазначения.КодОсновногоЯзыка() - ФорматнаяСтрока; ", , , , , , , , 0" - ПараметрыПредметаИсчисления, вообще здесь указываются единицы измерения валюты (рубли, копейки), но у меня другие единицы измерения, поэтому валюта мне не нужна.

Результат: "Двадцать один"

  1. ТекстДнейПечать = ПолучитьСклоненияСтрокиПоЧислу("рабочий день", ВыборкаРаботы.СрокиВыполнения,,
    				"ЧС=Количественное", "ПД=Именительный; ПЧ=ЧислоПрописью")[0];

    Здесь: ПолучитьСклоненияСтрокиПоЧислу(СклоняемаяСтрока, Число, СклоняемыеЕдиницыИзмерения, ОписаниеСтроки, ФорматнаяСтрока, ФорматнаяСтрокаЧисла)

В примере: СклоняемаяСтрока = "рабочий день",

Число - ВыборкаРаботы.СрокиВыполнения - число дней, указанные в документе в табличной части,

СклоняемыеЕдиницыИзмерения - у меня ничего не указано, это необязательный параметр,

ОписаниеСтроки - здесь указывается код локализации (по умолчанию используется установленный в системе) и тип числительного (количественное или порядковое). Количественное используется для целых и дробных значений, порядковое - только для целых.

ФорматнаяСтрока - содержит параметры форматирования: падеж, представление числа. В примере это именительный падеж и число прописью.

Результат = "Двадцать один рабочий день"

  1. ОбластьСтрокаТаблицы.Параметры.СрокиВыполнения = Строка(ВыборкаРаботы.СрокиВыполнения) + 
    " (" + ТекстДней + ")" + СтрЗаменить(ТекстДнейПечать, ТекстДней,"") + 
    " с даты подписания Задания";

    Сразу записываю в параметр макета печатной формы.

Перевожу в строку значение числа дней, "прибавляю" скобки и значение переменной "ТекстДней", затем "прибавляю" закрывающие скобки, добавляю результат замены строки и, если нужно, произвольный текст.

Использование функции СтрЗаменить: 

СтрЗаменить(ТекстДнейПечать, ТекстДней,"")

ищу значение переменной "ТекстДней" в переменной "ТекстДнейПечать", меняю найденное значение на "". Значение в любом случае будет найдено, т.к. в первых двух шагах получается практически одинаковое значение, за исключением самих единиц измерения. Но нам нужно вынести их (единицы) за скобки. Поэтому, то, что нашлось, меняем на "", остается "рабочий день", только уже с необходимым склонением.

 

Таким образом, получили "21 (Двадцать один) рабочий день"

 

Точно также с суммами. В счетах на оплату, чаще всего, указывается сама сумма прописью в скобках, но единицы измерения остаются за ними.

	СуммаПрописью = СокрП(ЧислоПрописью(ИтогСумма, ФорматнаяСтрока, ПараметрыПредметаИсчисления));
	
	ТекстСумма = ПолучитьСклоненияСтрокиПоЧислу("рубль", ИтогСумма,,
				"ЧС=Количественное", "ПД=Именительный; ПЧ=ЧислоПрописью")[0];
	ОбластьИтогоПрописью.Параметры.ИтогСуммаПрописью = "(" + СуммаПрописью + ")" + СтрЗаменить(ТекстСумма,СуммаПрописью,"");
	
	ТабДок.Вывести(ОбластьИтогоПрописью);

Результаты вывода на картинке

 

 

Тестировал на УНФ 1.6.27.270 на платформе 8.3.20.1789 (скриншот с данными из демо-базы УНФ)

В принципе, использовались функции БСП.

печатная форма вывод суммы сроков единицы измерения за скобками корректный

См. также

Табличная часть в доп. реквизитах и формирование таблиц в шаблоне docx для 1С:ДО 3.0

Адаптация типовых решений Платформа 1С v8.3 1С:Документооборот Россия Платные (руб)

Расширение конфигурации для «1С:Документооборот КОРП», редакция 3.0. позволяет: 1.использовать произвольные табличные части в качестве дополнительных реквизитов к документу; 2 использовать произвольные табличные части в шаблонах в формате docx для автоматического заполнения таблиц.

29400 руб.

29.06.2023    4454    9    4    

18

Расширение для 1С:УНФ. Автоматическое снятие резервов в Заказах покупателей

Логистика, склад и ТМЦ Адаптация типовых решений Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Управление нашей фирмой 3.0 Россия Управленческий учет Платные (руб)

Чтобы не допустить путаницы с обещаниями клиентам и для четкого контроля исполнения заказов мы используем резервирование товаров. Мы доработали УНФ, чтобы она автоматически отменяла старые резервы и не мешала эффективно продавать.

7200 руб.

02.08.2023    2958    4    0    

19

Создать на основании - своя кнопка (БСП). Проблема двух подменю Создать на основании

БСП (Библиотека стандартных подсистем) Адаптация типовых решений Платформа 1С v8.3 1С:ERP Управление предприятием 2 Бесплатно (free)

Понадобилось в подменю "Создать на основании" добавить свою команду, которая открывает обработку. В процессе доработок появилась проблема двух подменю "Создать на основании". В статье о том, как решились проблемы.

01.03.2024    1304    dimanich70    6    

13

Доработка отчета "Связанные документы" (структура подчиненности) для вывода объектов из любого расширения

Адаптация типовых решений Платформа 1С v8.3 1С:Управление торговлей 11 Россия Абонемент ($m)

Доработка типового отчета "Связанные документы" позволяет просто и быстро расширять состав объектов для построения структуры подчиненности документов, используя объекты основной конфигурации и любых расширений.

1 стартмани

27.10.2023    1998    13    avmartynov    10    

43

Печать непроведенных документов для УТ, КА, ERP. Настройка печати по пользователям, документам и печатным формам

Пакетная печать Печатные формы Адаптация типовых решений Универсальные функции Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Абонемент ($m)

Расширение для программ 1С:Управление торговлей, 1С:Комплексная автоматизация, 1С:ERP, которое позволяет распечатывать печатные формы для непроведенных документов. Можно настроить, каким пользователям, какие конкретные формы документов разрешено печатать без проведения документа.

2 стартмани

22.08.2023    2078    21    progmaster    7    

3
Оставьте свое сообщение