Запустим «1С:Предприятие», введем некоторые тестовые данные и протестируем работу универсальных механизмов обмена данными.
В списке узлов плана обмена Удаленные склады уже существует одна предопределенная запись, соответствующая нашей информационной базе. Это и будет центральный узел плана обмена. Установим его код (ЦентОфис) и название (Центральный офис). Затем добавим в список еще два узла обмена: Оптовый склад (код Опт) и Розничный склад (код Розница).
При создании каждого из этих узлов нужно указать соответствующий ему склад. Значение реквизита Склад будет определять стратегию распространения данных по узлам. Для узла Центральный офис склад будет содержать пустую ссылку, так как в центральный узел должны попадать все данные, независимо от их привязки к складу.
Отметка Главный будет отвечать за результат разрешения коллизий. Сейчас ни для какого узла обмена ставить эту отметку не будем, потому что главным для оптового и розничного узлов является Центральный офис, но он является предопределенным для той информационной базы, в которой мы находимся. Следовательно, его отметка в центральной базе невозможна.
Но вот что нужно сделать обязательно – так это после записи оптового и розничного узлов обмена нажать кнопку Зарегистрировать изменения и тем самым выполнить начальную синхронизацию этих узлов данными центральной базы (рис. 3.25).
Рис. 3.25. Создание списка узлов плана обмена «Удаленные склады» в центральной базе
Затем откроем форму настроек информационной базы и установим значение константы Префикс номеров как «ЦО», а также зададим путь к каталогу обмена (e:\Exchange), который будет храниться в константе Каталог обмена (рис. 3.26).
Рис. 3.26. Установка настроек информационной базы
После этого внесем в базу центрального узла новую номенклатуру, контрагента и приходные/расходные накладные так, чтобы было хотя бы по одному документу, относящемуся к каждому из складов.
Теперь нам нужно передать эти изменения узлу Оптовый склад. Для этого откроем обработку Обмен с удаленными складами, в списке узлов плана обмена выберем узел, которому будут передаваться данные (Оптовый склад), и нажмем кнопку Выгрузить данные (рис. 3.27).
Рис. 3.27. Выгрузка данных из центральной базы в удаленный склад
При этом в каталоге обмена появится файл сообщения обмена с именем Message_ЦентОфис_Опт.xml. Из этого файла изменения будут в дальнейшем прочитаны в узел с кодом Опт.
Но сначала мы должны создать пустую базу этого узла из выгруженной ранее конфигурации. Создадим в этой базе такой же список узлов плана обмена Удаленные склады с такими же кодами узлов, что и в центральной базе. С той лишь разницей, что у узла Центральный офис мы установим флажок Главный, а предопределенным узлом здесь будет являться Оптовый склад (рис. 3.28).
Рис. 3.28. Создание списка узлов плана обмена «Удаленные склады» в базе удаленного склада
Затем откроем форму настроек информационной базы и установим значение константы Префикс номеров как «ОС», а также зададим путь к каталогу обмена (e:\Exchange), который будет храниться в константе Каталог обмена.
Теперь откроем обработку Обмен с удаленными складами, в списке узлов плана обмена выберем узел, из которого данные были выгружены (Центральный офис), и нажмем кнопку Загрузить данные (рис. 3.29).
Рис. 3.29. Загрузка данных из центральной базы в удаленный склад
Мы видим, что все данные из центральной базы перенеслись в полном объеме, за исключением приходных и расходных накладных и их движений. Согласно стратегии распространения данных в узел Оптовый склад попали только документы с соответствующим складом.
Данные номенклатуры также перенеслись правильно – из центральной базы не перенесся артикул номенклатуры. Соответствующий реквизит номенклатуры мы не передавали, так как обменивались данными справочника в ручном режиме.
Теперь нам осталось проверить, как работает разрешение коллизий.
Добавим новую номенклатуру и изменим цену существующей номенклатуры, а также изменим дату существующей приходной накладной. После этого откроем обработку Обмен с удаленными складами, в списке узлов плана обмена выберем узел, которому будут передаваться данные (Центральный офис), и нажмем кнопку Выгрузить данные.
В центральной базе изменим те же данные, которые мы изменяли в базе оптового узла, затем откроем обработку Обмен с удаленными складами, в списке узлов плана обмена выберем узел, из которого данные были выгружены (Оптовый склад), и нажмем кнопку Загрузить данные (рис. 3.30).
Рис. 3.30. Загрузка данных из удаленного склада в центральную базу
При чтении данных мы получим сообщения о том, что изменения данных, сделанные в оптовом узле, отклонены в пользу изменений центральной базы. Так произошло потому, что центральный офис является главным узлом по отношению к оптовому складу. А вот при передаче данных в другую сторону изменения центральной базы будут приняты и затрут изменения оптового узла.
Теперь проделаем те же действия для узла обмена Розничный склад и убедимся, что все работает правильно.
Протестируем также, как работает удаление данных, которых в узле быть не должно. В розничный склад приходят только накладные с соответствующим складом. Изменим склад документа на оптовый и отправим это изменение в центральный офис. Там оно будет принято, так как центральная база получает все данные независимо от склада. Но при следующей отправке изменений этого документа в розничный склад, во-первых, документ туда отправлен не будет, согласно стратегии распространения данных по узлам, а во-вторых, туда будет послано удаление «неправильного» документа. В результате он исчезнет из «чужого» узла и появится в оптовом складе при следующем сеансе обмена данными.
В заключение выполним обмен данными между розничным и оптовым складом. При использовании универсальных механизмов обмена это возможно. Все работает так же, как и в случае обмена с центральной базой. За исключением разрешения коллизий. Поскольку ни один из узлов обмена не является главным для другого, то изменения, сделанные в «своем» узле, в результате останутся, а изменения «чужого» узла будут отклонены.