Как использовать скрипты для автозаполнения шаблонов и программирования в 1С:Документооборот 8?

Программист IT и автоматизация бизнеса
← На главную

Работа в конфигурации 1С:Документооборот существенно отличается от привычной разработки в 1С:Бухгалтерии или 1С:УТ. Основное отличие заключается в том, что значительная часть логики (автозаполнение файлов, условия маршрутизации, действия в бизнес-процессах) описывается не в конфигураторе, а непосредственно в пользовательском режиме «Предприятие» с помощью встроенных скриптов. В этой статье мы подробно разберем, как подступиться к этой задаче, проанализируем примеры кода и выясним технические нюансы работы с шаблонами документов.

Принципы автозаполнения файлов Word

Рассмотрим стандартную задачу: нам необходимо, чтобы при создании документа на основании шаблона Microsoft Word, определенные поля (например, ФИО ответственного в кратком виде) заполнялись автоматически. Разберем этот процесс по шагам.

  1. Подготовка шаблона в Word. Прежде всего, откроем файл Word и создадим в нем текстовые поля (закладки), которые система будет использовать в качестве меток. Это можно сделать через меню «Вставка» — «Текстовое поле» или используя механизмы закладок.
  2. Настройка в 1С:Документооборот. Перейдем в настройки заполнения шаблона файла. Здесь мы увидим две основные возможности:
    • Реквизиты: если название поля в Word совпадает с именем реквизита документа, система может сопоставить их автоматически.
    • Скрипты: если данные требуют преобразования (как в случае с ФИО или сложными датами), мы используем написание кода.

Разбор примера скрипта для обработки ФИО

Проанализируем ситуацию, когда нам нужно из полного имени ответственного (строки) получить формат «И. И. Фамилия». Для этого в настройках автозаполнения для конкретного поля выберем тип «Скрипт» и напишем следующий код:


// Разложим полное имя ответственного на составляющие
ЧастиФИО = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Файл.ВладелецФайла.Ответственный, " ");
КоличествоЧастей = ЧастиФИО.Количество();

// Извлекаем фамилию, имя и отчество
Фамилия = ?(КоличествоЧастей > 0, ЧастиФИО[0], "");
Имя = ?(КоличествоЧастей > 1, ЧастиФИО[1], "");
Отчество = ?(КоличествоЧастей > 2, ЧастиФИО[2], "");

// Формируем строку с инициалами
ФИООтветственный = СокрЛП(?(ЗначениеЗаполнено(Имя), Лев(Имя, 1) + ". ", "") + 
                   ?(ЗначениеЗаполнено(Отчество), Лев(Отчество, 1) + ". ", "") +
                   ?(ЗначениеЗаполнено(Фамилия), Фамилия, ""));

// Ключевой момент: передача результата в файл
РезультатОбработки = ФИООтветственный;

В данном коде стоит обратить внимание на объект Файл. Через него мы получаем доступ к владельцу (например, к карточке внутреннего документа) через свойство Файл.ВладелецФайла. Переменная РезультатОбработки является предопределенной — именно то значение, которое мы ей присвоим, будет вставлено в соответствующее поле документа Word.

Особенности программирования в бизнес-процессах

Перейдем к работе с бизнес-процессами (БП). Часто возникает необходимость выполнить произвольный код при переходе по маршруту или при выполнении задачи. Выясним, как это реализовать правильно.

Проанализируем основные правила написания кода внутри БП:

Рассмотрим практический совет по разработке: так как отладка кода внутри предприятия затруднена (нельзя поставить точку останова), рекомендуется сначала создать внешнюю обработку в Конфигураторе. В ней мы можем протестировать логику, обращаясь к объектам системы, и только после успешной проверки «впихнуть» готовый код в поле скрипта бизнес-процесса.

Расширенные возможности и версии системы

Если мы работаем в 1С:Документооборот 3.0, то возможности работы со скриптами значительно расширяются. Разберем ключевые отличия от версии 2.1:

  1. Библиотека скриптов. В версии 3.0 появилась централизованная библиотека. Это позволяет нам один раз написать сложный алгоритм (например, расчет суммы НДС прописью) и вызывать его из разных шаблонов, не дублируя код.
  2. Поддержка Excel и ODT. Помимо Word, автоматизация доступна для таблиц .xlsx и открытых форматов .odt. При работе с Excel мы можем программно заполнять конкретные ячейки, используя их координаты.
  3. Заполнение табличных частей. С помощью скриптов можно реализовать заполнение многострочных таблиц в документе. Для этого скрипт должен возвращать массив структур или таблицу значений. Система сама найдет строку-образец в шаблоне и размножит ее.

Технические советы и отладка

При написании скриптов важно помнить о безопасном режиме. Часто выполнение кода происходит в контексте, который ограничивает доступ к файловой системе сервера или к некоторым небезопасным методам БСП. Если ваш скрипт не срабатывает, проверьте настройки безопасности в профилях безопасности кластера 1С.

Рассмотрим методы, которые помогают нам в разработке, когда обычная отладка недоступна:

Подводя итог, можно сказать, что программирование в «1С:Документооборот» требует от разработчика понимания объектной модели именно этой конфигурации (как связаны файлы, документы и задачи) и навыка написания чистого кода, адаптированного для выполнения в текстовых полях базы данных.

← На главную