Что делать, если документы пропали из журнала документов 1С при их фактическом наличии в базе?

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

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

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

Прежде чем переходить к активным действиям, проанализируем ситуацию. В современных конфигурациях 1С (УТ 11, КА 2, ERP) журналы документов строятся не только на классическом механизме ЖурналДокументов, но и на вспомогательном регистре сведений Реестр документов. Динамический список в журнале обращается именно к этому регистру для ускорения работы. Если связь между физической таблицей документа и записью в регистре (или таблицей журнала) нарушается, документ становится «невидимкой» для общего списка.

Способ 1. Использование типовой обработки «Исправление реестра документов»

Если вы работаете в конфигурациях на базе 1С:ERP или Управление торговлей 11, первым делом следует проверить состояние реестра. Разберем по шагам, как запустить процедуру восстановления:

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

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

Способ 2. Принудительная реструктуризация таблиц журнала

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

Проанализируем алгоритм действий:

  1. Зайдем в Конфигуратор и создадим резервную копию базы (обязательно!).
  2. Найдем проблемный ЖурналДокументов в дереве метаданных.
  3. Перейдем на закладку Графы и добавим новую временную графу (например, с именем ВременнаяГрафа).
  4. В свойствах этой графы на вкладке Данные выберем любой реквизит из любого документа, входящего в этот журнал.
  5. Нажмем F7 для обновления конфигурации базы данных.

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

Способ 3. Программная перезапись документов (Массовое обновление)

Иногда записи в журналах не обновляются из-за того, что объект не был должным образом зарегистрирован в таблицах итогов. Мы можем инициировать событие записи для всех проблемных документов программно. Рассмотрим, как это сделать без ручного перепроведения каждого чека или накладной.

Воспользуемся стандартной обработкой Групповое изменение реквизитов:

  1. Выберем тип документа (например, Реализация товаров и услуг).
  2. Установим отбор по периоду, когда документы пропали из журнала.
  3. Нажмем кнопку Дополнительные параметры и установим флажок Выполнять в транзакции.
  4. Важно: Никакие реквизиты менять не нужно! Просто нажмите кнопку Изменить реквизиты.

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


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

Способ 4. Работа с расширениями конфигурации

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

Посмотрим на решение в этом контексте:

Способ 5. Тестирование и исправление (ТиИ) с особыми параметрами

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

  1. Реиндексация таблиц информационной базы — исправит ошибки в индексах, по которым строятся динамические списки.
  2. Пересчет итогов — актуально, если журнал опирается на регистры.
  3. Реструктуризация таблиц информационной базы — самый мощный инструмент, который фактически пересоздает все таблицы БД на основе метаданных.

Если база файловая, перед запуском ТиИ обязательно выполните проверку утилитой chdbf.exe, так как логические ошибки в файле 1Cv8.1CD могут блокировать работу встроенных механизмов исправления.

Дополнительные рекомендации для серверных баз (SQL)

Если проблема возникла в клиент-серверном варианте, проанализируем состояние серверного кэша. Даже после исправления таблиц SQL, сервер 1С может продолжать «отдавать» пустой список из своей оперативной памяти.

Выполним следующие действия:

  1. Остановим службу сервера 1С:Предприятие.
  2. Перейдем в каталог C:\Program Files\1cv8\srvinfo\reg_1541\ (путь может отличаться).
  3. Найдем папку с GUID вашей базы и очистим в ней содержимое папки snccntx. Там хранятся данные сеансов и кэш динамических списков.
  4. Запустим службу сервера.

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

← На главную