Разработка и Конфигурация · 8 мин
Как сделать сумму прописью в 1С
Как сделать сумму прописью в 1С: встроенные функции ЧислоПрописью и РаботаСКурсамиВалют, настройка печатных форм, примеры кода и типичные ошибки.
Сумма прописью — обязательный элемент большинства печатных документов: счетов на оплату, актов, накладных, договоров. В типовых конфигурациях 1С эта функция уже реализована, но часто требуется вывести сумму прописью в собственном отчёте, доработанной печатной форме или внешней обработке.
Платформа 1С:Предприятие предоставляет встроенные средства для преобразования чисел в текстовое представление, поэтому писать собственный алгоритм склонения числительных почти никогда не нужно. Достаточно знать, какая функция доступна в вашей версии платформы и конфигурации, и правильно передать ей параметры.
Ниже разобраны основные способы: функция ЧислоПрописью из платформы, типовые процедуры из библиотеки стандартных подсистем, вывод суммы с валютой и копейками, а также настройка печатных форм без программирования.
Как работает функция ЧислоПрописью
Функция ЧислоПрописью() — штатный механизм платформы 1С:Предприятие. Она принимает число и параметры форматирования, а возвращает строку вида «Сто двадцать пять рублей 00 копеек» или просто «Сто двадцать пять» — в зависимости от настроек.
Базовый синтаксис выглядит так:
Результат = ЧислоПрописью(Число, "Л=ru_RU", "рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
Первый параметр — само число. Второй — строка локализации, определяющая язык. Третий — параметры предмета исчисления: формы единицы для одного, двух и пяти, род (м — мужской, ж — женский, с — средний), затем аналогично для дробной части и количество знаков дробной части.
Если дробная часть не нужна, третий параметр можно упростить: ЧислоПрописью(Сумма, "Л=ru_RU", ",,,,,,,,0") — тогда на выходе будет только целое число прописью без «рублей» и «копеек».
Сумма прописью в типовых конфигурациях
В конфигурациях на базе Библиотеки стандартных подсистем (БСП) — это 1С:Бухгалтерия, Управление торговлей, ERP, Зарплата и управление персоналом — писать вызов ЧислоПрописью вручную не требуется. Есть готовые процедуры общего модуля РаботаСКурсамиВалют.
Ключевая функция — СформироватьСуммуПрописью(Сумма, Валюта). Она сама подставляет правильные формы валюты («рубль, рубля, рублей»), добавляет копейки и возвращает готовую строку:
СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(Документ.СуммаДокумента, Документ.Валюта);
Валюта передаётся как ссылка на элемент справочника «Валюты». Параметры склонения (наименования целой и дробной части, род) хранятся в реквизитах справочника, поэтому для долларов и евро строка сформируется корректно без дополнительного кода.
Дополнительно в БСП есть функция КоличествоПрописью — она выводит количество прописью с наименованием предмета исчисления, например «3 (три) штуки». Это удобно для строк табличных частей в печатных формах ТОРГ-12 и аналогичных.
СуммаПрописью = РаботаСКурсамиВалют.СформироватьСуммуПрописью(ИтогСумма, ВалютаДокумента);
Макет.Параметры.СуммаПрописью = СуммаПрописью;Как вывести сумму прописью в печатной форме
Самая частая практическая задача — добавить сумму прописью в макет печатной формы документа. Порядок действий типовой: найти процедуру печати, сформировать строку, передать её в параметр макета.
- 1Откройте модуль менеджера документа или процедуру печати, где формируется табличный документ
- 2Найдите место, где заполняются параметры макета (строки вида Область.Параметры.ИмяПараметра = ...)
- 3Сформируйте строку: РаботаСКурсамиВалют.СформироватьСуммуПрописью(Сумма, Валюта)
- 4Присвойте результат параметру макета, например Область.Параметры.СуммаПрописью
- 5В макете добавьте ячейку с параметром СуммаПрописью (тип заполнения — Параметр)
- 6Распечатайте тестовый документ и проверьте результат на сумме с копейками и без
Если конфигурация нетиповая или самописная и БСП в ней нет, используйте ЧислоПрописью напрямую. Сначала отделите целую часть и копейки, затем соберите строку вручную, если требуется формат «125 руб. 35 коп.»:
Рубли = Цел(Сумма);
Копейки = (Сумма - Рубли) * 100;
СтрокаПрописью = ЧислоПрописью(Рубли, "Л=ru_RU", "рубль, рубля, рублей, м,,,,,0")
+ " " + Формат(Копейки, "ЧЦ=2; ЧВН=") + " коп.";
Обратите внимание: присваивание параметра макета должно происходить после получения области и до её вывода в табличный документ, иначе значение не попадёт на печать.
Особенности для счетов, актов и договоров
В счетах на оплату принято выводить строку вида «Всего наименований 3, на сумму 12 500,00 руб. Двенадцать тысяч пятьсот рублей 00 копеек». Здесь сумма прописью начинается с заглавной буквы — функция СформироватьСуммуПрописью делает это автоматически.
В договорах часто требуется формат с дублированием цифрами: «12500 (двенадцать тысяч пятьсот) рублей 00 копеек». Для этого число и строку прописью объединяют конкатенацией, а регистр первой буквы при необходимости понижают функциями НРег и Сред.
Для документов в иностранной валюте убедитесь, что в справочнике «Валюты» у нужной валюты заполнены параметры прописи: наименования целой и дробной части в трёх формах и род. Если поля пустые, строка сформируется с ошибками склонения или без наименования валюты.
Типичные ошибки и как их избежать
Отдельная группа ошибок связана с локализацией. Если информационная база работает с украинским или казахским языком, параметр локализации и формы валют должны соответствовать языку документа, иначе склонение будет неверным.
Проверка результата
После внедрения строки суммы прописью обязательно проверьте её на контрольном наборе значений: целая сумма без копеек, сумма с копейками, сумма с одной копейкой (проверка формы «копейка»), крупная сумма с миллионами и тысячами, сумма в валюте.
Как проверить результат
Одна тысяча рублей 00 копеек
Пропущены копейки или неверное склонение «тысяча»
Один рубль 01 копейка
«Один рублей» или «01 копеек»
Два миллиона триста сорок пять тысяч шестьсот семьдесят восемь рублей 90 копеек
Обрыв строки или ошибка в разрядах
Доллары США и центы с верным склонением
Сумма в рублях при валютном документе
Тестировать удобно на реальных документах из демонстрационной базы: распечатайте счёт, акт и накладную и сверьте сумму прописью с итогом документа вручную.
FAQ по сумме прописью в 1С
Можно ли вывести сумму прописью без программирования?
В типовых конфигурациях сумма прописью уже присутствует в стандартных печатных формах счетов, актов и накладных. Если её нет в нужном месте макета, потребуется доработка макета и процедуры печати — без изменения кода добавить новый параметр нельзя. Альтернатива — внешняя печатная форма, которую подключают через «Дополнительные отчеты и обработки».
Почему сумма прописью выводится с маленькой буквы?
Функция ЧислоПрописью возвращает строку в нижнем регистре. Типовая СформироватьСуммуПрописью сама делает первую букву заглавной. При ручной сборке строки используйте конструкцию с ВРег и Лев для первого символа либо перейдите на типовую функцию.
Как вывести сумму прописью в запросе или СКД?
В языке запросов 1С функции преобразования числа в пропись нет. Сумму прописью формируют после выполнения запроса — при обходе выборки или в вычисляемом поле компоновки данных через вызов функции общего модуля, если она доступна в выражениях СКД.
Что делать, если валюта склоняется неправильно?
Откройте справочник «Валюты» и проверьте поля параметров прописи: наименования целой и дробной части в формах для одного, двух и пяти, а также род. Для нестандартной валюты эти поля заполняются вручную. После исправления перепечатайте документ.
Работает ли ЧислоПрописью в тонком клиенте и на сервере?
Функция доступна и на клиенте, и на сервере. Однако формирование печатных форм принято выполнять на сервере — там же доступны типовые процедуры общих модулей. Учитывайте директивы компиляции общего модуля: если модуль только серверный, вызвать его из клиентского контекста не получится.
Что важно запомнить
Для суммы прописью в 1С используйте типовую функцию РаботаСКурсамиВалют.СформироватьСуммуПрописью, а в конфигурациях без БСП — платформенную ЧислоПрописью с параметрами валюты. Доработки выполняйте через расширение, проверяйте результат на суммах с копейками, крупных разрядах и валютных документах.