Форматирование чисел прописью в 1С:Предприятие — стандартная задача при оформлении платежных поручений, счетов-фактур и других бухгалтерских документов. Однако часто пользователи сталкиваются с проблемой: функция ЧислоПрописью() автоматически добавляет "ноль рублей 00 копеек" или "0,00" даже когда сумма целая. Это портит внешний вид документов и требует ручной правки.

В большинстве случаев лишние нули появляются из-за особенностей работы встроенных механизмов . Например, при выводе суммы 1500 рублей система может показать "Одна тысяча пятьсот рублей 00 копеек", хотя логичнее было бы "Одна тысяча пятьсот рублей". В этой статье разберём 5 способов убрать нули — от простых настроек до программного кода для разработчиков.

Проблема актуальна для всех конфигураций на базе 1С:Предприятие 8.3 (Бухгалтерия, ЗУП, Управление торговлей, ERP). Решения подойдут как для типовых, так и для самописных конфигураций. Если вы не программист, начните с первых трёх методов — они не требуют изменения кода.

📊 С какой конфигурацией 1С вы работаете?
Бухгалтерия 3.0
ЗУП 3.1
Управление торговлей 11
ERP 2.5
Другая

1. Настройка формата числа в печатной форме

Самый простой способ убрать нули — изменить параметры вывода числа прописью непосредственно в печатной форме документа. Этот метод не требует программирования и доступен любому пользователю с правами на редактирование макетов.

Откройте нужную печатную форму (например, Платежное поручение или Счет-фактура) в режиме конфигуратора или через меню Все функции → Печатные формы. Найдите поле, где выводится сумма прописью, и проверьте его свойства:

  • 🔹 Формат числа — установите значение ЧДЦ=0; ЧРД=0; (это отключит вывод дробной части, если она равна нулю).
  • 🔹 Точность — если поле поддерживает этот параметр, задайте 0 для целых сумм.
  • 🔹 Показывать нулевые значения — снимите эту галочку, если она есть.

Если в вашей конфигурации используется универсальный механизм печатных форм (например, в Бухгалтерии 3.0), найдите макет формы и отредактируйте выражение для суммы прописью. Обычно оно выглядит так:

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

Здесь последние два параметра (Ложь) как раз отвечают за вывод дробной части. Замените их на Истина, чтобы скрыть нули.

💡

Перед изменением макета сделайте его копию через Файл → Сохранить как — это поможет быстро откатиться, если что-то пойдет не так.

2. Использование функции СокрЛП() для обрезки нулей

Если изменять печатную форму нельзя (например, в типовых конфигурациях с блокировкой редактирования), воспользуйтесь встроенной функцией СокрЛП(). Она удаляет пробелы и лишние символы справа, включая "00 копеек".

Добавьте в код вывода суммы прописью следующую конструкцию:

СокрЛП(ЧислоПрописью(Сумма, "рубль,,рубля,,рублей,,копейка,,копейки,,копеек,,0,,,0,,,Истина,,,Ложь"), " 00 копеек")

Этот код:

  1. Преобразует число в прописной формат.
  2. Удаляет фразу " 00 копеек" (обратите внимание на пробел перед нулями!).

Если в вашей конфигурации используются другие валюты (доллары, евро), замените "копеек" на соответствующее слово ("центов", "евроцентов").

Что делать, если сумма с копейками?

Если сумма не круглая (например, 1500,50), функция СокрЛП() не удалит копейки. В этом случае лучше использовать условный оператор:

Если Копейки(Сумма) = 0 Тогда

Результат = СокрЛП(ЧислоПрописью(Сумма, "..."), " 00 копеек");

Иначе

Результат = ЧислоПрописью(Сумма, "...");

КонецЕсли;

3. Программное решение: модификация функции ЧислоПрописью()

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

  • 🔹 Убирать нули только для целых сумм.
  • 🔹 Сохранять копейки, если они ненулевые.
  • 🔹 Адаптировать вывод под разные валюты.

