В процессе документооборота часто возникает ситуация, когда исполнитель должен прикрепить результат своей работы в виде файла (скан-копия, отчет, проект договора) перед тем, как завершить задачу — для этого подойдёт прикрепление файлов в 1С со смартфона. Если система позволяет просто нажать кнопку «Выполнено» без добавления документа, это может привести к нарушению бизнес-логики и потере данных. В данной статье мы разберем, как ограничить выполнение задачи, если файл не прикреплен, используя стандартные настройки и программные методы.
Рассмотрим наиболее простой и эффективный способ настройки в версии 2.1, который не требует написания кода (помочь в этом могут также условия добавления файлов). Этот метод основан на механизме комплексных процессов. Разберем по шагам, как заставить систему требовать файл на конкретном этапе процесса — для этого подойдёт проверка данных и контроль заполнения объектов.
Шаблон комплексного процесса, в рамках которого работает ваша задача (в ряде случаев полезно перенести необходимые скрипты заполнения шаблона файла от других видов документов).Файл. Чтобы не настраивать всё вручную, можно скопировать правила заполнения для файлов.Проанализируем, как это работает для пользователя: когда сотрудник нажимает кнопку «Выполнено», система проверяет наличие связи задачи с предметом типа «Файл». Если файл не выбран или не загружен, 1С выдаст системную ошибку и не даст завершить задачу, пока условие не будет выполнено. Важный нюанс: эта настройка будет действовать для всех процессов, созданных по данному шаблону. Если файл нужен только в 90% случаев, пользователю все равно придется что-то прикрепить, чтобы «проскочить» проверку.
В версии 3.0 механизмы существенно изменились. Вместо жестких связей в шаблонах мы можем использовать гибкий инструмент — Правила проверки данных. Это концепция low-code, позволяющая задавать логику без внесения изменений в конфигуратор.
Выясним, как настроить проверку в новой версии (поможет конструктор контроля ввода данных без программирования):
Задача или конкретное действие (например, Исполнение).Количество() = 0, то срабатывает запрет.Такой подход позволяет настраивать проверку очень точечно: для конкретных видов документов, ролей или даже подразделений.
Если стандартных настроек недостаточно или требуется сложная проверка (например, проверка формата файла или его имени), мы можем воспользоваться программными обработчиками. Рассмотрим ситуацию, когда нам нужно прервать выполнение задачи через скрипт «Перед выполнением».
Разберем пример кода, который проверяет наличие файлов у основного предмета задачи:
// Получаем основной предмет задачи
Предмет = ЗадачаОбъект.Предметы[0].Предмет;
// Запрос для поиска прикрепленных файлов
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| КОЛИЧЕСТВО(Файлы.Ссылка) КАК КолВо
|ИЗ
| Справочник.Файлы КАК Файлы
|ГДЕ
| Файлы.ВладелецФайла = &Владелец";
Запрос.УстановитьПараметр("Владелец", Предмет);
Результат = Запрос.Выполнить().Выгрузить();
Если Результат[0].КолВо = 0 Тогда
// Выводим сообщение пользователю и отменяем выполнение
ТекстСообщения = "Ошибка: Вы не прикрепили ни одного файла к документу!";
ОбщегоНазначенияКлиентСервер.СообщитьПользователю(ТекстСообщения);
Отказ = Истина;
КонецЕсли;
Использование флага Отказ = Истина в событии ПередВыполнением — это единственный надежный способ остановить транзакцию записи задачи в базу данных. В этом случае задача останется у пользователя в списке «В работе».
Посмотрим на ситуацию под другим углом. Если мы не хотим блокировать саму кнопку, мы можем настроить «петлю» в маршруте процесса. Разберем этот сценарий:
Этот метод психологически дисциплинирует сотрудников. Как показывает практика, после второй или третьей «возвращенной» задачей пользователи привыкают прикреплять файлы сразу.
Проанализируем несколько тонких моментов, которые могут повлиять на корректность проверки:
Файлы, она может не увидеть скан-копию, которая хранится в отдельном реквизите. Убедитесь, что алгоритм учитывает все места хранения.Заполняемых предметов, так как он поддерживается мобильной платформой «из коробки».Таким образом, мы рассмотрели различные подходы к контролю наличия файлов. Для простых случаев идеально подходят заполняемые предметы, для сложных бизнес-сценариев в новых версиях — правила проверки данных, а для специфических требований всегда остается возможность написания скриптов.