К статье
Практический материал

Документы и Печать · 10 мин

Как в 1С написать число прописью

Как в 1С вывести число прописью: функция ЧислоПрописью, параметры, настройка печатных форм, типовые ошибки и проверка результата.

Задача вывести сумму или число прописью возникает в 1С постоянно: в счетах, накладных, договорах, доверенностях и кассовых документах сумма по закону и деловой практике дублируется словами. В платформе 1С:Предприятие для этого есть встроенный механизм — функция ЧислоПрописью(), которая преобразует число в строку на нужном языке и в нужном падеже.

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

Ниже разобраны оба сценария: работа с готовыми печатными формами без изменения кода и программный вывод числа прописью через встроенный язык, включая формат суммы с валютой, копейками и локализацией.

Где в 1С уже есть сумма прописью без доработок

В типовых решениях (1С:Бухгалтерия, Управление торговлей, ERP, Зарплата и управление персоналом) сумма прописью встроена в стандартные печатные формы: счёт на оплату, ТОРГ-12, счёт-фактура, расходный кассовый ордер, доверенность. Достаточно сформировать документ и нажать «Печать» — строка вида «Сто пятьдесят тысяч рублей 00 копеек» появится автоматически.

Если сумма прописью в печатной форме отсутствует или пустая, чаще всего причина не в функции, а в данных: не заполнено итоговое поле документа, документ не проведён, либо используется внешняя печатная форма, в макете которой эту область удалили. Проверьте сначала сам документ, а уже потом макет.

В некоторых конфигурациях представление суммы прописью настраивается через параметры учёта или регистрацию валют. Если валюта документа заведена корректно (с наименованием и параметрами прописи), строка формируется правильно и для долларов, и для евро.

Функция ЧислоПрописью: синтаксис и параметры

Функция встроенного языка имеет вид: ЧислоПрописью(Число, ФорматнаяСтрока, ПараметрыПредметаИсчисления). Первый параметр — само число (может быть дробным). Второй — форматная строка, где задаётся язык и дополнительные опции. Третий — строка описания предмета исчисления: названия единицы в нужных формах, род и правила для дробной части.

Форматная строка обычно ограничивается указанием локали: "Л=ru_RU" для русского языка. Через неё же можно задать вывод дробной части числом (ДП=Истина) — тогда копейки выводятся цифрами, как принято в денежных суммах. Параметры предмета исчисления перечисляются через запятую: формы для 1, 2 и 5 единиц, род (м/ж/с), затем аналогичный блок для дробной части и разрядность.

Пример для суммы в рублях:

СуммаПрописью = ЧислоПрописью(ИтогоСумма, "Л=ru_RU; ДП=Истина",

"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");

Результат для 1234,56: «одна тысяча двести тридцать четыре рубля 56 копеек». Если предмет исчисления не нужен (просто число словами), третий параметр можно опустить — получится «одна тысяча двести тридцать четыре целых пятьдесят шесть сотых».