Пример кода для обработчика:

Функция ЧислоПрописьюБезНулей(Число, ВалютаРод = "", ВалютаРодительный = "", ВалютаМножество = "",

ДробьЕд = "", ДробьДве = "", ДробьМного = "", ДробьРод = "",

Разделитель = "", НеОтбрасыватьДробь = Ложь) Экспорт

Результат = ЧислоПрописью(Число, ВалютаРод, ВалютаРодительный, ВалютаМножество,

ДробьЕд, ДробьДве, ДробьМного, ДробьРод, Разделитель);

Если НеОтбрасыватьДробь Или Копейки(Число) <> 0 Тогда

Возврат Результат;

Иначе

// Удаляем " 00 копеек" или аналогичный суффикс

Позиция = Найти(Результат, " 00 ");

Если Позиция > 0 Тогда

Возврат Лев(Результат, Позиция - 1);

КонецЕсли;

Возврат Результат;

КонецЕсли;

КонецФункции

Чтобы использовать эту функцию в печатных формах, замените стандартный вызов ЧислоПрописью() на ЧислоПрописьюБезНулей(). Например:

ЧислоПрописьюБезНулей(СуммаДокумента, "рубль", "рубля", "рублей", "копейка", "копейки", "копеек")
💡

Этот метод универсален и работает во всех конфигурациях 1С, включая старые версии платформы (8.2 и ниже).

4. Настройка через параметры сеанса (для опытных пользователей)

В некоторых конфигурациях (например, 1С:ERP) вывод чисел прописью регулируется параметрами сеанса. Это позволяет гибко управлять форматом без изменения кода.

