Как реализовать автоматический вывод числа прописью в шаблоне 1С:Документооборот

Программист 1С v8.3 (Управляемые формы) 1С:Документооборот
← На главную

При работе в системе 1С:Документооборот 8 КОРП часто возникает необходимость автоматизировать заполнение печатных форм и договоров. Одной из типичных задач является вывод числовых значений (например, срока действия договора или количества дней отпуска) в формате "5 (пять) дней". В этой статье мы подробно разберем, как реализовать такую логику без изменения конфигурации, используя встроенные механизмы скриптов и функций платформы 1С.

Постановка задачи и выбор инструмента

Рассмотрим ситуацию: у нас есть готовый шаблон документа MS Word с полями для автозаполнения. Нам нужно, чтобы при формировании документа по шаблону программа сама брала число из реквизитов и дописывала рядом его текстовое представление в скобках. Для этого в 1С:Документооборот предусмотрен мощный механизм "Настройка заполнения файлов".

Для решения задачи мы можем пойти двумя путями:

  1. Использовать стандартные реквизиты (если требуется только число).
  2. Написать небольшой скрипт внутри настройки заполнения (для преобразования числа в строку с прописью).

Поскольку нам нужно специфическое форматирование "число + пропись", вариант со скриптом является наиболее гибким и предпочтительным.

Шаг 1. Подготовка шаблона в MS Word

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

Шаг 2. Настройка заполнения файла в 1С

Теперь перейдем в интерфейс 1С:Документооборот и выполним следующие действия:

  1. Откроем карточку Шаблона документа.
  2. Перейдем на вкладку "Файлы" и выберем нужный нам файл шаблона.
  3. Нажмем кнопку "Настройка заполнения".
  4. В открывшемся окне добавим новую строку. В колонке "Поле в файле" укажем имя нашего тега без скобок — СрокДнейПрописью.
  5. В колонке "Тип заполнения" выберем значение "Скрипт".

Шаг 3. Написание скрипта для формирования прописи

Рассмотрим подробнее код скрипта. Основным инструментом для нас будет глобальная функция 1С ЧислоПрописью. Проанализируем синтаксис этой функции:

ЧислоПрописью(Число, ПараметрыПредметаИсчисления, ФорматнаяСтрока)

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

Разберем пример кода, который можно вставить в редактор скрипта в 1С:Документооборот:


// 1. Получаем значение из реквизита документа (владельца файла)
ЧислоДней = Файл.ВладелецФайла.СрокИсполнения; 

// 2. Проверяем, заполнено ли число, чтобы избежать ошибок
Если ЧислоДней = 0 Или ЧислоДней = Неопределено Тогда
    Результат = "___ (__________) дней";
Иначе
    // 3. Формируем текстовое представление числа
    ТекстЧислом = Формат(ЧислоДней, "ЧГ=0");
    
    // 4. Формируем пропись с учетом морфологии (род, падежи)
    // Параметры: "L=ru_RU" - локализация, далее правила для слова "день"
    ТекстПрописью = ЧислоПрописью(ЧислоДней, "L=ru_RU", "день, дня, дней, м, , , , , 0");
    
    // 5. Собираем итоговую строку
    Результат = ТекстЧислом + " (" + ТекстПрописью + ")";
КонецЕсли;

Шаг 4. Особенности работы с морфологией

Важно понимать, почему мы используем именно такие параметры в ЧислоПрописью. Функция ожидает 9 полей, разделенных запятыми:

Если нам нужно вывести просто слово "пять" без привязки к "дням", скрипт упрощается:


Число = 5;
Пропись = ЧислоПрописью(Число, "L=ru_RU", ", , , , , , , , 0");
// Результат будет: "Пять "

Шаг 5. Отладка и проверка результата

Проанализируем процесс проверки. В окне настройки скрипта в 1С:Документооборот есть кнопка "Проверить". При её нажатии система предложит выбрать конкретный документ-объект. Мы сможем сразу увидеть, какой текст сформировал наш код. Это очень удобно, так как не нужно каждый раз генерировать файл Word для поиска ошибок.

Обратите внимание: если вы используете версию КОРП, вы также можете использовать механизм "Вычисляемые поля" в схемах компоновки данных, но для простых шаблонов Word встроенные скрипты заполнения являются самым быстрым и надежным способом.

Дополнительные возможности БСП

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

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

← На главную