bsl
СуммаПрописью = ЧислоПрописью(ИтогоСумма, "Л=ru_RU; ДП=Истина", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");

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

Если вы создаёте внешнюю печатную форму или дорабатываете макет, последовательность стандартная: в модуле менеджера объекта или в модуле внешней обработки получаете итоговую сумму документа, формируете строку через ЧислоПрописью и подставляете её в параметр области макета. В табличном документе добавьте именованный параметр, например «СуммаПрописью», и присвойте ему вычисленное значение.

Обратите внимание на регистр первой буквы. Функция возвращает строку со строчной буквы, а в документах принято писать с заглавной. Используйте конструкцию ВРег(Лев(Строка,1)) + Сред(Строка,2) или готовые функции общих модулей типовой конфигурации — во многих из них есть обёртки вида «СформироватьСуммуПрописью», которые уже решают эту задачу и берут параметры из валюты документа.

Порядок действий для своей печатной формы
  1. 1
    Определите итоговую сумму документа (число с двумя знаками после запятой)
  2. 2
    Сформируйте строку: ЧислоПрописью(Сумма, "Л=ru_RU; ДП=Истина", параметры валюты)
  3. 3
    Сделайте первую букву заглавной
  4. 4
    Добавьте параметр «СуммаПрописью» в область макета табличного документа
  5. 5
    Выведите печатную форму и проверьте результат на суммах с 1, 2, 5 рублями и с копейками

Использование типовых функций вместо прямого вызова

В конфигурациях на БСП (Библиотека стандартных подсистем) есть модуль РаботаСКурсамиВалют с функцией СформироватьСуммуПрописью(Сумма, Валюта). Она сама подставляет параметры прописи из справочника валют и обрабатывает дробную часть. Если конфигурация типовая, предпочтительнее использовать её — тогда при изменении параметров валюты все формы обновятся централизованно, без правки кода.

Настройка прописи для валют и нестандартных единиц

Для неденежных величин (штуки, килограммы, дни) параметры предмета исчисления формируются по тому же принципу: три формы имени, род, при необходимости — блок дробной части. Например, для количества дней в договоре: "день, дня, дней, м, 0" — ноль в конце означает, что дробная часть не выводится.

Для иностранных валют в типовых конфигурациях параметры прописи хранятся в карточке валюты: «доллар, доллара, долларов, м, цент, цента, центов, м, 2». Если валюта добавлена вручную и эти поля пустые, сумма прописью может выводиться без названия валюты или с ошибкой склонения — заполните их в справочнике.

Для других языков укажите соответствующую локаль в форматной строке (например, Л=uk_UA для украинского). Набор доступных локалей зависит от поставки платформы; если локаль не поддерживается, функция вернёт строку в локали по умолчанию или сообщение об ошибке.

Сравнение способов вывода суммы прописью

ЧислоПрописью напрямую

Полный контроль над форматом; подходит для внешних обработок и нестандартных единиц. Минус — параметры валюты зашиваются в код.

Типовая функция СформироватьСуммуПрописью

Берёт параметры из справочника валют, единая логика во всех формах. Доступна только в конфигурациях на БСП.

Готовые печатные формы

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

Типичные ошибки и как их исправить

Самая частая ошибка — неверный порядок или количество элементов в строке параметров предмета исчисления. Если форм меньше, чем ожидает функция, результат будет пустым или с неправильным склонением. Проверяйте шаблон на контрольных числах: 1, 2, 5, 21, 111 — они покрывают все ветви склонения.

Вторая группа ошибок связана с дробной частью: если не указать ДП=Истина, копейки выводятся словами («пятьдесят шесть копеек» вместо «56 копеек»), что не соответствует принятому оформлению денежных документов. Обратная ситуация — округление: перед передачей в функцию сумму стоит явно округлить до двух знаков, иначе хвосты типа 0,30000000004 дадут лишние разряды.

Третья типичная ситуация — строка обрезается в макете. Если ширина колонки табличного документа недостаточна, длинная сумма прописью переносится или визуально «съезжает». Включите в свойствах ячейки автоперенос и проверьте высоту строки на самых длинных значениях (суммы с девятьюстами девяноста).

Типичные ошибки
01
Неполная строка параметров предмета исчисления — склонение ломается или строка пустая
02
Забытый параметр ДП=Истина — копейки выводятся словами вместо цифр
03
Передача неокруглённой суммы — лишние разряды в дробной части
04
Отсутствие заглавной буквы — строка не соответствует оформлению документов
05
Проверка только на одном значении — ошибки склонения всплывают на числах 1, 2, 11–19

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

Проверку удобно делать в толстом клиенте через «Файл — Новый — Текстовый документ» с выполнением кода, либо через консоль кода в режиме предприятия, если она есть в вашем арсенале. Подставьте тестовые суммы и сравните вывод с ожидаемым вручную.

Минимальный набор контрольных значений: 1,00; 2,00; 5,00; 11,00; 21,00; 101,01; 1000,10; 1 234 567,89. Эти числа покрывают все формы склонения рубля и копейки, а также работу с разрядами тысяч и миллионов. Если все восемь вариантов выводятся корректно, функция настроена правильно.

Контрольные точки

Как проверить результат

Сумма 21,01
Норма

«двадцать один рубль 01 копейка»

Тревожный признак

«двадцать один рублей» или копейки словами

Сумма 2,02
Норма

«два рубля 02 копейки»

Тревожный признак

«два рублей» — неверная форма множественного числа

Сумма 111,11
Норма

«сто одиннадцать рублей 11 копеек»

Тревожный признак

Склонение как для единицы — ошибка обработки 11–19

Первая буква
Норма

Строка начинается с заглавной буквы

Тревожный признак

Строка со строчной буквы в печатной форме

Частые вопросы

Можно ли вывести число прописью без программирования?

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

Почему ЧислоПрописью возвращает пустую строку?

Чаще всего причина в некорректной строке параметров предмета исчисления: неверное число элементов, лишние или пропущенные запятые. Также проверьте, что первый параметр действительно число, а не строка или Неопределено.

Как вывести сумму прописью на английском языке?

Укажите в форматной строке английскую локаль (например, "Л=en_US") и передайте параметры предмета исчисления на английском. Учтите, что правила формирования строки и склонения в других языках отличаются, поэтому результат обязательно проверяйте на контрольных значениях.

Как убрать копейки, если сумма всегда целая?

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

Работает ли ЧислоПрописью в тонком клиенте и на сервере?

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

Что делать, если в типовой форме сумма прописью выводится с ошибкой склонения?

Проверьте карточку валюты в справочнике валют: поля параметров прописи должны быть заполнены корректно. Если ошибка в самом коде конфигурации, обновитесь до актуального релиза — подобные ошибки в типовых решениях исправляются поставщиком.

Итог

Что важно запомнить

Число прописью в 1С формируется функцией ЧислоПрописью с локалью и параметрами предмета исчисления; в типовых конфигурациях лучше использовать обёртку СформироватьСуммуПрописью и параметры из справочника валют. Проверяйте результат на контрольных числах 1, 2, 5, 11, 21 и не забывайте про заглавную букву и округление копеек.