Как настроить условие маршрутизации бизнес-процесса в 1С:Документооборот 2.1 на основе оплаты

Бизнес-аналитик 1С v8.3 (Управляемые формы) 1С:Документооборот Управленческий учет
← На главную

При автоматизации бизнес-процессов в 1С:Документооборот 2.1 часто возникает задача разделения маршрута в зависимости от действий пользователя. Типичный пример: на этапе согласования или рассмотрения сотрудник должен указать статус оплаты (например, 50% или 100%), и система должна автоматически направить процесс по нужному пути. В этой статье мы разберем, почему использование текстовых комментариев для этих целей — это тупиковый путь, и рассмотрим наиболее эффективные и надежные способы реализации такой логики без привлечения программиста и изменения конфигурации.

Почему не стоит использовать комментарии для условий маршрутизации

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

  1. Человеческий фактор: Любая опечатка («50 %» вместо «50%», использование латинской «о» вместо кириллической) приведет к тому, что условие не сработает.
  2. Отсутствие структуры: Комментарий — это произвольный текст. Если пользователь напишет «Клиент обещал оплатить 50%, но пока тишина», алгоритм может ошибочно распознать подстроку «50%» как выполненное условие.
  3. Сложность настройки: Для анализа текста в 1С:Документооборот КОРП придется писать программный код в «Выражении на языке 1С», так как стандартный конструктор условий не умеет эффективно работать с произвольными строками.

Вместо этого мы проанализируем профессиональный подход, основанный на использовании Дополнительных реквизитов и Переменных процесса.

Способ №1: Использование дополнительных реквизитов (Рекомендуемый)

Это самый надежный способ, так как он использует стандартный механизм Библиотеки Стандартных Подсистем (БСП). Мы добавим в карточку документа специальное поле, которое пользователь будет заполнять из выпадающего списка.

Шаг 1. Создание дополнительного реквизита

Рассмотрим, как создать поле для выбора процента оплаты. Перейдем в раздел Настройка и администрирование — Общие настройки — Дополнительные реквизиты и сведения. Найдем в списке тип документа, для которого настраивается процесс (например, «Внутренний документ»), и нажмем кнопку «Добавить» — «Новый».

В открывшейся карточке настроим реквизит следующим образом:

Шаг 2. Настройка видимости и обязательности

Чтобы пользователь не забыл заполнить это поле, мы можем настроить его обязательность. В карточке дополнительного реквизита на вкладке «Главное» можно указать условие проверки заполнения. Например, поле должно становиться обязательным только при переходе документа в определенное состояние.

Шаг 3. Настройка условия маршрутизации

Теперь разберем, как связать этот реквизит с бизнес-процессом. Перейдем в Управление процессами — Условия маршрутизации. Создадим новое условие:

  1. Укажем наименование: «Оплата составляет 100%».
  2. Выберем Способ настройки: «В режиме конструктора».
  3. В табличной части добавим строку. В колонке Поле выберем наш созданный реквизит Процент оплаты.
  4. В колонке Вид сравнения выберем «Равно».
  5. В колонке Значение выберем «Оплата 100%».

Это условие мы теперь можем вставить в схему бизнес-процесса после шага «Рассмотрение». Если условие выполняется (Истина), процесс пойдет по ветке 100%, если нет (Ложь) — по ветке 50%.

Способ №2: Переменные бизнес-процесса

Если вам не нужно хранить информацию об оплате в самой карточке документа, а она нужна только для логики прохождения конкретного процесса, лучше использовать Переменные процесса. Рассмотрим этот вариант подробнее.

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

Способ №3: Использование выражений на языке 1С (Для сложных случаев)

Иногда требуется более сложная логика, которую невозможно описать в конструкторе. В 1С:Документооборот КОРП предусмотрена возможность написания кода прямо в пользовательском интерфейсе. Разберем ситуацию, когда нам все же нужно программно проверить значение дополнительного реквизита.

Создадим новое условие маршрутизации и выберем способ настройки Выражение на языке 1С. Проанализируем пример кода, который проверяет значение нашего доп. реквизита:


// Переменная Результат определяет, куда пойдет процесс (Истина/Ложь)
Результат = Ложь;

// Получаем значение дополнительного реквизита "Процент оплаты"
// Предмет - это наш документ, по которому запущен процесс
Для Каждого СтрокаРеквизита Из Предмет.ДополнительныеРеквизиты Цикл
    Если СтрокаРеквизита.Свойство.Заголовок = "Процент оплаты" Тогда
        Если СтрокаРеквизита.Значение.Наименование = "Оплата 100%" Тогда
            Результат = Истина;
            Прервать;
        КонецЕсли;
    КонецЕсли;
КонецЦикла;

Этот скрипт перебирает все дополнительные реквизиты предмета, находит нужный по заголовку и проверяет его значение. Важно помнить, что поиск по строковому заголовку "Процент оплаты" чувствителен к регистру и пробелам.

Автоматизация проверки заполнения

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

Этот обработчик перед завершением задачи проверит, заполнено ли поле Процент оплаты в предмете процесса. Если поле пустое, система выдаст предупреждение: «Пожалуйста, укажите процент оплаты перед завершением задачи», и не даст закрыть задачу.

Рассмотрим пример кода для такого обработчика:


// Проверка заполнения реквизита перед выполнением задачи
НайденныйРеквизит = Ложь;
Для Каждого ТекСтрока Из Предмет.ДополнительныеРеквизиты Цикл
    Если ТекСтрока.Свойство.Заголовок = "Процент оплаты" И ЗначениеЗаполнено(ТекСтрока.Значение) Тогда
        НайденныйРеквизит = Истина;
    КонецЕсли;
КонецЦикла;

Если Не НайденныйРеквизит Тогда
    ТекстОшибки = "Необходимо заполнить дополнительный реквизит 'Процент оплаты' в карточке документа!";
    Отказ = Истина;
КонецЕсли;

Подведем итоги

Мы выяснили, что настройка маршрутизации через комментарии — крайне рискованное решение. Использование Дополнительных реквизитов в сочетании с Конструктором условий предоставляет следующие преимущества:

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

← На главную