Зачастую перед специалистами 1С встает задача по синхронизации данных между базами с идентичными конфигурациями. При этом часто возникает необходимость обновить не весь объект целиком, а лишь конкретный реквизит у существующего элемента справочника. В этой статье мы разберем наиболее эффективные подходы для реализации этой задачи, которые помогут вам избежать перезаписи всей карточки объекта и сохранить целостность данных.
Один из самых простых и надежных способов, не требующий написания сложного кода, — это использование встроенной обработки Загрузка данных из табличного документа. Этот инструмент входит в состав большинства стандартных библиотек 1С и доступен на диске ИТС.
Консоли запросов выгрузите таблицу, содержащую уникальный идентификатор (например, Код или GUID) и значение нужного вам реквизита.Загрузка данных из табличного документа.Если вам требуется автоматизированное решение для регулярной или оперативной передачи данных, идеальным вариантом будет использование COM-соединения. Этот метод позволяет напрямую обратиться к объектам базы-приемника из базы-источника. Рассмотрим алгоритм действий:
Для начала, создайте внешнюю обработку, в которой будет реализована логика подключения к COM-объекту:
// Пример логики подключения и обновления
COMОбъект = Новый COMОбъект(\"V83.COMConnector\");
БазаПриемник = COMОбъект.Connect(\"Srvr=Server;Ref=BaseName;Usr=User;Pwd=Password\");
// Поиск элемента в приемнике по коду
ЭлементПриемник = БазаПриемник.Справочники.Номенклатура.НайтиПоКоду(КодОбъекта);
Если НЕ ЭлементПриемник.Пустая() Тогда
ОбъектДляЗаписи = ЭлементПриемник.ПолучитьОбъект();
ОбъектДляЗаписи.НужныйРеквизит = НовоеЗначение;
ОбъектДляЗаписи.Записать();
КонецЕсли;
Важное примечание: использование метода ПолучитьОбъект() и последующий вызов Записать() гарантируют, что в базе-приемнике сработают все необходимые обработчики событий (например, ПередЗаписью или ПриЗаписи). Это позволяет сохранить целостность данных, если, например, изменение реквизита должно повлечь за собой пересчет регистров сведений.
Если конфигурации полностью идентичны, можно воспользоваться штатной обработкой Универсальный обмен данными в формате XML. Хотя этот инструмент часто критикуют за избыточность («пушка по воробьям»), он позволяет тонко настроить выгрузку через Правила обмена (КД 2.0).
В правилах обмена вы можете указать, какие именно реквизиты должны участвовать в обмене. При использовании этого метода данные упаковываются в XML-файл, который затем загружается в базу-приемник. Это хороший выбор для разовых переносов больших объемов данных, когда важно соблюсти строгую типизацию и связи объектов.
При работе с обновлением данных всегда учитывайте следующие моменты:
УникальныйИдентификатор (GUID). Если GUIDы не совпадают, используйте бизнес-ключи (код, артикул, ИНН).Объект (как показано в примере с COM), а не прямое обновление записей в базе данных (через SQL), так как это позволит избежать нарушения логики работы конфигурации.Выбирайте способ исходя из объема данных: для разовых задач отлично подойдет Загрузка из табличного документа, а для сложных интеграционных сценариев — COM-соединение или КД 2.0. Успешной вам автоматизации!