Ситуация, когда в рабочей базе 1С данные справочника «Контрагенты» оказываются испорченными после неудачной групповой обработки или программной ошибки, является критической. Особенно остро проблема стоит, если объем данных исчисляется тысячами записей (в нашем случае — 17 000). Простое ручное исправление здесь невозможно. Мы рассмотрим пошаговый процесс восстановления справочника из бэкапа (копии базы), разберем механизмы синхронизации объектов и проанализируем сопутствующие риски, такие как потеря контактной информации и битые ссылки.
Прежде чем приступать к восстановлению, разберем, как 1С «понимает», что контрагент из копии и контрагент из рабочей базы — это один и тот же объект. Для этого используется GUID (Globally Unique Identifier) — уникальный внутренний идентификатор ссылки.
Даже если в рабочей базе изменились Наименование, Код, ИНН или КПП, его внутренний GUID, скорее всего, остался прежним (если только обработка не удалила старые элементы и не создала новые). Именно на этом механизме строится работа универсальной обработки ВыгрузкаЗагрузкаДанныхXML.epf. Она сопоставляет объекты не по коду или ИНН, а строго по их уникальному идентификатору.
Проанализируем необходимые инструменты. Для работы нам потребуется внешняя обработка «Выгрузка и загрузка данных XML». Ее можно найти на диске ИТС или в составе дополнительных инструментов разработчика.
Перед началом любых манипуляций обязательно создайте свежую резервную копию рабочей базы. Даже если она сейчас «кривая», наличие актуального слепка данных перед массовой загрузкой — это страховка от окончательной потери информации.
Откроем нашу резервную копию базы, где справочник «Контрагенты» находится в корректном состоянии. Запустим обработку ВыгрузкаЗагрузкаДанныхXML.epf и выполним следующие действия:
Контрагенты и отметим его галочкой.Переходим в рабочую базу и запускаем ту же обработку на вкладке «Загрузка»:
В процессе загрузки система найдет существующих контрагентов по GUID и просто перезапишет их реквизиты (Наименование, ИНН, КПП и прочее) данными из файла. Если в рабочей базе появились новые контрагенты, созданные после бэкапа, они останутся нетронутыми, так как в файле выгрузки их GUID отсутствуют.
В конфигурации УТ 10.3 (как и во многих решениях на обычных формах) адреса и телефоны хранятся не в самом справочнике Контрагенты, а в периодическом регистре сведений КонтактнаяИнформация. Если выгрузить только справочник, данные о телефонах и адресах не обновятся.
Разберем, как восстановить эти данные:
Посмотрим на структуру регистра. В нем есть измерение Объект, которое ссылается на контрагента. Нам необходимо выполнить повторную выгрузку через XML, но теперь выбрать регистр сведений КонтактнаяИнформация. Чтобы не выгружать лишнее, в обработке можно установить отбор по типу объекта (Контрагенты).
Если в процессе «кривой» обработки пострадали также договоры контрагентов или их банковские счета, их нужно восстанавливать аналогичным образом. Помните, что справочник ДоговорыКонтрагентов является подчиненным.
Рассмотрим случай, если вы решили воспользоваться советом «полностью очистить справочник и загрузить заново». Внимание: это крайне опасный метод! Проанализируем почему:
// Пример опасного удаления без контроля ссылок
ОбъектКонтрагент = Справочники.Контрагенты.НайтиПоКоду("00001").ПолучитьОбъект();
ОбъектКонтрагент.Удалить(); // Это приведет к появлению "Объект не найден" в документах
Если вы удалите контрагентов (даже с последующей загрузкой тех же GUID), вы рискуете на мгновение разорвать связи в базе. Лучше всего использовать именно механизм замещения (обновления) существующих объектов без их удаления.
После завершения загрузки нам необходимо убедиться, что справочники в двух базах стали идентичными. Рассмотрим самый простой способ — использование консоли запросов. Мы можем написать запрос, который выгружает основные поля в таблицу, и сравнить их, например, через Excel или программно.
Проанализируем пример запроса для проверки:
ВЫБРАТЬ
Контрагенты.Ссылка КАК Ссылка,
Контрагенты.Наименование КАК Наименование,
Контрагенты.ИНН КАК ИНН,
Контрагенты.КПП КАК КПП
ИЗ
Справочник.Контрагенты КАК Контрагенты
УПОРЯДОЧИТЬ ПО
Наименование
Выполнив этот запрос в обеих базах и скопировав результат в Excel, мы сможем быстро проверить соответствие данных в колонках. Если количество строк совпадает и данные в ключевых полях (ИНН/КПП) идентичны, значит, восстановление прошло успешно.
Если ситуация осложняется тем, что GUID были изменены (например, контрагенты были удалены и созданы заново вручную), стандартная загрузка XML создаст дубли. В этом случае выясним причину и применим другой подход:
Таким образом, мы рассмотрели комплексный подход к восстановлению данных в УТ 10.3. Главное правило — всегда двигаться от простого (замещение по GUID) к сложному (поиск и замена дублей), предварительно обеспечив наличие резервных копий на каждом этапе работ.