Как удалить помеченные объекты во входящих документах 1С:Документооборот 2.1, если они не видны в списке?

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

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

Выясним причину: почему документы «исчезают» из списка?

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

  1. Ограничение прав доступа (RLS): Ваших прав достаточно, чтобы запустить системную обработку удаления, которая видит все помеченные записи в таблице базы данных, но недостаточно для отображения этих записей в основной форме списка. Например, вы не включены в рабочую группу документа.
  2. Настройки фильтрации: В современных версиях «1С:Документооборот» формы списков могут быть настроены так, чтобы по умолчанию скрывать объекты с пометкой на удаление.
  3. Логическая структура: Документ может находиться в специфическом состоянии (например, перенесен в «Корзину» в кастомизированных решениях), которое исключает его из стандартных динамических списков.

Разберем разницу между платформенным и прикладным удалением

Одной из ключевых ошибок является использование стандартного платформенного функционала «Все функции» (или «Функции для технического специалиста») -> Удаление помеченных объектов. Рассмотрим подробнее, почему разработчики 1С рекомендуют использовать встроенную в конфигурацию обработку.

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

Прикладная обработка (БСП) находится в разделе Администрирование — Обслуживание — Удаление помеченных объектов. Она обладает рядом преимуществ:

Проанализируем скрытые зависимости в 1С:Документооборот

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

  1. Бизнес-процессы и задачи: Это самая частая причина. Если по входящему документу был запущен любой процесс (Исполнение, Ознакомление, Согласование), документ нельзя удалить, пока живы эти процессы. При этом задачи могут быть завершены, но ссылка в регистре или в самом объекте задачи останется.
  2. Регистры сведений: Сведения о прочтении, записи в журнале передачи, записи в регистре Связи документов.
  3. Тома хранения файлов: Если к документу прикреплен файл, который хранится на диске (в томах), 1С пытается удалить и запись в базе, и физический файл. Если файл на диске заблокирован антивирусом, удален вручную или к папке нет доступа по сети, возникнет ошибка удаления.

Шаг 1: Подготовка базы через «Тестирование и исправление»

Если система сообщает об ошибках, но не показывает конкретных ссылок, или если объекты кажутся «битыми», необходимо выполнить техническое обслуживание в Конфигураторе. Разберем по шагам, как это сделать:

  1. Обязательно создайте резервную копию базы данных.
  2. Зайдите в Конфигуратор под правами администратора.
  3. Перейдите в меню Администрирование — Тестирование и исправление....
  4. Установите следующие настройки:
    • Реиндексация таблиц информационной базы.
    • Проверка ссылочной целостности.
    • При наличии ссылок на несуществующие объекты: выберите Очищать ссылки.
    • При частичной потере данных объектов: выберите Удалять объект.
  5. Нажмите «Выполнить».

После завершения процесса вернитесь в режим «1С:Предприятие» и повторите попытку удаления через встроенную обработку Администрирование — Удаление помеченных объектов.

Шаг 2: Программный поиск блокирующих ссылок

Иногда полезно программно посмотреть, что именно держит наш объект. Рассмотрим пример кода, который можно запустить во внешней обработке, чтобы вывести все места, где упоминается наш документ:


// Выберем ссылку на документ, который не получается удалить
СсылкаНаОбъект = Справочники.ВходящиеДокументы.НайтиПоРеквизиту("РегистрационныйНомер", "123-А");

// Получим таблицу всех ссылок на данный объект
ТаблицаСсылок = НайтиПоСсылкам(Новый Массив(СсылкаНаОбъект));

// Проанализируем результат
Для Каждого СтрокаСсылки Из ТаблицаСсылок Цикл
    Сообщить("Объект " + СтрокаСсылки.Данные + " содержит ссылку в поле: " + СтрокаСсылки.Метаданные.Имя);
КонецЦикла;

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

Шаг 3: Радикальное решение (Прямое удаление)

Если стандартные методы бессильны, и вы уверены, что удаление объекта не нарушит логику системы, можно воспользоваться методом Удалить(). Внимание: этот метод игнорирует контроль ссылочной целостности и может оставить «битые» ссылки в базе (объекты с текстом <Объект не найден>).

Посмотрим, как это реализовать технически:


Процедура УдалитьОбъектБезПроверок(ДокументСсылка) Экспорт
    ОбъектДляУдаления = ДокументСсылка.ПолучитьОбъект();
    Если ОбъектДляУдаления <> Неопределено Тогда
        ОбъектДляУдаления.ОбменДанными.Загрузка = Истина; // Отключаем лишние проверки
        ОбъектДляУдаления.Удалить();
        Сообщить("Объект успешно удален непосредственно из базы.");
    КонецЕсли;
КонецПроцедуры

Использование флага ОбменДанными.Загрузка = Истина позволяет обойти большинство прикладных проверок в модуле объекта (например, запрет изменения состояния или проверку прав), что часто помогает при «зависших» документах.

Резюме и рекомендации

Подведем итог нашему исследованию проблемы удаления в 1С:Документооборот 2.1:

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

← На главную