При разработке в среде 1С:Документооборот 2.1 (1С:ДО) часто возникает задача перевести работу с документами на рельсы бизнес-процессов. Вместо создания сложных форм списка с ручными отборами по подразделениям, эффективнее использовать типовой движок задач. Разберем подробно, как правильно «подружить» ваш нетиповой документ с механизмом бизнес-процессов, чтобы система сама ставила задачи нужным исполнителям, а вы могли контролировать сроки и этапы выполнения.
Рассмотрим ситуацию: у нас есть форма списка, где слева отображается структура предприятия, а справа — документы. Мы пытаемся имитировать работу задач, фильтруя документы по подразделению. Однако в 1С:ДО уже заложен мощный функционал Задач и Бизнес-процессов. Вместо того чтобы искать документ, пользователь должен видеть в своем списке «Задачи мне» конкретное поручение.
Переводя логику на бизнес-процесс, мы получаем:
Проанализируем техническую сторону. В 1С:ДО связь между процессом и документом осуществляется через механизм Предметов. Если вы просто создали новый документ, система не позволит выбрать его в качестве основания для процесса. Нам необходимо внести изменения в ОпределяемыеТипы.
Найдем в дереве метаданных следующие объекты и добавим в их состав наш новый документ:
ПредметЗадачи — позволяет документу отображаться внутри карточки задачи.ПредметБизнесПроцесса — дает возможность выбрать документ как основной объект при запуске процесса.ОснованиеПредметаЗадачи — необходимо для корректной работы связей.Важный момент: если вы работаете в режиме расширения, убедитесь, что ваш документ корректно проброшен в эти типы, иначе типовые общие модули выдадут ошибку при попытке записи связи.
Автор исходной темы акцентировал внимание на связи с подразделениями. В 1С:ДО это решается через Ролевую адресацию. Рассмотрим, как это работает. Вместо того чтобы жестко прописывать пользователя в коде, мы назначаем исполнителем Роль (например, «Руководитель подразделения») и указываем Объект адресации (само подразделение).
Проанализируем цепочку действий:
Таким образом, задача упадет в список «Задачи отдела» именно тем сотрудникам, которые относятся к данному подразделению в справочнике СтруктураПредприятия.
Выясним, как запустить процесс автоматически при создании документа или по нажатию кнопки. Нам не нужно создавать объект БизнесПроцесс вручную через СоздатьОбъект(). В 1С:ДО для этого используются общие модули. Посмотрим на пример кода, который инициализирует процесс по заранее настроенному шаблону:
// Пример программного запуска процесса "Исполнение" для нашего документа
ПараметрыЗапуска = БизнесПроцессыИЗадачиВызовСервера.ПолучитьСтруктуруПараметровДляЗапускаПроцесса();
ПараметрыЗапуска.Шаблон = Справочники.ШаблоныИсполнения.НайтиПоНаименованию("ОбработкаЗаявки");
ПараметрыЗапуска.Предмет = СсылкаНаНашДокумент;
// Вызываем функцию запуска из типового механизма
БизнесПроцессыИЗадачиВызовСервера.СоздатьБизнесПроцессПоШаблону(ПараметрыЗапуска);
Использование БизнесПроцессыИЗадачиВызовСервера гарантирует, что будут заполнены все необходимые регистры сведений (такие как ПредметыПапокБизнесПроцессов), и документ появится в связях процесса.
Чтобы пользователю было удобно, мы должны вывести список запущенных процессов прямо в форме нашего документа. Рассмотрим, как это реализовано в типовых объектах. Нам нужно добавить на форму Динамический список, который будет выбирать данные из регистра сведений ЗадачиОбъектов (или использовать стандартную командную панель «Процессы и задачи»).
Проанализируем преимущества такого интерфейса:
Одним из требований автора была возможность переадресации. В 1С:ДО это «бесплатная» функция. В каждой задаче есть кнопка «Перенаправить». При ее нажатии:
Разберем, почему это лучше, чем менять реквизит «Ответственный» в документе. При смене ответственного в документе мы теряем информацию о том, кто был первым. В бизнес-процессе сохраняется вся цепочка «рукопожатий».
Для правильной реализации задачи по постановке заявок подразделениям в 1С:ДО не нужно изобретать велосипед и рисовать сложные формы отборов. Проанализируем краткий алгоритм действий:
ОпределяемыеТипы для работы с предметами.Важно помнить: Основная мощь 1С:Документооборота заключается в его гибкости через настройки. Программирование здесь должно сводиться лишь к интеграции объекта в общую экосистему, а саму логику прохождения (этапы, сроки, переходы) лучше оставить на откуп администраторам системы в режиме «Предприятие».