Вывод числовых значений прописью — стандартная задача при оформлении документов в 1С:Предприятие. Без правильного текстового представления сумм невозможно корректно заполнить платежки, счета-фактуры или договоры. В этой статье разберем все доступные способы: от встроенных механизмов платформы до написания собственного алгоритма на встроенном языке.
Особенность задачи в том, что требования к формату прописи могут различаться: где-то нужны копейки/рубли в родительном падеже, где-то — в именительном, иногда требуется указывать валюту полностью ("российских рублей 00 копеек"), а иногда — только знак"₽". Мы рассмотрим универсальные решения, которые покрывают 90% бизнес-задач, а также нюансы для специфических случаев.
1. Стандартная функция ЧислоПрописью — быстрое решение
Самый простой способ — использовать встроенную функцию ЧислоПрописью, доступную в 1С 8.3 и 1С 8.2. Она автоматически преобразует число в текстовый формат с учетом правил русского языка. Основные параметры функции:
- 📌 Число — само числовое значение (например,
1254.32) - 📌 Формат — строка с шаблоном вывода (например,
"Рубль,Рубля,Рублей,м,Копейка,Копейки,Копеек,ж,2") - 📌 Разделитель — символ между рублями и копейками (по умолчанию пробел)
Пример использования в коде:
СуммаПрописью = ЧислоПрописью(1254.32,"Рубль,Рубля,Рублей,м,Копейка,Копейки,Копеек,ж,2");
// Результат:"Одна тысяча двести пятьдесят четыре рубля 32 копейки"
Функция поддерживает разные валюты — достаточно поменять слова в формате. Например, для долларов: "Доллар,Доллара,Долларов,м,Cent,Цента,Центов,м,2". Главный минус — ограниченная гибкость: нельзя изменить регистр вывода или добавить произвольный текст.
Для быстрой проверки работы функции используйте отладчик 1С: введите выражение ЧислоПрописью(123.45,"...") в окне вычисления (Shift+F9) и сразу увидите результат.
2. Форматная строка в печатных формах — без программирования
Если вам нужно вывести сумму прописью в печатной форме (например, в счете или акте), можно обойтись без кода. В конструкторе печатных форм 1С предусмотрена специальная форматная строка для числовых полей:
- Откройте макет печатной формы в режиме редактирования
- Выделите поле с суммой, которую нужно вывести прописью
- В панели свойств найдите параметр
Формат - Укажите значение:
ЧП=Рубль,Рубля,Рублей,м,Копейка,Копейки,Копеек,ж,2
После этого при печати документа сумма будет автоматически преобразовываться в текст. Этот метод работает во всех типовых конфигурациях (1С:Бухгалтерия, 1С:УТ, 1С:ЗУП) и не требуетфикации кода.
Как добавить валюту в произвольном формате?
Если стандартные"рубли/доллары" не подходят, можно создать собственную форматную строку. Например, для тенге: ЧП=Тенге,Тенге,Тенге,м,Тиын,Тиына,Тиынов,м,2. Главное — соблюдать порядок склонений: единственное число, множественное для 2-4, множественное для 5+, род (м/ж/с), разрядность копеек.
3. Кастомная функция для гибкого форматирования
Когда стандартных возможностей недостаточно (нужен особый регистр, дополнительный текст или нестандартная валюта), пишут собственную функцию. Вот универсальный пример для 1С 8.3, который покрывает большинство случаев:
Функция СуммаПрописью(Число, ВалютаРодительный ="рублей", ВалютаИменительный ="рубль",
КопейкиРодительный ="копеек", КопейкиИменительный ="копейка", Разделитель ="") Экспорт
Если Число = 0 Тогда
Возврат"Ноль" + ВалютаРодительный;
КонецЕсли;
// Разбиваем на рубли и копейки
Рубли = Цел(Число);
Копейки = Окр((Число - Рубли) * 100, 0);
// Преобразуем рубли
ТекстРублей = ЧислоПрописью(Рубли, ВалютаИменительный +"," + ВалютаИменительный +"а," + ВалютаРодительный +",м,,,,,0");
// Преобразуем копейки (если есть)
Если Копейки > 0 Тогда
ТекстКопеек = ЧислоПрописью(Копейки, КопейкиИменительный +"," + КопейкиИменительный +"и," + КопейкиРодительный +",ж,,,,,0");
Возврат ТекстРублей + Разделитель + ТекстКопеек;
Иначе
Возврат ТекстРублей;
КонецЕсли;
КонецФункции
Преимущества этого подхода:
- 🔹 Гибкая настройка валют (можно передавать любые названия)
- 🔹 Контроль над разделителем между рублями и копейками
- 🔹 Возможность доработки под специфические требования (например, вывод в ЗАГЛАВНЫХ БУКВАХ)
4. Обработки для массового вывода — готовые решения
Для сложных задач (например, вывод сумм прописью в отчетах или групповая обработка документов) удобнее использовать готовые обработки. Популярные варианты:
| Название обработки | Источник | Особенности |
|---|---|---|
| Универсальный вывод суммы прописью | Инфостарт | Поддерживает 15 валют, настройка регистра, вывод в разные падежи |
| Печатные формы с прописью | 1С:ИТС | Интеграция с типовыми конфигурациями, автоматическое обновление |
| СуммаПрописью для УТ 11 | GitHub | Оптимизирована для 1С:Управление торговлей, открытый код |
| Мультивалютный вывод | 1С-Линк | Поддержка криптовалют и экзотических валют (йены, юани) |
Чтобы установить обработку:
- Скачайте файл с расширением
.epfили.cf - В 1С перейдите в
Файл → Открытьи выберите скачанный файл - Следуйте инструкциям мастера установки
- При необходимости настройте параметры в форме обработки
⚠️ Внимание: Перед установкой обработок из сторонних источников проверьте их на вирусы и совместимость с вашей версией 1С. Некоторые решения могут конфликтовать с типовыми конфигурациями.
5. Особенности для разных конфигураций 1С
Алгоритмы вывода суммы прописью могут отличаться в зависимости от типовой конфигурации. Рассмотрим ключевые нюансы:
1С:Бухгалтерия 3.0:
- 📊 В печатных формах первичных документов (счета, акты) пропись суммы уже настроена по умолчанию
- 📊 Для платежных поручений используется формат с указанием валюты в родительном падеже
- 📊 В отчетах (например,"Анализ счета") пропись нужно настраивать вручную через конструктор
1С:Управление торговлей 11:
- 🛒 В счетах на оплату и реализационных документах пропись суммы выводится автоматически
- 🛒 Для ценников и этикеток требуется доработка — стандартные макеты не поддерживают пропись
- 🛒 В отчете"Ведомость по товарам" можно добавить колонку с прописью через настройку вариантов отчета
1С:Зарплата и управление персоналом:
- 👥 В расчетных листках и платежных ведомостях пропись суммы настраивается через параметры выплаты
- 👥 Для трудовых договоров нужно редактировать макет документа"Прием на работу"
- 👥 В отчетах по ФОТ (фонд оплаты труда) пропись доступна только при экспорте в Word/Excel
1. Убедитесь, что число округлено до 2 знаков после запятой|2. Проверьте регистр первой буквы (должен быть заглавным)|3. Сверьте склонение валют (рубль/рубля/рублей)|4. Удостоверьтесь, что копейки выводятся только если ненулевые|5. Проверите разделитель между рублями и копейками (обычно пробел)-->
6. Типичные ошибки и как их избежать
При работе с выводом сумм прописью разработчики и пользователи часто сталкиваются с одними и теми же проблемами. Вот самые распространенные:
Ошибка 1: Неправильное склонение валют
Причина: В форматной строке перепутан порядок склонений. Например, указано "Рубль,Рублей,Рубля" вместо правильного "Рубль,Рубля,Рублей".
Решение: Всегда проверяйте порядок: именительный для 1, родительный для 2-4, родительный для 5+.
Ошибка 2: Отсутствует первая заглавная буква
Причина: Функция ЧислоПрописью возвращает текст в нижнем регистре.
Решение: Используйте функцию НачСтр:
СуммаПрописью = НачСтр(ЧислоПрописью(123.45,"..."));
Ошибка 3: Копейки выводятся как"00 копеек" даже когда их нет
Причина: В форматной строке не учтен параметр разрядности или неверно обработано условие для нулевых копеек.
Решение: Доработайте функцию, чтобы копейки выводились только при ненулевом значении (см. пример в разделе 3).
Ошибка 4: Округление суммы до целых рублей
Причина: При передаче числа в функцию оно было предварительно округлено (например, через Окр).
Решение: Всегда передавайте исходное значение с копейками, округление сделает сама функция ЧислоПрописью.
⚠️ Внимание: В 1С:Бухгалтерия 3.0 при выводе суммы прописью в платежных поручениях может срабатывать автоматическое округление до копеек. Если вам нужно сохранить точность до 3-4 знаков (например, для валютных операций), используйте кастомную функцию с явным указанием разрядности.
7. Продвинутые сценарии использования
Иногда требуется не просто вывести сумму прописью, а интегрировать этот функционал в сложные процессы. Рассмотрим нетривиальные случаи:
Вывод в разных падежах
Если нужно указать сумму в дательном падеже (например,"по счету на сумму одной тысяче двумстам пятидесяти четырем рублям"), стандартная функция не подойдет. Придется писать собственную логику склонения или использовать специализированные обработки.
Мультивалютные документы
В документах с несколькими валютами (например, в контрактах с привязкой к доллару и рублю) можно динамически подставлять название валюты:
Если ВалютаДокумента = Валюты.USD Тогда
ФорматВалюты ="Доллар,Доллара,Долларов,м,Cent,Цента,Центов,м,2";
ИначеЕсли ВалютаДокумента = Валюты.EUR Тогда
ФорматВалюты ="Евро,Евро,Евро,с,Cent,Цента,Центов,м,2";
КонецЕсли;
Вывод в верхнем регистре
Для юридических документов иногда требуется сумма прописью ЗАГЛАВНЫМИ БУКВАМИ. Решение:
СуммаПрописью = ВРег(ЧислоПрописью(123.45,"..."));
Интеграция с Word/Excel
При экспорте данных в Microsoft Word или Excel через ЗначениеВФормате можно передавать сумму прописью как отдельное поле:
ТаблицаДокумента.ВывестиСуммуПрописью(СуммаПрописью(Документ.СуммаДокумента));
Для мультивалютных документов всегда проверяйте текущую валюту документа через свойство ВалютаДокумента — это позволит динамически подставлять правильные склонения.
FAQ: Частые вопросы по выводу суммы прописью в 1С
Как вывести сумму прописью в отчете, если там нет такого поля?
Добавьте в отчет вычисляемое поле с формулой ЧислоПрописью(ПолеСумма,"Рубль,Рубля,Рублей,м,Копейка,Копейки,Копеек,ж,2"). Для этого:
- Откройте настройки отчета
- Перейдите на закладку"Поля"
- Добавьте новое вычисляемое поле
- Укажите формулу и формат вывода
Почему в платежном поручении сумма прописью выводится с ошибками?
Чаще всего это связано с:
- Неправильным форматом строки (проверьте порядок склонений)
- Округлением суммы (убедитесь, что передаете число с копейками)
- Конфликтом обработок (отключите временно все внешние обработки и проверьте результат)
Для диагностики используйте режим отладки (F5) и посмотрите, какое значение передается в функцию ЧислоПрописью.
Можно ли вывести сумму прописью на английском языке?
Да, но стандартная функция ЧислоПрописью не поддерживает английский. Варианты решения:
- Используйте внешнюю обработку (например, NumberToWordsEN с Инфостарта)
- Напишите собственную функцию с английскими правилами склонения
- Для простых случаев используйте замену:
EnglishNumber = СтрЗаменить(ЧислоПрописью(123,"One,Two,Many,m,,,,,0"),"Один","One");// Далее вручную заменяйте все русские слова на английские
Как сделать, чтобы сумма прописью автоматически подставлялась в договор?
Для этого нужно:
- Открыть макет документа"Договор" в режиме редактирования
- Найти поле, где должна выводиться сумма прописью
- В свойствах поля указать выражение:
ЧислоПрописью(ОбщаяСумма,"Рубль,Рубля,Рублей,м,Копейка,Копейки,Копеек,ж,2") - Сохранить макет и обновить форму документа
Если поле отсутствует, добавьте его через конструктор печатной формы.
Почему в некоторых документах сумма прописью выводится с лишними пробелами?
Это происходит из-за:
- Неправильного разделителя в функции
ЧислоПрописью(по умолчанию используется пробел) - Дополнительных пробелов в форматной строке макета
- Особенностей шрифта при печати (попробуйте изменить шрифт на моноширинный, например,
Courier New)
Решение: Явно укажите разделитель:
ЧислоПрописью(Сумма,"Рубль,Рубля,Рублей,м,Копейка,Копейки,Копеек,ж,2",""); // Пустой разделитель