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

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

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

Различие между «Файлом» и «Предметом»: корень проблемы

Прежде всего, проанализируем важный технический нюанс, который часто упускают администраторы системы. В 1С:ДО есть два разных объекта:

  1. Файл — это конкретный объект (Word, PDF, JPG), который «живет» внутри карточки документа.
  2. Предмет — это ссылка на документ в табличной части бизнес-процесса.

Когда мы устанавливаем галочку Запрещать удалять файлы в настройках вида документа, система блокирует удаление именно файлов из карточки документа. Однако, когда автор заходит в карточку бизнес-процесса (БП) и нажимает Delete на строке с документом, он не удаляет сам документ или файл — он разрывает связь между процессом и этим документом. С точки зрения системы это изменение данных бизнес-процесса, а не документа. Именно поэтому настройки прав доступа к документу здесь могут не помочь. Рассмотрим, как решить эту задачу по шагам.

Способ 1. Настройка доступности по состоянию документа

Это первое, что необходимо проверить. Если документ находится в определенном состоянии (например, «На согласовании» или «Зарегистрирован»), система может блокировать любые действия с ним, включая изменение его связей. Выясним, как это настроить правильно:

  1. Перейдем в раздел Нормативно-справочная информация — Виды документов.
  2. Откроем нужный вид документа и перейдем на закладку Настройки.
  3. Убедимся, что включена опция Использовать состояния документов.
  4. Проверим наличие флажка Ограничивать доступность полей по состоянию.
  5. Нажмем на гиперссылку Настроить рядом с этой опцией.

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

Важный момент: Проанализируем состояние «Зарегистрирован». Часто пользователи оставляют его открытым для редактирования, что позволяет удалять связи. Для полной защиты рекомендуется закрывать редактирование во всех состояниях, кроме «Проект».

Способ 2. Ограничение прав в шаблоне бизнес-процесса

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

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

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

Способ 3. Использование функционала версии 3.0 (Правила обработки)

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

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

Способ 4. Техническое решение через подписки на события (для программистов)

Если типовых настроек в версии 2.1 недостаточно, а автор БП продолжает «заметать следы», удаляя предметы, разберем программный способ защиты. Нам поможет создание подписки на событие ПередЗаписью для объекта БизнесПроцесс (или конкретных его видов, например, БизнесПроцесс.Исполнение).

Проанализируем логику кода, которую можно внедрить:


Процедура ПриЗаписиБизнесПроцессаПередЗаписью(Источник, Отказ) Экспорт
    
    // Если это новый процесс, проверка не нужна
    Если Источник.ЭтоНовый() Тогда
        Возврат;
    КонецЕсли;

    // Получаем текущее состояние предметов из базы
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ Предмет Из БизнесПроцесс.Исполнение.Предметы ГДЕ Ссылка = &Ссылка";
    Запрос.УстановитьПараметр("Ссылка", Источник.Ссылка);
    ТаблицаСтарыхПредметов = Запрос.Выполнить().Выгрузить();

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

КонецПроцедуры

Такой подход гарантирует 100% защиту, так как он работает на уровне платформы, игнорируя визуальные кнопки интерфейса Delete.

Аудит и контроль: как проверить, кто удалил?

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

  1. Перейдем в раздел Настройка и администрация — Протокол работы пользователей.
  2. Установим фильтр по объекту (конкретный бизнес-процесс).
  3. Найдем событие Изменение. В деталях записи будет видно, какие строки табличной части были удалены.

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

Рекомендации по настройке Полномочий

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

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

← На главную