При необходимости перенести документы или справочники между двумя копиями одной и той же конфигурации (например, 1С:Управление торговлей 10.3) разработчики и администраторы часто используют универсальные механизмы обмена XML. Однако в процессе загрузки данные могут не записаться, вызывая исключение вида Ошибка при вызове метода контекста (Записать): Не удалось записать: "Контрагенты"! с пояснением «Не уникальный ИНН».
Рассмотрим подробнее причины возникновения этой проблемы и разберем по шагам доступные варианты её решения.
Проблема возникает в момент записи элемента справочника Контрагенты при загрузке из XML-файла. Разберем основные факторы, приводящие к сбою:
Если нам требуется разово догрузить документы в копию базы, проще всего отключить или скорректировать подпрограмму проверки уникальности ИНН на время переноса.
Проанализируем ситуацию: при программной загрузке обмена устанавливается флаг ОбменДанными.Загрузка = Истина. Стандартный код конфигурации должен пропускать пользовательские проверки, если данный флаг равен Истина.
Если в конфигурации проверка прописана жестко без учета режима обмена, откроем модуль объекта справочника Контрагенты (или модуль соответствующей подписки на событие) и добавим условие в начале процедуры ПередЗаписью:
Процедура ПередЗаписью(Отказ)
// Если происходит автоматическая загрузка данных, отменяем пользовательские проверки
Если ОбменДанными.Загрузка Тогда
Возврат;
КонецЕсли;
// Стандартный код проверки уникальности ИНН
// ...
КонецПроцедуры
Если внесение изменений в код нежелательно, можно временно закомментировать вызов функции проверки уникальности ИНН в копии базы на период переноса данных, а после успешной загрузки вернуть исходный код обратно.
Если обмен выполняется с помощью правил, сформированных в конфигурации «Конвертация данных» (КД), проанализируем настройки правила конвертации объектов (ПКО) для справочника Контрагенты:
ИНН, КПП и при необходимости Код или Наименование.Перед записью полученного объекта взведен флаг загрузки:
Объект.ОбменДанными.Загрузка = Истина;
Для полностью идентичных конфигураций с одинаковой структурой метаданных предпочтительнее использовать специализированную обработку ВыгрузкаЗагрузкаДанныхXML.epf вместо универсального обмена по правилам.
Разберем порядок действий при работе с этой обработкой:
ВыгрузкаЗагрузкаДанныхXML.epf в базе-источнике.Данный подход существенно сокращает время выгрузки за счет отсутствия сложной логики правил конвертации и переносит данные напрямую по УИД объектов.