Представьте стандартную рабочую ситуацию: пользователь открывает привычный журнал «Документы продажи (все)» в конфигурации «1С:Управление торговлей 11» (или аналогичных решениях нового поколения, таких как ERP 2 или Комплексная автоматизация 2), чтобы проверить недавние отгрузки. Но вместо сотен документов за текущий год он видит пустой экран или всего несколько старых записей многолетней давности. При этом документы физически существуют в базе данных: их можно найти через глобальный поиск, открыть из панели «История», увидеть в структуре подчиненности или в отчетах по продажам. Они не помечены на удаление, они проведены, но в общем списке их просто нет.
В этой статье мы подробно разберем, почему возникает эта техническая иллюзия исчезновения документов, проанализируем архитектурные особенности современных конфигураций 1С и изучим пошаговые методы полного восстановления нормального отображения журналов документов.
В старых версиях программ 1С (например, Управление производственным предприятием 1.3 или Управление торговлей 10.3) динамические списки в журналах документов строились напрямую по таблицам базы данных соответствующих документов. Если существовал документ РеализацияТоваровУслуг, он гарантированно выводился в список, если не было жестких отборов.
В современных конфигурациях ERP-класса разработчики применили совершенно иной подход для оптимизации быстродействия системы. Список «Документы продажи» (а также «Документы закупки», «Внутренние документы») представляет собой сложный динамический список, который физически строится на основе данных специального вспомогательного регистра — Регистра сведений «Реестр документов» (РегистрСведений.РеестрДокументов).
Этот регистр аккумулирует в себе ключевые метаданные обо всех операциях: дату, номер, сумму, организацию, контрагента, договор, статус и тип документа. Когда пользователь открывает журнал продаж, программа обращается не к самим документам, а к этому регистру. Это позволяет мгновенно строить объединенные реестры по десяткам различных видов документов без снижения производительности СУБД.
Следовательно, если документ физически существует в базе, но отсутствует в списке, это означает только одно: в регистре сведений «Реестр документов» по какой-то причине отсутствует или повреждена запись, соответствующая этому документу.
Рассмотрим основные причины, которые приводят к рассинхронизации данных между документами и реестром:
РеестрДокументов тесно связан со служебным справочником КлючиРеестраДокументов. При записи или проведении любого документа система автоматически генерирует уникальные аналитические ключи. Если в справочнике ключей произошел сбой (например, появились дубли из-за некорректного распределенного обмена данными или сбоя СУБД), новые записи в реестр просто не могут физически записаться.ОбменДанными.Загрузка = Истина, то стандартные подписки на события и процедуры ПередЗаписью и ПриЗаписи игнорируются. Как результат — документ в базе есть, а запись в реестр документов не создана.---
Рассмотрим пошагово практические сценарии исправления ситуации — от простых диагностических действий до глубокого технического восстановления данных.
Для начала нам необходимо убедиться, действительно ли дело в регистре «Реестр документов». Проведем простую проверку:
Если в открывшемся регистре записей по документу нет, значит, мы верно диагностировали проблему. Переходим к процедурам восстановления.
В большинстве случаев проблема кроется в повреждении структуры ключей. Разработчики 1С предусмотрели штатный механизм для исправления подобных коллизий. Выполним следующие действия:
КлючиРеестраДокументов.Важно: Процесс генерации ключей на крупных информационных базах может занять значительное время и создать существенную нагрузку на сервер СУБД. Рекомендуется выполнять эту операцию в периоды минимальной активности пользователей.
Если документы пропали выборочно (например, только за конкретный месяц или созданные определенным пользователем), мы можем заставить систему принудительно перезаписать эти документы. При перезаписи документа в обычном режиме платформа автоматически выполнит подписку на событие записи и сформирует корректную строчку в регистре сведений РеестрДокументов.
Для массовой перезаписи без изменения реквизитов воспользуемся стандартным инструментом:
Реализация товаров и услуг.Система поочередно откроет, перезапишет и закроет каждый выбранный документ, попутно генерируя правильные записи в регистре реестра.
Если у вас есть доступ к консоли кода или групповой обработке с возможностью выполнения произвольного алгоритма на встроенном языке 1С, вы можете выполнить принудительное обновление реестра программно. Разберем шаблон кода, выполняющий эту операцию порционно с контролем транзакций:
Выборка = Документы.РеализацияТоваровУслуг.Выбрать(НачалоДня(ТекущаяДата() - 30), КонецДня(ТекущаяДата()));
Пока Выборка.Следующий() Цикл
// Проверим, заблокирован ли объект, чтобы не прерывать выполнение всей обработки
Попытка
ДокОбъект = Выборка.ПолучитьОбъект();
// Отключаем режим загрузки, чтобы отработали все подписки на события регистра
ДокОбъект.ОбменДанными.Загрузка = Ложь;
// Записываем документ в режиме проведения, если он был проведен
Если ДокОбъект.Проведен Тогда
ДокОбъект.Записать(РежимЗаписиДокумента.Проведение);
Иначе
ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
EndIf;
Исключение
ЗаписьЖурналаРегистрации("ОшибкаПерезаписиРеестра",
УровеньЖурналаРегистрации.Ошибка, , ,
"Не удалось перезаписать документ: " + Выборка.Ссылка + ". Ошибка: " + ОписаниеОшибки());
КонецПопытки;
КонецЦикла;
Если инцидент с пропажей документов произошел непосредственно после очередного обновления конфигурации, обязательно нужно проверить статус выполнения отложенных процедур обновления:
После успешного завершения всех процедур отложенного обновления документы должны автоматически вернуться в динамические списки.
Если вышеописанные действия не помогли, а под учетной записью администратора с полными правами документы в списке отображаются корректно, проблема кроется в механизмах RLS или индивидуальном кэше настроек пользователя.
Проанализируем и исправим настройки видимости:
Систематическое выполнение этих шагов гарантирует полное восстановление нормального функционирования динамических списков документов продажи в любой современной конфигурации на платформе 1С:Предприятие 8.3.