Почему документы пропадают из журналов 1С после тестирования и исправления и как их вернуть?

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

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

Выясняем причину: механизм работы регистра «Реестр документов»

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

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

Способ 1. Программное восстановление записей регистра

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

Мы можем создать внешнюю обработку и программно вызвать методы обновления данных. Для этого нам понадобится менеджер соответствующего регистра. Разберем пример кода для массового восстановления данных:


// Пример программного восстановления записей для типа документа "РеализацияТоваровУслуг"
Запрос = Новый Запрос;
Запрос.Текст = 
    "ВЫБРАТЬ
    |	РеализацияТоваровУслуг.Ссылка КАК Ссылка
    |ИЗ
    |	Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
    |ГДЕ
    |	РеализацияТоваровУслуг.Проведен = ИСТИНА";

РезультатЗапроса = Запрос.Выполнить();
Выборка = РезультатЗапроса.Выбрать();

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

Этот метод является наиболее безопасным, так как он не затрагивает расширения и не требует удаления данных. Однако он требует наличия навыков программирования и доступа к консоли кода.

Способ 2. Работа с метаданными расширений (Кардинальный метод)

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

  1. Перенос реквизитов: Создадим в основной конфигурации реквизиты с теми же типами, которые были добавлены в расширении.
  2. Перенос данных: С помощью несложной обработки скопируем значения из реквизитов расширения в новые реквизиты основной конфигурации.
  3. Удаление из расширения: Удалим добавленные реквизиты из расширения конфигурации.
  4. Тестирование и исправление: Запустим ТиС с установленным флагом Реструктуризация таблиц информационной базы и Проверка логической целостности.

После выполнения этих действий и повторного ТиС платформа корректно пересоберет индексы, и документы снова появятся в реестрах. Это происходит потому, что исчезает необходимость «склеивать» таблицы из разных источников (основная база + расширение) при заполнении служебных регистров.

Способ 3. Обновление платформы и очистка серверного кэша

Проанализируем ситуацию с версией платформы. Ошибки реструктуризации были признаны разработчиками 1С и исправлены в более поздних версиях. Если вы используете платформу ниже 8.3.17.х, настоятельно рекомендуем выполнить обновление до актуальных релизов (например, 8.3.20 или 8.3.22).

Иногда записи в журналах не видны из-за некорректного кэша сервера приложений. Выполним следующие действия:

В некоторых случаях после обновления платформы и очистки кэша достаточно просто выполнить повторное ТиС (только «Исправление ссылочной целостности»), чтобы документы вернулись в списки.

Способ 4. Использование типовой обработки БСП

В конфигурациях, использующих актуальные версии Библиотеки стандартных подсистем, предусмотрена встроенная обработка для обслуживания этого регистра. Чтобы найти её, выполним следующие шаги:

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

Резюме

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

← На главную