Работа в конфигурации 1С:Документооборот существенно отличается от привычной разработки в 1С:Бухгалтерии или 1С:УТ. Основное отличие заключается в том, что значительная часть логики (автозаполнение файлов, условия маршрутизации, действия в бизнес-процессах) описывается не в конфигураторе, а непосредственно в пользовательском режиме «Предприятие» с помощью встроенных скриптов. В этой статье мы подробно разберем, как подступиться к этой задаче, проанализируем примеры кода и выясним технические нюансы работы с шаблонами документов.
Рассмотрим стандартную задачу: нам необходимо, чтобы при создании документа на основании шаблона Microsoft Word, определенные поля (например, ФИО ответственного в кратком виде) заполнялись автоматически. Разберем этот процесс по шагам.
Проанализируем ситуацию, когда нам нужно из полного имени ответственного (строки) получить формат «И. И. Фамилия». Для этого в настройках автозаполнения для конкретного поля выберем тип «Скрипт» и напишем следующий код:
// Разложим полное имя ответственного на составляющие
ЧастиФИО = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Файл.ВладелецФайла.Ответственный, " ");
КоличествоЧастей = ЧастиФИО.Количество();
// Извлекаем фамилию, имя и отчество
Фамилия = ?(КоличествоЧастей > 0, ЧастиФИО[0], "");
Имя = ?(КоличествоЧастей > 1, ЧастиФИО[1], "");
Отчество = ?(КоличествоЧастей > 2, ЧастиФИО[2], "");
// Формируем строку с инициалами
ФИООтветственный = СокрЛП(?(ЗначениеЗаполнено(Имя), Лев(Имя, 1) + ". ", "") +
?(ЗначениеЗаполнено(Отчество), Лев(Отчество, 1) + ". ", "") +
?(ЗначениеЗаполнено(Фамилия), Фамилия, ""));
// Ключевой момент: передача результата в файл
РезультатОбработки = ФИООтветственный;
В данном коде стоит обратить внимание на объект Файл. Через него мы получаем доступ к владельцу (например, к карточке внутреннего документа) через свойство Файл.ВладелецФайла. Переменная РезультатОбработки является предопределенной — именно то значение, которое мы ей присвоим, будет вставлено в соответствующее поле документа Word.
Перейдем к работе с бизнес-процессами (БП). Часто возникает необходимость выполнить произвольный код при переходе по маршруту или при выполнении задачи. Выясним, как это реализовать правильно.
Проанализируем основные правила написания кода внутри БП:
Процедура Имя()) или функцию. Пишется только «тело» кода.Пользователи.НайтиПоНаименованию("Иванов И.И.").Рассмотрим практический совет по разработке: так как отладка кода внутри предприятия затруднена (нельзя поставить точку останова), рекомендуется сначала создать внешнюю обработку в Конфигураторе. В ней мы можем протестировать логику, обращаясь к объектам системы, и только после успешной проверки «впихнуть» готовый код в поле скрипта бизнес-процесса.
Если мы работаем в 1С:Документооборот 3.0, то возможности работы со скриптами значительно расширяются. Разберем ключевые отличия от версии 2.1:
.xlsx и открытых форматов .odt. При работе с Excel мы можем программно заполнять конкретные ячейки, используя их координаты.При написании скриптов важно помнить о безопасном режиме. Часто выполнение кода происходит в контексте, который ограничивает доступ к файловой системе сервера или к некоторым небезопасным методам БСП. Если ваш скрипт не срабатывает, проверьте настройки безопасности в профилях безопасности кластера 1С.
Рассмотрим методы, которые помогают нам в разработке, когда обычная отладка недоступна:
ЗаписьЖурналаРегистрации(). Мы можем записывать значения переменных в журнал, чтобы потом проанализировать, на каком этапе скрипт отработал неверно.ФизическиеЛица.Подводя итог, можно сказать, что программирование в «1С:Документооборот» требует от разработчика понимания объектной модели именно этой конфигурации (как связаны файлы, документы и задачи) и навыка написания чистого кода, адаптированного для выполнения в текстовых полях базы данных.