При работе с механизмами синхронизации данных в 1С:Управление торговлей 11.4 администраторы часто сталкиваются с ситуацией, когда необходимо изменить код узла обмена. Это может потребоваться при случайной ошибке в префиксе, при создании копии базы для тестирования или при необходимости перенастроить существующий обмен через универсальный формат Enterprise Data. По умолчанию поле «Код» в плане обмена заблокировано для редактирования, так как оно напрямую влияет на идентификацию файлов обмена (например, Message_УТ_КТ.xml). В этой статье мы подробно разберем, как обойти это ограничение и корректно настроить обмен данными.
Рассмотрим ситуацию, когда нам нужно изменить код узла через пользовательский интерфейс, не прибегая к написанию кода. В конфигурации Управление торговлей 11.4 (как и во многих других на базе БСП) присутствует встроенный инструмент для изменения заблокированных полей (существует также расширение для группового изменения реквизитов с формы).
Проанализируем шаги, которые необходимо выполнить:
Синхронизация данных через универсальный формат.Код и введем новое значение.Важно: После этого изменения система переименует узел, но это может привести к тому, что старые файлы обмена в папке синхронизации перестанут подгружаться, так как программа будет искать файлы с новым префиксом в названии.
Выясним, как можно изменить код узла максимально быстро, если у нас есть права разработчика. Для этого воспользуемся внешней обработкой «Консоль кода» или создадим временную обработку. Этот метод позволяет игнорировать любые запреты на уровне формы объекта ПланыОбмена.
Рассмотрим пример кода:
// Находим нужный узел по старому коду
УзелОбъект = ПланыОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат.НайтиПоКоду("СТАРЫЙ_КОД").ПолучитьОбъект();
Если УзелОбъект <> Неопределено Тогда
// Устанавливаем новый код
УзелОбъект.Код = "НОВЫЙ_КОД";
// Записываем объект с отключением проверок, если это необходимо
УзелОбъект.ОбменДанными.Загрузка = Истина;
УзелОбъект.Записать();
Сообщить("Код узла успешно изменен на: " + УзелОбъект.Код);
КонецЕсли;
Использование свойства ОбменДанными.Загрузка = Истина позволяет избежать выполнения некоторых встроенных проверок при записи, что полезно при работе со служебными справочниками и планами обмена.
Проанализируем ситуацию, описанную пользователем: база была скопирована, очищена от документов и теперь требуется настроить синхронизацию между «оригиналом» и «копией». Здесь кроется главная техническая ловушка. При простом копировании файла 1Cv8.1Cq (или бэкапа SQL) обе базы сохраняют одинаковый GUID (уникальный идентификатор).
Если вы попытаетесь настроить стандартную синхронизацию, система может выдавать ошибку или вести себя некорректно, так как считает, что база пытается синхронизироваться сама с собой. Для решения этой проблемы выполним следующие действия:
ПланыОбмена.УстановитьГлавныйУзел(Неопределено);
НСИ и администрирование — Синхронизация данных. Убедитесь, что Префикс этой информационной базы в копии отличается от оригинала.Посмотрим на ситуацию глубже. Изменение кода в ПланыОбмена — это лишь вершина айсберга. Информация о том, какие данные уже передавались, хранится в регистрах. Разберем, на что стоит обратить внимание:
1. Регистр сведений «Соответствия объектов информационных баз». Здесь хранится «карта» соответствий. Если вы хотите, чтобы номенклатура из первой базы связалась с такой же номенклатурой во второй базе (которая была получена копированием), записи в этом регистре должны быть корректными. При смене кодов узлов связи могут разорваться, и система начнет создавать дубли.
2. Регистр сведений «Общие настройки узлов информационных баз». В этом регистре хранятся технические параметры: версии формата Enterprise Data, настройки транспорта (FTP, папка, почта). После изменения кода узла обязательно зайдите в настройки синхронизации и пересохраните параметры подключения.
Если ваша задача — разово или периодически переносить номенклатуру, штрихкоды и цены, не обязательно использовать внешние обработки типа ВыгрузкаЗагрузкаДанныхXML.epf, где нужно постоянно настраивать фильтры. Разберем более изящный способ через Регистрацию изменений:
Номенклатура) и выбрать Зарегистрировать все объекты данного типа.После этого достаточно запустить обычную синхронизацию. Система сама сформирует файл, включив в него все зарегистрированные данные. Это гораздо удобнее, так как механизм регистрации «помнит», что вы уже передавали, и в следующий раз предложит выгрузить только измененные позиции.
Для изменения кода узла в УТ 11.4 эффективнее всего использовать программный метод или типовую обработку группового изменения реквизитов. Однако помните, что для успешного обмена между «базой-оригиналом» и «базой-копией» критически важно настроить разные префиксы и убедиться в уникальности идентификаторов информационных баз.