Узлы плана обмена в 1С 8.3: от синхронизации в типовой базе до кода
Содержание
Чтобы создать узел в 1С 8.3 в типовой конфигурации, откройте Администрирование → Синхронизация данных, включите флажок синхронизации, задайте префикс базы и нажмите Новая синхронизация данных. Мастер сам создаст узел плана обмена в обеих базах и сопоставит их. Вручную, через список плана обмена, узлы создают только в собственных конфигурациях.
Частая ошибка новичков — создать узел «как элемент справочника» в типовой базе через Все функции и ждать, что обмен заработает. Не заработает: у узла не будет настроек транспорта, правил и пары во второй базе. Узел работает только в паре: по одному в каждой базе, с совпадающими кодами.
Что такое узел плана обмена и зачем он нужен
План обмена — объект конфигурации, который описывает, какие данные и с кем синхронизируются. Узел — это запись в плане обмена, которая обозначает одного участника обмена: филиал, вторую базу, сайт, внешнюю систему.
У каждого плана обмена есть предопределённый узел «Этот узел». Он обозначает текущую базу. Остальные узлы — это корреспонденты.
Что даёт узел:
- 📌 Регистрацию изменений. Платформа запоминает, какие объекты изменились с прошлого обмена, отдельно для каждого узла.
- 🔢 Нумерацию сообщений. У узла есть номер отправленного и номер принятого сообщения. По ним платформа понимает, что корреспондент уже получил, и не гоняет данные повторно.
- 🧭 Адрес для отбора. По реквизитам узла можно ограничить состав данных: например, только одна организация или один склад.
Без узла обменяться можно только «вслепую» — каждый раз выгружать всё целиком. С узлом выгружаются только изменения.
Виды узлов: что выбрать под задачу
Тип узла задаёт сам план обмена, а не отдельная галочка у узла. Выбор зависит от того, одинаковые ли конфигурации у баз.
| Сценарий | Что используется | Когда подходит |
|---|---|---|
| Распределённая информационная база (РИБ) | План обмена с флажком «Распределенная информационная база» | Одинаковая конфигурация: главная база и филиалы, ноутбук выездного сотрудника |
| Обмен между разными конфигурациями | План обмена без флажка РИБ, правила конвертации или формат EnterpriseData | УТ 11 → БП 3.0, ЗУП 3.1 → БП 3.0, Розница → УТ |
| Обмен с внешней системой | Свой план обмена и узел на каждую систему | Сайт, мобильное приложение, складская программа |
Ключевая разница. В РИБ подчинённый узел получает и данные, и изменения конфигурации от главного. Конфигурацию в подчинённом узле менять нельзя, только принимать. В обмене между разными конфигурациями каждая база живёт своей жизнью, а данные переводятся по правилам.
Для двух баз одной фирмы с одинаковой конфигурацией (например, офис и удалённый склад на одной БП 3.0) почти всегда удобнее РИБ. Для пары «торговля — бухгалтерия» — только обмен между разными конфигурациями.
Как создать узел в типовой конфигурации через мастер
Путь одинаковый для БП 3.0, ЗУП 3.1, УТ 11 и других конфигураций на БСП. Различается только список доступных вариантов обмена.
Что подготовить заранее
Проверьте до запуска мастера:
Префикс — это одна-две буквы или цифры, которые добавляются к номерам документов и кодам справочников. У каждой базы префикс свой: например, ЦО у центрального офиса и СК у склада. Иначе в обмене появятся документы с одинаковыми номерами.
Шаг 1. Включить синхронизацию
- Откройте
Администрирование → Синхронизация данных. - Установите флажок
Синхронизация данных. - В поле
Префикс этой информационной базыукажите префикс.
Шаг 2. Запустить мастер
- Нажмите
Настройки синхронизации данных. - Нажмите
Новая синхронизация данных. - Выберите вариант: конфигурацию-корреспондента (например, «Управление торговлей, ред. 11») или распределённую информационную базу.
Шаг 3. Выбрать способ связи
Мастер предложит подключение. Варианты зависят от релиза, но обычно это:
- 🔌 прямое подключение к другой базе (файловой или на сервере 1С);
- 📁 общий сетевой каталог;
- 🌐 FTP или подключение через интернет к опубликованной базе.
При прямом подключении мастер сам создаст парный узел во второй базе. При обмене через каталог или FTP он выгрузит файл настроек: его нужно загрузить в мастере второй базы.
Шаг 4. Настроить отборы и выполнить первый обмен
- Укажите, с какой даты переносить данные и по каким организациям.
- Выполните сопоставление справочников. На первом обмене это самый важный шаг: контрагенты и номенклатура, которые уже есть в обеих базах, нужно связать, иначе появятся дубли.
- Запустите синхронизацию.
После этого в списке настроек синхронизации появится строка — это и есть созданный узел. Посмотреть его как элемент плана обмена можно через Все функции → Планы обмена (команда Все функции включается в Сервис и настройки → Параметры).
Как проверить, что узел работает
После первой синхронизации не спешите отдавать базы пользователям. Проверьте три вещи:
- Количество. Откройте в обеих базах список контрагентов и номенклатуры с отбором по дате создания. Если в приёмнике элементов вдвое больше, чем ожидали, — сопоставление прошло не полностью.
- Номера документов. Создайте тестовый документ в каждой базе и посмотрите номер: в нём должен стоять префикс своей базы.
- Обратное направление. Измените один элемент во второй базе, запустите синхронизацию и убедитесь, что изменение вернулось. Так видно, что пара узлов связана в обе стороны, а не только «туда».
Тестовые документы потом пометьте на удаление в обеих базах.
Отдельно: подчинённый узел РИБ и начальный образ
Для РИБ узел создаётся в главной базе, а сама подчинённая база получается из начального образа. В мастере синхронизации после выбора варианта РИБ появится шаг создания начального образа: укажите каталог для новой файловой базы или параметры серверной.
Не копируйте файл базы вместо создания начального образа. Копия не знает, что она подчинённый узел, и обмен с ней не пойдёт.
Как создать узел вручную в своей конфигурации
Этот путь нужен разработчику, когда план обмена добавлен в нетиповую конфигурацию.
В Конфигураторе
- В дереве метаданных откройте ветку
Общие → Планы обменаи добавьте план обмена. - Если нужна РИБ — установите флажок
Распределенная информационная база. - На закладке
ОсновныеоткройтеСостави отметьте объекты, которые участвуют в обмене. Для каждого задайтеАвторегистрация:Разрешить— изменения регистрируются сами,Запретить— регистрация только кодом. - Обновите конфигурацию базы данных (F7).
В режиме 1С:Предприятие
- Откройте
Все функции → Планы обмена → <ваш план>. - Откройте узел «Этот узел» (он выделен значком) и заполните
КодиНаименование. Пустой код у «Этого узла» — источник ошибок при загрузке сообщений. - Создайте новый узел для корреспондента: код, наименование, при необходимости — реквизиты для отбора.
Код узла во второй базе должен совпадать: узел «Склад» с кодом СК в базе офиса соответствует «Этому узлу» с кодом СК в базе склада.
Программно
Узел = ПланыОбмена.ОбменСоСкладом.СоздатьУзел();
Узел.Код = "СК";
Узел.Наименование = "Удалённый склад";
Узел.Записать();
Начальный образ подчинённой базы РИБ создаётся методом платформы:
ПланыОбмена.СоздатьНачальныйОбраз(Узел, "File=""D:\Bases\Sklad"";");
Метод выполняется на сервере. Каталог должен быть пустым или не существовать.
Правила обмена и регистрация изменений
Узел сам по себе ничего не переносит. Что и как попадёт в другую базу, определяют два механизма.
Регистрация изменений. При записи объекта, у которого в составе плана обмена разрешена авторегистрация, платформа отмечает его для всех узлов, кроме «Этого узла». Вручную регистрировать можно методом ПланыОбмена.ЗарегистрироватьИзменения(Узел, Данные), снимать регистрацию — ПланыОбмена.УдалитьРегистрациюИзменений(Узел, НомерСообщения).
Правила конвертации. В РИБ правила не нужны: объекты переносятся как есть. Между разными конфигурациями данные переводятся:
- 📦 через универсальный формат EnterpriseData — в актуальных типовых связках (УТ — БП, ЗУП — БП) он встроен, ничего загружать не нужно;
- 🛠 через правила, разработанные в конфигурации «Конвертация данных » — для нетиповых сценариев и собственных конфигураций.
Обмен по расписанию
Ручной запуск синхронизации неудобен уже через неделю. В типовых конфигурациях расписание задаётся в карточке настройки синхронизации: откройте Настройки синхронизации данных, выберите строку обмена и найдите в ней настройку расписания (флажок выполнения по расписанию и ссылку на само расписание).
Под капотом работает регламентное задание. Отсюда важные ограничения:
- 🖥 Клиент-серверная база. Регламентные задания выполняет сервер 1С. Проверьте, что в свойствах информационной базы в консоли кластера не установлена
Блокировка регламентных заданий. - 📂 Файловая база. Регламентные задания выполняются только при открытом сеансе пользователя. Нет запущенной 1С — нет обмена.
Разумная частота для офиса и склада — раз в 15-30 минут. Для пары «торговля — бухгалтерия» обычно хватает обмена раз в час или несколько раз в день: бухгалтеру не нужны изменения поминутно.
Не ставьте интервал меньше времени самого обмена. Если синхронизация длится 5 минут, а запускается каждые 2, задания будут наслаиваться и мешать пользователям.
Узел для сайта и внешней системы
Узел плана обмена полезен и тогда, когда второй стороны-1С нет. Схема простая:
- Создайте план обмена, например «ОбменССайтом», и включите в состав номенклатуру, цены, остатки.
- Создайте один узел — «Сайт».
- Внешняя система по расписанию обращается к HTTP-сервису 1С.
- HTTP-сервис выбирает изменения по узлу (
ПланыОбмена.ВыбратьИзменения), отдаёт их в JSON или XML и после подтверждения снимает регистрацию.
Так сайт получает только то, что изменилось, а не весь каталог на 20 000 позиций при каждом запросе.
Для чтения данных без доработок есть стандартный интерфейс OData. Но OData не знает, что изменилось с прошлого раза, — для инкрементальной выгрузки всё равно нужен узел.