Ситуация, когда стандартная обработка «Поиск и удаление дублей» ошибочно удаляет важные индивидуальные характеристики номенклатуры, является критической для учета. Поскольку механизм удаления выполняет физическое уничтожение объектов с заменой всех ссылок в системе, простое восстановление справочника из копии не решит проблему: документы в рабочей базе уже перепривязаны к другим элементам. Давайте разберем по шагам, как действовать в такой ситуации, чтобы вернуть систему в исходное состояние с минимальными потерями.
Прежде чем приступать к восстановлению, необходимо осознать масштаб повреждений. Когда вы запускаете «Поиск и удаление дублей», система не просто удаляет записи, она выполняет процедуру Замена ссылок. Это означает, что во всех документах, регистрах накопления и сведений, где фигурировала «индивидуальная» характеристика, теперь записана ссылка на ту характеристику, которую вы выбрали как «основную» (правильную).
Попытка просто загрузить удаленные характеристики из XML-файла вернет элементы в справочник, но не восстановит связи в документах. Поэтому стратегия «просто загрузить» здесь не сработает.
Самым надежным способом является восстановление базы из резервной копии и последующий перенос («накатывание») тех данных, которые были созданы или изменены в рабочей базе за время, прошедшее с момента создания архива. Рассмотрим этот процесс по шагам:
Конвертация данных (КД) или встроенную обработку ВыгрузкаЗагрузкаДанныхXML, чтобы выгрузить объекты, измененные за период ошибки.ХарактеристикуНоменклатуры и, в случае необходимости, восстанавливать правильную ссылку по уникальному идентификатору (УникальныйИдентификатор), сохраненному в копии.Если восстановление из копии целиком невозможно, можно попытаться «исправить» ссылки программно, используя информацию из рабочей и архивной баз. Для этого необходимо проанализировать структуру данных через SQL или COM-соединение.
Разберем логику сравнения:
// Пример псевдокода для поиска ссылок
Запрос = Новый Запрос;
Запрос.Текст = "ВЫБРАТЬ ДокументСсылка КАК Док ИЗ Документ.ЗаказКлиента ГДЕ Характеристика = &НеправильнаяСсылка";
Запрос.УстановитьПараметр("НеправильнаяСсылка", СсылкаНаДубль);
Результат = Запрос.Выполнить().Выгрузить();
// Далее цикл по результату с заменой ссылки на правильную
Для Каждого Строка Из Результат Цикл
Объект = Строка.Док.ПолучитьОбъект();
Объект.Характеристика = ПравильнаяСсылка;
Объект.Записать(РежимЗаписиДокумента.Запись);
КонецЦикла;
Многие пользователи совершают ошибку, полагая, что выгрузка справочника ХарактеристикиНоменклатуры в XML и последующая загрузка в рабочую базу решат проблему. Мы должны понимать: при такой загрузке 1С создаст новые ссылки (новые GUID) для элементов справочника. Ссылочная целостность документа, который уже «переехал» на другой объект, не будет восстановлена автоматически. Вы получите «дубли дублей», а старые документы так и останутся ссылаться на неверные характеристики.
Поиск ссылок на объект).Подводя итог, наиболее безопасным путем остается восстановление из архива и перенос изменений («дельты») за прошедшие дни. Это требует навыков разработки на 1С, но гарантирует, что финансовый и производственный учет в 1С:ERP не будет нарушен.