Ситуация, когда после планового обновления конфигурации (например, 1С:УСО или 1С:УПП) внезапно исчезает самописный документ, существовавший в базе годами, является критической. Особенно остро проблема встает, если сбой заметили не сразу, а спустя неделю, когда пользователи уже ввели большой объем новых данных в другие разделы системы. Просто откатить базу к бэкапу в этом случае нельзя — это приведет к потере недельной работы всей компании.
В данной статье мы разберем комплексный подход к восстановлению структуры метаданных и самих данных, проанализируем причины возникновения ошибок SDBL и рассмотрим инструменты для корректного переноса документов вместе с их движениями по регистрам.
Разберем, почему документ мог пропасть. В системе 1С:Предприятие 8 метаданные хранятся в специальных системных таблицах (Config, DBSchema). Ошибка SDBL поле ID имеет тип REF SELF или ROWVersion обычно свидетельствует о серьезной рассинхронизации между логической структурой конфигурации и физическими таблицами в SQL-базе.
Рассмотрим основные причины такого сбоя:
DBSchema..cf или .cfu), исполнитель мог случайно снять галочку с самописного объекта, что привело к его удалению из метаданных при сохранении.Проанализируем сопутствующие ошибки. Сообщение неверная ссылка на владельца в справочнике БанковскиеСчета указывает на то, что реструктуризация затронула не только пропавший документ, но и базовые справочники (Контрагенты или Организации), нарушив целостность ссылочных связей.
Прежде чем пытаться загрузить данные из бэкапа, мы должны вернуть сам объект «Документ» в дерево конфигурации. Без наличия метаданных любая обработка загрузки данных просто не поймет, куда записывать информацию.
Выполним следующие действия:
.cf, выгруженный из бэкапа.Важный момент: Если после добавления документа платформа при попытке обновления конфигурации БД выдает ошибку SDBL, это означает, что физические таблицы в SQL конфликтуют с новыми метаданными. В этом случае может потребоваться сначала удалить «зависшие» таблицы документа в SQL Management Studio (только если вы уверены, что будете восстанавливать данные из бэкапа через XML).
После того как структура документа восстановлена в рабочей базе, нам нужно перенести сами документы и, что самое важное, их движения по регистрам. Если мы просто перенесем документы и попробуем их перепровести, это может исказить данные в закрытых периодах, так как алгоритмы проведения могли измениться или зависеть от состояния базы на тот момент.
Рассмотрим использование типовой обработки с ИТС — ВыгрузкаЗагрузкаДанныхXML.epf. Этот инструмент позволяет переносить объекты «как есть», сохраняя их уникальные идентификаторы (UUID) и записи в регистрах.
Пошаговый алгоритм работы:
РаспределениеТЗР).Проанализируем результат. После загрузки документы появятся в списке. Проверьте их движения через кнопку «Результат проведения». Если флаг выгрузки движений был установлен, вы увидите все 15 регистров (партионные, бухгалтерские и т.д.) заполненными данными из бэкапа.
Если после восстановления документов Тестирование и Исправление (ТиИС) продолжает выдавать ошибки типа неверная ссылка на владельца для банковских счетов, воспользуемся обработкой «Универсальные подбор и обработка объектов».
Рассмотрим, как исправить «битые» ссылки на владельцев:
СправочникСсылка.БанковскиеСчета.Владелец — Не заполнено (или укажем конкретные счета, на которые ругался ТиИС).Владелец и выберем правильного контрагента или организацию.Это позволит восстановить логическую связь в базе без удаления объектов. Если владельца определить невозможно, можно воспользоваться методом «Поиск и замена значений», чтобы перебросить ссылки с «битых» объектов на корректные.
Если объем данных очень велик или XML-выгрузка работает нестабильно, можно рассмотреть метод временного создания Распределенной Информационной Базы (РИБ).
Разберем этот способ подробнее:
РегистрацияИзмененийДляОбменаДанными зарегистрируем только нужные нам документы с движениями.Этот метод считается более «продвинутым», так как он использует штатные механизмы платформы для синхронизации объектов.
Чтобы избежать повторения инцидента, проанализируем регламент обновлений:
1. Всегда делайте архивную копию непосредственно перед нажатием кнопки «Принять изменения» в конфигураторе. Обновление конфигурации БД — это точка невозврата.
2. Откажитесь от динамических обновлений в крупных базах (УСО, УПП, ERP). Это основной источник повреждения таблиц метаданных.
3. Используйте расширения для хранения самописных объектов, если позволяет версия платформы. В 8.2 это невозможно, но при переходе на 8.3 это значительно обезопасит ваши доработки.
4. Проводите ТиИС сразу после обновления. Ошибка SDBL на ранней стадии лечится гораздо проще, чем спустя неделю активной работы пользователей.
Использование связки из восстановления метаданных через сравнение конфигураций и переноса данных через ВыгрузкаЗагрузкаДанныхXML является «золотым стандартом» решения проблем с исчезновением объектов в 1С 8.2.