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

16.11.22

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

 

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

 

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

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

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

 

 

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

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

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

См. также

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

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

7200 руб.

02.08.2023    4169    14    1    

32

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

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

29400 руб.

29.06.2023    5994    14    5    

24

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

Расширение позволяет вывести в табличном документе факсимиле печати и подписей и/или вывести произвольную картинку из прикреплённых файлов организации для 1С УТ 11.5, КА 2.5, ERP 2.5, УНФ 3, Розница 3. Вывод факсимиле возможен в табличные документы УПД, УКД, Счёт-фактура, ТОРГ-12 и другие. Возможно настроить вывод для любых типовых макетов (Акт сверки, М-15, ТТН), для этого потребуется отредактировать макет и разместить на нём картинки с установленными именами. Редактирование осуществляется через типовой механизм в пользовательском интерфейсе.

3000 руб.

07.02.2023    6706    73    10    

30

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

Каждый из нас сталкивается с ситуацией, когда какой-нибудь менеджер показывает свой Excel и рассказывает, как он что-то из 1С копирует в него, снабжает пояснениями, выделяет цветом и т.д. и т.п. Заканчивается все просьбой сделать вот чтобы также было в 1С. И оказывается такой человек (почти с гарантией) либо лучшим продажником, либо каким-то важным, за все отвечающим, - на ком все держится.

2 стартмани

22.04.2024    5267    dimanich70    15    

22

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

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

01.03.2024    6825    dimanich70    9    

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