Почему документ в 1С стал распроведенным без события «Отмена проведения» в журнале регистрации?

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

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

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

Физика процесса: почему в журнале нет события отмены проведения?

Для начала разберем стандартное поведение платформы. Когда пользователь интерактивно нажимает кнопку «Отменить проведение», система выполняет транзакцию записи с явным указанием режима записи. В этот момент вызывается обработчик события ОбработкаУдаленияПроведения() в модуле документа, очищаются движения по регистрам, а в журнал регистрации записывается системное событие «Данные. Отмена проведения».

Однако существует альтернативный технический сценарий, при котором документ переводится в статус «Не проведен», но платформа фиксирует это событие исключительно как «Данные. Изменение». Рассмотрим подробнее, как это реализуется на практике.

Сценарий 1: Программная перезапись реквизита «Проведен»

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


ДокументОбъект = СсылкаНаНакладную.ПолучитьОбъект();
ДокументОбъект.Проведен = Ложь;
ДокументОбъект.Записать(РежимЗаписиДокумента.Запись);

Проанализируем, что происходит на уровне платформы при выполнении этого кода:

  1. Платформа записывает документ в обычном режиме Запись (а не в режиме ОтменаПроведения).
  2. Для системы это выглядит как обычное редактирование текстового поля или любого другого реквизита. Соответственно, в журнал регистрации пишется событие «Данные. Изменение».
  3. Важно понимать, что при такой записи системное событие ОбработкаУдаленияПроведения() в модуле документа не вызывается!
  4. Флаг проведения в шапке документа сбрасывается в значение Ложь. При этом движения по регистрам накопления и сведений могут остаться «зависшими» в базе данных, если в конфигурации или подписках на события не прописано принудительное очищение наборов записей при обычной записи.

Сценарий 2: Использование режима загрузки данных (ОбменДанными.Загрузка = Истина)

Если в вашей системе настроена синхронизация данных (например, между «1С:Управление торговлей» и «1С:Бухгалтерия» или с мобильным приложением/сайтом), то перенос документов выполняется в специальном режиме.

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

Сценарий 3: Интерактивное применение обработки «Групповое изменение реквизитов»

Администраторы систем часто прибегают к стандартной обработке «Групповое изменение реквизитов» (входит в состав БСП). По умолчанию служебные реквизиты в ней скрыты, но через меню настроек их отображение можно легко включить.

Если пользователь с правами администратора выберет целевой документ, найдет в списке реквизитов поле Проведен и установит его в значение Ложь, обработка выполнит запись объекта. С точки зрения платформы это будет ровно тот же самый процесс, который мы описали в Сценарии 1. В журнале регистрации появится запись об изменении документа этим администратором, но никакого упоминания об отмене проведения там не будет.

Пошаговая методика расследования инцидента

Если вы столкнулись с подобным «волшебством», предлагаем выполнить следующие шаги для локализации и устранения проблемы.

Шаг 1. Глубокий анализ Журнала Регистрации

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

  1. Установите отбор по конкретной ссылке на документ (в поле «Данные»).
  2. Полностью очистите отбор по событиям (должны выводиться все события: изменение, проведение, создание, транзакции).
  3. Очистите фильтр по периоду или задайте заведомо широкий интервал времени.
  4. Найдите записи с событием «Данные. Изменение», которые были зафиксированы после последнего успешного проведения документа.
  5. Внимательно изучите колонки «Пользователь», «Приложение» и «Сеанс». Если в колонке «Приложение» указано Фоновое задание или COM-соединение, то изменение пришло через обмены. Если указан конкретный пользователь, обратите внимание на время проведения операции — возможно, в это время выполнялась регламентная обработка под его учетной записью.

Шаг 2. Проверка движений документа по регистрам

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

Шаг 3. Использование механизма версионирования (История изменений)

В типовой конфигурации «1С:Управление торговлей 11» встроена мощная система версионирования объектов БСП. Если она была включена для данного вида документов:

  1. Перейдите в форму документа, нажмите кнопку «История изменений» (или перейдите к ней через меню «Еще» -> «История изменений»).
  2. Сравните версию документа непосредственно перед «распроведением» и версию, которая была записана в момент инцидента.
  3. Версионирование наглядно покажет: в какой именно момент реквизит Проведен изменил свое значение с Истина на Ложь, какой пользователь записал эту версию, и какие еще реквизиты были изменены параллельно.

Как предотвратить подобные ситуации в будущем?

Чтобы исключить появление «необъяснимых» изменений в базе данных, рекомендуем придерживаться следующих правил:

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

← На главную