Как настроить обязательную проверку наличия файла перед выполнением задачи в 1С:Документооборот

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

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

Решение для 1С:Документооборот 2.1: Использование заполняемых предметов

Рассмотрим наиболее простой и эффективный способ настройки в версии 2.1, который не требует написания кода (помочь в этом могут также условия добавления файлов). Этот метод основан на механизме комплексных процессов. Разберем по шагам, как заставить систему требовать файл на конкретном этапе процесса — для этого подойдёт проверка данных и контроль заполнения объектов.

  1. Откроем Шаблон комплексного процесса, в рамках которого работает ваша задача (в ряде случаев полезно перенести необходимые скрипты заполнения шаблона файла от других видов документов).
  2. Перейдем на закладку «Предметы». Здесь необходимо добавить новый предмет, который будет иметь тип Файл. Чтобы не настраивать всё вручную, можно скопировать правила заполнения для файлов.
  3. В колонке «Заполнение» укажем значение «Обязательное», чтобы избежать ошибок при проверке заполнения файла по шаблону.
  4. Теперь перейдем к настройке схемы самого процесса. В списке задач найдем ту, на которой исполнитель должен добавить файл.
  5. В настройках этой задачи укажем, что именно этот предмет (наш файл) должен быть заполнен именно на данном этапе.

Проанализируем, как это работает для пользователя: когда сотрудник нажимает кнопку «Выполнено», система проверяет наличие связи задачи с предметом типа «Файл». Если файл не выбран или не загружен, 1С выдаст системную ошибку и не даст завершить задачу, пока условие не будет выполнено. Важный нюанс: эта настройка будет действовать для всех процессов, созданных по данному шаблону. Если файл нужен только в 90% случаев, пользователю все равно придется что-то прикрепить, чтобы «проскочить» проверку.

Настройка в 1С:Документооборот 3.0: Правила проверки данных

В версии 3.0 механизмы существенно изменились. Вместо жестких связей в шаблонах мы можем использовать гибкий инструмент — Правила проверки данных. Это концепция low-code, позволяющая задавать логику без внесения изменений в конфигуратор.

Выясним, как настроить проверку в новой версии (поможет конструктор контроля ввода данных без программирования):

  1. Перейдем в раздел «Настройка и администрация» — «Правила проверки данных».
  2. Создадим новое правило — для этого подойдёт централизованное управление логикой контроля реквизитов. В качестве объекта проверки выберем Задача или конкретное действие (например, Исполнение).
  3. В конструкторе условий пропишем проверку наличия связанных файлов у предмета задачи. Мы можем проверить количество прикрепленных файлов: если Количество() = 0, то срабатывает запрет.
  4. В поле «Сообщение пользователю» введем понятный текст, например: «Невозможно выполнить задачу без прикрепленного файла отчета!».

Такой подход позволяет настраивать проверку очень точечно: для конкретных видов документов, ролей или даже подразделений.

Программный метод: Обработчики событий (скрипты)

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

Разберем пример кода, который проверяет наличие файлов у основного предмета задачи:


// Получаем основной предмет задачи
Предмет = ЗадачаОбъект.Предметы[0].Предмет;

// Запрос для поиска прикрепленных файлов
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	КОЛИЧЕСТВО(Файлы.Ссылка) КАК КолВо
    |ИЗ
    |	Справочник.Файлы КАК Файлы
    |ГДЕ
    |	Файлы.ВладелецФайла = &Владелец";

Запрос.УстановитьПараметр("Владелец", Предмет);
Результат = Запрос.Выполнить().Выгрузить();

Если Результат[0].КолВо = 0 Тогда
    // Выводим сообщение пользователю и отменяем выполнение
    ТекстСообщения = "Ошибка: Вы не прикрепили ни одного файла к документу!";
    ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
    Отказ = Истина;
КонецЕсли;

Использование флага Отказ = Истина в событии ПередВыполнением — это единственный надежный способ остановить транзакцию записи задачи в базу данных. В этом случае задача останется у пользователя в списке «В работе».

Альтернативный метод: Условия маршрутизации

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

  1. После задачи исполнителя в схеме процесса добавим элемент «Условие».
  2. В условии пропишем скрипт или выберем настройку, которая проверяет наличие файла.
  3. Если файл есть, процесс идет дальше к следующему участнику.
  4. Если файла нет, процесс возвращается обратно этому же исполнителю с автоматическим комментарием: «Файл не обнаружен, повторите выполнение».

Этот метод психологически дисциплинирует сотрудников. Как показывает практика, после второй или третьей «возвращенной» задачей пользователи привыкают прикреплять файлы сразу.

Важные технические нюансы и рекомендации

Проанализируем несколько тонких моментов, которые могут повлиять на корректность проверки:

Таким образом, мы рассмотрели различные подходы к контролю наличия файлов. Для простых случаев идеально подходят заполняемые предметы, для сложных бизнес-сценариев в новых версиях — правила проверки данных, а для специфических требований всегда остается возможность написания скриптов.

← На главную