В работе с конфигурацией 1С:Документооборот часто возникают ситуации, когда актуальный статус документа, отображаемый в интерфейсе, не соответствует действительности. Одной из наиболее сложных проблем является самопроизвольное исчезновение записей из регистра сведений ТекущиеСостоянияДокументов. Рассмотрим детально, почему это происходит и как выявить причину, когда стандартный журнал регистрации не показывает действий пользователей.
Регистр ТекущиеСостоянияДокументов является ключевым инструментом для быстрого отображения актуального статуса в списках документов. Важно понимать, что этот регистр не является первичным источником данных — он лишь «зеркало», которое должно обновляться при любых изменениях в жизни документа или его бизнес-процесса. Его актуальность поддерживается механизмом подписок на события и фоновыми заданиями.
Когда вы уверены, что пользователи не удаляли записи вручную, следует проанализировать следующие технические аспекты:
Делопроизводство.УдалитьСостояниеДокумента(Документ, Ссылка). Если этот код отрабатывает в контексте системы, например, при пометке документа на удаление или при некорректном завершении процесса, запись из регистра будет удалена автоматически.БизнесПроцессы или Документы, они могут конфликтовать со стандартным кодом обновления состояний. Часто бывает так, что сторонний код перехватывает событие ПриЗаписи и выполняет свои действия, не учитывая целостность регистра ТекущиеСостоянияДокументов.Чтобы найти истинную причину проблемы, разберем по шагам план действий:
Шаг 1. Анализ кода с помощью отладчика.
Поставьте точку остановки в процедуре, где может происходить удаление данных. Найдите вызовы метода УдалитьСостояниеДокумента. Используйте отладчик 1С для отслеживания стека вызовов в момент, когда запись исчезает. Это поможет понять, какой именно алгоритм инициировал удаление.
Шаг 2. Использование технологического журнала.
Поскольку стандартный журнал регистрации может не зафиксировать сбой на уровне SQL, настройте Технологический журнал. Включите события EXCP (ошибки) и DBMSSQL (запросы к SQL). Это позволит выявить ошибки транзакций и блокировки, которые происходят «под капотом» платформы.
Шаг 3. Проверка целостности данных.
Запустите встроенную обработку Тестирование и исправление на копии базы данных. Обратите внимание на ошибки в объектах РегистрыСведений. Также используйте отчеты по проверке целостности данных, которые предоставляет подсистема Документооборота в разделе администрирования.
Шаг 4. Анализ фоновых заданий.
Проверьте статус регламентных заданий, отвечающих за обновление состояний (например, АктуализацияСостоянийДокументов). Если задание завершается с ошибкой (например, Нехватка памяти или Таймаут), это может быть причиной того, что записи не обновляются или удаляются некорректно.
Для понимания того, как система управляет состояниями, посмотрите на пример логики в модулях конфигурации:
// Пример того, как вызывается процедура очистки состояния
Процедура ПриУдаленииОбъекта(Документ)
Если ЗначениеЗаполнено(Документ) Тогда
// Проверка прав и выполнение удаления из регистра
Делопроизводство.УдалитьСостояниеДокумента(Документ, Документ.Ссылка);
КонецЕсли;
КонецПроцедуры
Анализируя такие вызовы в модулях менеджеров документов или в общих модулях, вы сможете обнаружить «неочевидные» точки очистки данных. Мы рекомендуем последовательно отключать расширения, если они есть, чтобы убедиться, что проблема не на стороне дополнительного кода.
Проблема исчезновения состояний редко является «магией». В 1С:Документооборот это почти всегда результат срабатывания стандартных процедур Делопроизводство при прерывании бизнес-процессов или ошибки транзакции из-за блокировок СУБД. Используйте Технологический журнал для фиксации событий, которые не попадают в обычный журнал, и вы быстро найдете источник «тихого» удаления записей.