Как правильно реализовать бизнес-процессы и согласование документов в 1С?

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

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

Разделение сущностей: Документ и Бизнес-процесс

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

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

Реализация удобного интерфейса

Многие задаются вопросом: как сделать так, чтобы при открытии задачи пользователь видел не стандартную форму задачи, а форму документа? Решение кроется в использовании механизмов интерактивного открытия.

Рассмотрим, как это работает:

  1. В форме задачи вы перехватываете событие открытия.
  2. Программно получаете ссылку на Предмет процесса.
  3. Используете метод ОткрытьЗначение() или ОткрытьФорму() для вывода формы документа на экран.

Таким образом, для пользователя процесс становится «невидимым» помощником, который просто направляет его в нужный документ, где уже проставлены все необходимые реквизиты и история согласования.

Управление историей движения и согласования

Частая ошибка — попытка хранить историю в самом бизнес-процессе. Процесс — это динамический объект. После его завершения он становится «историческим фактом». Для хранения истории того, кто, когда и с каким комментарием поставил «галочку», используйте РегистрыСведений или ТабличныеЧасти документа.

При нажатии пользователем кнопки «Согласовать», вы записываете результат в регистр:


Процедура ЗаписатьРезультатСогласования(ДокументСсылка, Пользователь, Комментарий, Статус)
    НаборЗаписей = РегистрыСведений.ИсторияСогласования.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Документ.Установить(ДокументСсылка);
    Запись = НаборЗаписей.Добавить();
    Запись.Документ = ДокументСсылка;
    Запись.Пользователь = Пользователь;
    Запись.Комментарий = Комментарий;
    Запись.Статус = Статус;
    НаборЗаписей.Записать();
КонецПроцедуры

Как быть с повторным запуском и циклами согласования?

Если бизнес-процесс завершен, он выполнен. Не нужно пытаться «оживить» старый процесс. Если документ требует правок, создавайте новый экземпляр бизнес-процесса на основании документа. Старый процесс остается в архиве как доказательство того, что именно происходило с документом ранее.

Что касается циклов на схеме (когда нужно вернуться на доработку):

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

Резюме по шагам:

  1. Создавайте документ как независимую сущность.
  2. Привязывайте документ к процессу через Предметы.
  3. Историю сохраняйте в РегистрыСведений, чтобы она жила дольше процесса.
  4. Для повторных правок создавайте новые экземпляры процессов — это лучший способ ведения аудита.
  5. Используйте Формы задач только как прослойку для открытия целевого документа.
← На главную