В процессе внедрения системы «1С:Документооборот 2.1 КОРП» специалисты часто сталкиваются с необходимостью адаптации типовых бизнес-процессов под специфические требования организации. Основные сложности обычно возникают при попытке связать логику маршрута с данными документа и при настройке информативных почтовых уведомлений для пользователей. Разберем подробно, как решать эти задачи правильно, не нарушая архитектуру системы.
Прежде чем приступать к разработке бизнес-процесса, проанализируем важный методологический момент. В конфигурации «1С:Документооборот» крайне не рекомендуется создавать новые объекты типа Документ непосредственно в дереве метаданных конфигуратора. Это связано с тем, что весь типовой функционал (права доступа, связи, процессы, хранение файлов, поиск) жестко завязан на справочник ВнутренниеДокументы.
Рассмотрим правильный алгоритм действий:
ВидыВнутреннихДокументов.Такой подход гарантирует, что ваш «документ» будет виден всем подсистемам «1С:Документооборот», включая механизмы маршрутизации.
Выясним причину, по которой стандартный комплексный процесс может «не видеть» поля документа. Это происходит, если условия маршрутизации настроены некорректно или объект не является предметом процесса. Разберем по шагам, как настроить ветвление маршрута в зависимости от значений полей.
Для реализации логики «Если сумма > 100 000, то согласование идет к директору, иначе к руководителю отдела», выполним следующие действия:
Шаг 1. Создание условия маршрутизации.
Перейдем в раздел Настройка и администрирование — Условия маршрутизации. Создадим новое условие. У нас есть два варианта написания логики:
Сумма) и задать оператор сравнения.Рассмотрим пример скрипта, который проверяет значение в табличной части документа:
// Пример скрипта для условия маршрутизации
Результат = Ложь;
ПредметДокумента = Предмет.Ссылка; // Получаем ссылку на внутренний документ
Если ПредметДокумента.Товары.Итог("Сумма") > 50000 Тогда
Результат = Истина;
КонецЕсли;
Шаг 2. Применение условия в шаблоне процесса.
В шаблоне комплексного процесса (или в схеме процесса согласования) используем блок Условие. В настройках этого блока укажем созданное нами условие. Теперь система будет автоматически направлять задачу по нужной ветке в зависимости от данных в карточке документа.
Если в вашем бизнес-процессе требуется работа с табличными данными, которые не укладываются в типовую таблицу «Товары и услуги», проанализируем ситуацию с использованием расширений. Создание расширения — это безопасный способ модификации формы без снятия конфигурации с поддержки.
Для добавления своей таблицы:
ВнутренниеДокументы.Пример кода для вызова программного заполнения таблицы (например, из Excel) можно разместить в модуле формы расширения:
&НаКлиенте
Процедура Расш1_КомандаЗагрузкиДанных(Команда)
// Логика открытия файла и заполнения ТЧ
Объект.МояТабличнаяЧасть.Очистить();
// ... код парсинга данных ...
КонецПроцедуры
Перейдем ко второму вопросу автора: как сделать почтовые уведомления более информативными? Стандартные письма часто содержат лишь общую информацию и ссылку на документ. Рассмотрим два способа изменения этой ситуации.
В системе «1С:Документооборот» предусмотрен справочник Шаблоны уведомлений. Мы можем зайти в настройки уведомлений и отредактировать текст письма, используя автоподстановки типа [Предмет], [Автор], [Дата]. Однако этот способ ограничен только предопределенными полями.
Если необходимо выводить в письмо данные из дополнительных реквизитов или табличных частей, проанализируем работу общего модуля УправлениеУведомлениями. Именно здесь формируется тело исходящего сообщения.
Наиболее элегантным решением будет создание дополнительного обработчика уведомлений. Это позволяет не «ломать» типовой код, а вклиниться в процесс формирования письма через расширение. Посмотрим на примерную структуру метода, который добавляет информацию в уведомление:
&После("СформироватьТекстУведомления")
Процедура Расш1_СформироватьТекстУведомления(ПараметрыУведомления, ТекстПисьма)
// Проверяем, что уведомление относится к нашему виду документа
Если ПараметрыУведомления.Предмет.ВидДокумента = ПредопределенноеЗначение("Справочник.ВидыВнутреннихДокументов.Командировка") Тогда
// Достаем нужные поля из документа
ДопИнформация = " Сумма заявки: " + ПараметрыУведомления.Предмет.Сумма;
// Добавляем информацию в начало письма
ТекстПисьма = ДопИнформация + Символы.ПС + ТекстПисьма;
КонецЕсли;
КонецПроцедуры
Зачастую пользователю удобнее увидеть сформированный PDF-файл прямо в почте, чем переходить в систему. Разберем, как это реализовать:
Таким образом, комбинируя типовые инструменты (условия маршрутизации, виды документов) и современные методы разработки (расширения, перехват функций формирования текста), мы создаем гибкую и эффективную систему документооборота, которая полностью отвечает потребностям бизнеса.