Чтобы проверить или изменить эти параметры:

  1. Откройте Администрирование → Настройки программы → Параметры сеанса.
  2. Найдите параметры с названиями:
    • 🔹 ФорматЧислаПрописьюПоУмолчанию
    • 🔹 ОтображатьНулиВДробнойЧасти
  • Установите ОтображатьНулиВДробнойЧасти = Ложь.
  • Если таких параметров нет, их можно добавить программно через обработку "Управление параметрами сеанса" (доступна в режиме 1С:Предприятие).

    Запустить 1С в режиме предприятия|Открыть раздел "Администрирование"|Найти "Настройки программы"|Проверить параметры формата чисел|Сохранить изменения и перезапустить сеанс

    -->

    5. Решение для внешних печатных форм (БСП 3.0 и выше)

    Если вы используете Библиотеку стандартных подсистем (БСП) 3.0, то вывод чисел прописью часто настраивается через внешние печатные формы. В этом случае:

    Откройте макет внешней печатной формы (файл с расширением .mxl или .erf) и найдите поле с суммой прописью. Обычно оно имеет вид:

    &ЧислоПрописью(СуммаДокумента, "рубль,,рубля,,рублей,,копейка,,копейки,,копеек,,0,,,0")

    Замените его на:

    &ЧислоПрописью(СуммаДокумента, "рубль,,рубля,,рублей,,копейка,,копейки,,копеек,,0,,,0,,,Истина,,,Ложь")

    И добавьте обработку через СокрЛП(), как описано в разделе 2.

    Если внешняя форма использует механизм компоновки данных, измените выражение в настройках поля:

    • 🔹 Откройте схему компоновки данных.
    • 🔹 Найдите ресурс с суммой прописью.
    • 🔹 В выражении добавьте условие для обрезки нулей.
    💡

    В БСП 3.1+ есть готовая функция ФорматированнаяСтрока.ЧислоПрописьюБезНулей() — проверьте её наличие в глобальном модуле.

    Сравнение методов: какой выбрать?

    Выбор способа зависит от вашей роли в работе с и типа конфигурации. Ниже таблица с сравнением всех методов:

    Метод Сложность Требуются права Подходит для типовых конфигураций Гибкость
    Настройка печатной формы Низкая Редактирование макетов Да (если макет не заблокирован) Ограничена
    СокрЛП() Средняя Изменение кода модуля Да Средняя
    Собственная функция Высокая Конфигуратор Да Высокая
    Параметры сеанса Низкая Администрирование Зависит от конфигурации Низкая
    Внешние печатные формы (БСП) Средняя Редактирование файлов Да Высокая

    Для бухгалтеров и пользователей без доступа к конфигуратору оптимальны первый и второй методы. Разработчикам лучше использовать собственную функцию или настройку через БСП — это даст максимальную гибкость.

    💡

    Если вы работаете в облачной версии 1С (1C:Fresh), большинство методов недоступны. В этом случае обратитесь в поддержку для настройки формата вывода.

    Частые ошибки и как их избежать

    При работе с числами прописью пользователи часто сталкиваются с типичными проблемами:

    ⚠️ Внимание: Если после изменений в печатной форме сумма прописью пропала совсем, проверьте синтаксис функции ЧислоПрописью(). Частая ошибка — лишние запятые или неверное количество параметров.
    • 🚫 Некорректный разделитель валют. Если в функции указан разделитель (например, "руб. "), а в коде его нет, сумма отобразится криво. Всегда проверяйте соответствие параметров.
    • 🚫 Игнорирование локализации. В украинской или казахской локализации 1С используются другие правила склонения валют. Убедитесь, что параметры функции соответствуют языку базы.
    • 🚫 Забытые пробелы в СокрЛП(). Функция ищет точную строку. Если в сумме прописью перед "00 копеек" есть два пробела, а вы указали один — замена не сработает.

    Ещё одна распространённая проблема — округление сумм. Если в документе указана сумма 1500,99, а вы применили обрезку нулей, копейки исчезнут. Всегда используйте условные операторы (как в разделе 3) для корректной обработки.

    ⚠️ Внимание: В конфигурациях с управляемым приложением (например, 1С:Бухгалтерия 3.0) некоторые макеты печатных форм хранятся в базе данных, а не в файлах. Их можно редактировать только через Все функции → Печатные формы.

    FAQ: Ответы на популярные вопросы

    Можно ли убрать нули в типовых печатных формах без изменения конфигурации?

    Да, в большинстве случаев достаточно отредактировать макет печатной формы через меню Все функции. Найдите нужную форму (например, ПлатежноеПоручение), откройте её макет и измените выражение для суммы прописью, добавив параметры для скрытия нулей.

    Если макет заблокирован, используйте функцию СокрЛП() в модуле документа.

    Почему после обновления 1С снова появляются нули в суммах?

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

    1. Создайте копию макета с другим именем (например, ПлатежноеПоручение_БезНулей).
    2. В коде документа замените вызов стандартной печатной формы на вашу копию.

    Так ваши изменения не затрутся при обновлении.

    Как убрать нули в суммах с иностранной валютой (доллары, евро)?

    Для иностранных валют используйте аналогичные параметры в функции ЧислоПрописью(), но с другими суффиксами. Пример для долларов:

    ЧислоПрописью(СуммаВДолларах, "доллар", "доллара", "долларов", "цент", "цента", "центов", "", "", "", "", Ложь)

    Чтобы убрать "00 cents", примените СокрЛП() с соответствующей строкой:

    СокрЛП(Результат, " 00 cents")
    Возможно ли автоматически скрывать нули во всех документах?

    Да, но для этого потребуется глобальное изменение конфигурации. Создайте общую функцию (например, ЧислоПрописьюБезНулей()) и замените все вызовы стандартной ЧислоПрописью() на неё.

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

    Почему в некоторых документах нули остаются, а в других — нет?

    Это зависит от:

    • 🔹 Типа печатной формы (некоторые формы используют свои механизмы вывода).
    • 🔹 Локализации (в разных языковых версиях 1С разные правила форматирования).
    • 🔹 Прав пользователя (если у вас нет прав на редактирование макетов, изменения не применятся).

    Проверьте настройки каждой формы отдельно.