Документы и Печать · 10 мин
Как в 1С написать число прописью
Как в 1С вывести число прописью: функция ЧислоПрописью, параметры, настройка печатных форм, типовые ошибки и проверка результата.
Задача вывести сумму или число прописью возникает в 1С постоянно: в счетах, накладных, договорах, доверенностях и кассовых документах сумма по закону и деловой практике дублируется словами. В платформе 1С:Предприятие для этого есть встроенный механизм — функция ЧислоПрописью(), которая преобразует число в строку на нужном языке и в нужном падеже.
В типовых конфигурациях большинство печатных форм уже содержат сумму прописью, поэтому часто задача сводится не к программированию, а к пониманию, откуда берётся строка и почему она выглядит не так, как ожидалось. Если же вы дорабатываете макет или пишете собственную обработку, потребуется вызвать функцию с правильными параметрами.
Ниже разобраны оба сценария: работа с готовыми печатными формами без изменения кода и программный вывод числа прописью через встроенный язык, включая формат суммы с валютой, копейками и локализацией.
Где в 1С уже есть сумма прописью без доработок
В типовых решениях (1С:Бухгалтерия, Управление торговлей, ERP, Зарплата и управление персоналом) сумма прописью встроена в стандартные печатные формы: счёт на оплату, ТОРГ-12, счёт-фактура, расходный кассовый ордер, доверенность. Достаточно сформировать документ и нажать «Печать» — строка вида «Сто пятьдесят тысяч рублей 00 копеек» появится автоматически.
Если сумма прописью в печатной форме отсутствует или пустая, чаще всего причина не в функции, а в данных: не заполнено итоговое поле документа, документ не проведён, либо используется внешняя печатная форма, в макете которой эту область удалили. Проверьте сначала сам документ, а уже потом макет.
В некоторых конфигурациях представление суммы прописью настраивается через параметры учёта или регистрацию валют. Если валюта документа заведена корректно (с наименованием и параметрами прописи), строка формируется правильно и для долларов, и для евро.
Функция ЧислоПрописью: синтаксис и параметры
Функция встроенного языка имеет вид: ЧислоПрописью(Число, ФорматнаяСтрока, ПараметрыПредметаИсчисления). Первый параметр — само число (может быть дробным). Второй — форматная строка, где задаётся язык и дополнительные опции. Третий — строка описания предмета исчисления: названия единицы в нужных формах, род и правила для дробной части.
Форматная строка обычно ограничивается указанием локали: "Л=ru_RU" для русского языка. Через неё же можно задать вывод дробной части числом (ДП=Истина) — тогда копейки выводятся цифрами, как принято в денежных суммах. Параметры предмета исчисления перечисляются через запятую: формы для 1, 2 и 5 единиц, род (м/ж/с), затем аналогичный блок для дробной части и разрядность.
Пример для суммы в рублях:
СуммаПрописью = ЧислоПрописью(ИтогоСумма, "Л=ru_RU; ДП=Истина",
"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
Результат для 1234,56: «одна тысяча двести тридцать четыре рубля 56 копеек». Если предмет исчисления не нужен (просто число словами), третий параметр можно опустить — получится «одна тысяча двести тридцать четыре целых пятьдесят шесть сотых».
СуммаПрописью = ЧислоПрописью(ИтогоСумма, "Л=ru_RU; ДП=Истина", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");Как вывести сумму прописью в своей печатной форме
Если вы создаёте внешнюю печатную форму или дорабатываете макет, последовательность стандартная: в модуле менеджера объекта или в модуле внешней обработки получаете итоговую сумму документа, формируете строку через ЧислоПрописью и подставляете её в параметр области макета. В табличном документе добавьте именованный параметр, например «СуммаПрописью», и присвойте ему вычисленное значение.
Обратите внимание на регистр первой буквы. Функция возвращает строку со строчной буквы, а в документах принято писать с заглавной. Используйте конструкцию ВРег(Лев(Строка,1)) + Сред(Строка,2) или готовые функции общих модулей типовой конфигурации — во многих из них есть обёртки вида «СформироватьСуммуПрописью», которые уже решают эту задачу и берут параметры из валюты документа.
- 1Определите итоговую сумму документа (число с двумя знаками после запятой)
- 2Сформируйте строку: ЧислоПрописью(Сумма, "Л=ru_RU; ДП=Истина", параметры валюты)
- 3Сделайте первую букву заглавной
- 4Добавьте параметр «СуммаПрописью» в область макета табличного документа
- 5Выведите печатную форму и проверьте результат на суммах с 1, 2, 5 рублями и с копейками
Использование типовых функций вместо прямого вызова
В конфигурациях на БСП (Библиотека стандартных подсистем) есть модуль РаботаСКурсамиВалют с функцией СформироватьСуммуПрописью(Сумма, Валюта). Она сама подставляет параметры прописи из справочника валют и обрабатывает дробную часть. Если конфигурация типовая, предпочтительнее использовать её — тогда при изменении параметров валюты все формы обновятся централизованно, без правки кода.
Настройка прописи для валют и нестандартных единиц
Для неденежных величин (штуки, килограммы, дни) параметры предмета исчисления формируются по тому же принципу: три формы имени, род, при необходимости — блок дробной части. Например, для количества дней в договоре: "день, дня, дней, м, 0" — ноль в конце означает, что дробная часть не выводится.
Для иностранных валют в типовых конфигурациях параметры прописи хранятся в карточке валюты: «доллар, доллара, долларов, м, цент, цента, центов, м, 2». Если валюта добавлена вручную и эти поля пустые, сумма прописью может выводиться без названия валюты или с ошибкой склонения — заполните их в справочнике.
Для других языков укажите соответствующую локаль в форматной строке (например, Л=uk_UA для украинского). Набор доступных локалей зависит от поставки платформы; если локаль не поддерживается, функция вернёт строку в локали по умолчанию или сообщение об ошибке.
Сравнение способов вывода суммы прописью
Полный контроль над форматом; подходит для внешних обработок и нестандартных единиц. Минус — параметры валюты зашиваются в код.
Берёт параметры из справочника валют, единая логика во всех формах. Доступна только в конфигурациях на БСП.
Ничего программировать не нужно. Подходит, если стандартный макет устраивает; изменить оформление нельзя без доработки.
Типичные ошибки и как их исправить
Самая частая ошибка — неверный порядок или количество элементов в строке параметров предмета исчисления. Если форм меньше, чем ожидает функция, результат будет пустым или с неправильным склонением. Проверяйте шаблон на контрольных числах: 1, 2, 5, 21, 111 — они покрывают все ветви склонения.
Вторая группа ошибок связана с дробной частью: если не указать ДП=Истина, копейки выводятся словами («пятьдесят шесть копеек» вместо «56 копеек»), что не соответствует принятому оформлению денежных документов. Обратная ситуация — округление: перед передачей в функцию сумму стоит явно округлить до двух знаков, иначе хвосты типа 0,30000000004 дадут лишние разряды.
Третья типичная ситуация — строка обрезается в макете. Если ширина колонки табличного документа недостаточна, длинная сумма прописью переносится или визуально «съезжает». Включите в свойствах ячейки автоперенос и проверьте высоту строки на самых длинных значениях (суммы с девятьюстами девяноста).
Как проверить результат перед сдачей формы
Проверку удобно делать в толстом клиенте через «Файл — Новый — Текстовый документ» с выполнением кода, либо через консоль кода в режиме предприятия, если она есть в вашем арсенале. Подставьте тестовые суммы и сравните вывод с ожидаемым вручную.
Минимальный набор контрольных значений: 1,00; 2,00; 5,00; 11,00; 21,00; 101,01; 1000,10; 1 234 567,89. Эти числа покрывают все формы склонения рубля и копейки, а также работу с разрядами тысяч и миллионов. Если все восемь вариантов выводятся корректно, функция настроена правильно.
Как проверить результат
«двадцать один рубль 01 копейка»
«двадцать один рублей» или копейки словами
«два рубля 02 копейки»
«два рублей» — неверная форма множественного числа
«сто одиннадцать рублей 11 копеек»
Склонение как для единицы — ошибка обработки 11–19
Строка начинается с заглавной буквы
Строка со строчной буквы в печатной форме
Частые вопросы
Можно ли вывести число прописью без программирования?
Да, если речь о типовых печатных формах — сумма прописью там уже предусмотрена. Для разового вывода числа словами вне документа штатного инструмента в пользовательском режиме нет: понадобится либо выполнить код, либо воспользоваться внешней обработкой.
Почему ЧислоПрописью возвращает пустую строку?
Чаще всего причина в некорректной строке параметров предмета исчисления: неверное число элементов, лишние или пропущенные запятые. Также проверьте, что первый параметр действительно число, а не строка или Неопределено.
Как вывести сумму прописью на английском языке?
Укажите в форматной строке английскую локаль (например, "Л=en_US") и передайте параметры предмета исчисления на английском. Учтите, что правила формирования строки и склонения в других языках отличаются, поэтому результат обязательно проверяйте на контрольных значениях.
Как убрать копейки, если сумма всегда целая?
Сократите параметры предмета исчисления до блока целой части и укажите разрядность дробной части равной нулю: "рубль, рубля, рублей, м, 0". Дополнительно округлите сумму до целого перед вызовом функции.
Работает ли ЧислоПрописью в тонком клиенте и на сервере?
Да, функция доступна на сервере, в толстом и тонком клиенте. Обычно формирование строки выполняют на сервере при построении печатной формы, чтобы не передавать лишние данные на клиента.
Что делать, если в типовой форме сумма прописью выводится с ошибкой склонения?
Проверьте карточку валюты в справочнике валют: поля параметров прописи должны быть заполнены корректно. Если ошибка в самом коде конфигурации, обновитесь до актуального релиза — подобные ошибки в типовых решениях исправляются поставщиком.
Что важно запомнить
Число прописью в 1С формируется функцией ЧислоПрописью с локалью и параметрами предмета исчисления; в типовых конфигурациях лучше использовать обёртку СформироватьСуммуПрописью и параметры из справочника валют. Проверяйте результат на контрольных числах 1, 2, 5, 11, 21 и не забывайте про заглавную букву и округление копеек.