Главная - Интернет
Организация обмена с базой филиала (розничного магазина) в торговой сети через XML (универсальный обмен). Организация обмена с базой филиала (розничного магазина) в торговой сети через XML (универсальный обмен) Как настроить обмен данными 1 с 8.3

Технология распределенных информационных баз (РИБ) позволяет создать территориально распределенную систему на базе конфигураций 1С Предприятие. Это позволяет иметь общее информационное пространство даже с теми подразделениями, которые не имеют надежного канала связи, сочетая высокую автономность узлов с возможностью оперативного обмена информацией. В наших статьях мы рассмотрим особенности и практическую реализацию этого механизма на платформе 8.2

Прежде всего зададимся вопросом: почему именно автообмен? Современные технологии, в сочетании с недорогим и быстрым интернетом, позволяют организовать удаленную работу без каких либо затруднений. Выбор способов как никогда широк: RDP, тонкий и веб-клиенты, объединение сетей при помощи VPN - есть над чем задуматься. Однако все эти способы имеют один существенный недостаток - сильная зависимость от качества канала связи.

Даже при идеальной работе местного провайдера гарантировать 100% доступность канала связи невозможно. Проблемы у магистрального провайдера, отсутствие электроснабжения, физическое повреждение линии связи и многие другие факторы делают эту задачу неразрешимой. В тоже время недоступность информационной базы на удаленном складе или в розничном магазине приводит к вполне ощутимым убыткам. Ну и наконец не будем забывать, что есть места (например промзоны на окраине городов) в которые подвести качественный канал связи дорого и/или проблематично.

Механизм РИБ позволяет избавиться от указанных недостатков, каждое подразделение имеет собственный экземпляр информационной базы с которой можно работать автономно даже при полном отсутствии связи с внешним миром. А небольшой объем передаваемой информации позволяет использовать для обмена любой канал связи, в том числе мобильный интернет.

РИБ на платформе 8.2 не является чем-то принципиально новым, представляя собой дальнейшее развитие УРИБ платформы 7.7, только теперь эта технология стала доступней и проще. В отличии от компоненты УРИБ, которую нужно было приобретать отдельно, РИБ является неотъемлемой частью многих типовых конфигураций и работает полностью в пользовательском режиме, позволяя обойтись без Конфигуратора даже на этапе настройки.

На этом месте пора бы было перейти к практической части, но придется сделать еще одно отступление. Дело в том, что переход на платформу 8.2, который вроде бы уже произошел, по факту привел к появлению двух типов конфигураций: на основе управляемого приложения, "родные" для платформы 8.2, и адаптированные с 8.1, продолжая использовать устаревшие технологии и механизмы. Так как существенная часть конфигураций (Бухгалтерия предприятия, Зарплата и управление персоналом) являются адаптированными или переходными, то сбрасывать их со счетов нельзя, поэтому первая часть нашей статьи будет посвящена этим конфигурациям (по сути платформе 8.1), в то время как во второй мы разберем настройку автообмена для конфигураций на основе управляемого приложения (платформе 8.2).

Рассмотрим практическую задачу: настроить автообмен через FTP для конфигурации Бухгалтерия предприятия 2.0. Несмотря на то, что РИБ позволяет производить обмен с использованием электронной почты или общих файловых ресурсов, мы рекомендуем использовать именно FTP, как наиболее простой и надежный способ связи. Как настроить собственный FTP-сервер вы можете прочитать в , либо можно использовать FTP сервис любого хостинг провайдера.

В первую очередь нам нужно настроить узлы обмена. Для этого запустим конфигурацию с правами администратора и выберем Операции - Планы обмена.

В появившемся списке выберем Полный план или По организации , если в одной базе ведется учет по нескольким фирмам и обмен нужно производить только для одной из них. В открывшемся окне уже существует один узел - центральный, нам нужно его отредактировать, указав код и название.

После чего создадим еще один узел для филиала, заполнив его аналогичным образом (для добавления нажмите зеленый кружок с плюсом). Следующим шагом будет создание начального образа для данного узла, который представляет собой готовую информационную базу в файловом режиме. Для этого кликните правой кнопкой мыши на нужном узле и в выпадающем списке выберите Создать начальный образ .

Теперь перейдем Сервис - Распределенная информационная база (РИБ) - Настроить узлы РИБ .

В открывшемся окне нажмите кнопку Добавить и настройте новый обмен, указав удаленный узел, тип обмена (через FTP) и параметры подключения к серверу.

Закладка Автоматический обмен позволяет настроить расписание обменов, обмен по событиям (начало и завершение работы и т.п.), данные настройки производятся для пользователя от чьего имени будет выполняться обмен, поэтому убедитесь в наличии у него прав для обмена данными.

Не забудьте указать префикс узла для нумерации документов (иначе вы получите разные документы с одинаковыми номерами) в Сервис - Настройки программы, здесь же можно настроить и некоторые другие параметры обмена. На этой же закладке следует выбрать пользователя для выполнения заданий обмена, если вы этого не сделаете расписание работать не будет. Помните, что обмен будет производиться только в том случае, если данный пользователь выполнил вход в программу.

На этом настройка центрального узла закончена, теперь нужно произвести аналогичные настройки для периферийного узла, подключив начальный образ как существующую ИБ. После чего можно приступать к обмену данными. Для контроля следует воспользоваться Монитором обмена данными , он позволяет не только контролировать успешность прохождения выгрузки/загрузки, но и показывает возникшие коллизии или отложенные движения (если пользователю производившему обмен не хватает прав для совершения каких либо действий в базе). Наличие данного инструмента позволяет быстро и эффективно решать различного рода проблемы, возникающие при автообмене.

На этом настройку обмена можно считать законченной и приступать к работе в распределенном режиме. Отдельно стоит остановиться на обновлении или внесении изменений в конфигурацию. Эти действия доступны только на центральном узле, все внесенные изменения будут автоматически распространены на периферийные узлы при следующем обмене. Для автоматического внесения изменений требуется чтобы периферийная база находилась в монопольном режиме, в противном случае нужно будет запустить Конфигуратор и выполнить Обновление конфигурации базы данных вручную.

При разработке правил обмена 1С 8 широко используется возможность программного переопределения поведения правил обмена — механизм обработчиков. Обработчики событий существенно расширяют функционал и являются незаменимым инструментом настройки правил обмена в тех случаях, когда интерактивных возможностей конфигурации недостаточно.

Обработчики и алгоритмы пишутся на языке той платформы, в которой они будут выполняться при обмене.

Если это платформа «1С: Предприятие 7.7», то код обработчиков интегрируется в код обработки выгрузки или загрузки. Соответственно, каждый обработчик или алгоритм выделяется в отдельную функцию и доступен для отладки при обмене.

Если выгрузка или загрузка происходят на платформе «1С: Предприятие 8», то код обработчиков не интегрируется в код обработки обмена данными, а выгружается в файл правил обмена. В процессе обмена данными код обработчиков или алгоритмов берется из файла правил и выполняется непосредственно в контексте оператора «Выполнить». Для отладки кода обработчиков и алгоритмов можно воспользоваться обработкой «Универсальный обмен данными XML».

Многие предприниматели, осуществляющие торговую деятельность, для повышения эффективности управления приобретают одновременно две программы «1С:Бухгалтерия 8» (далее БП) и «1С:Управление торговлей 8» (далее УТ) .

БП используется для ведения регламентированного учета и сдачи отчетности, а УТ - для оперативного и управленческого учета в компании.
Успех совместного использования этих программных продуктов во многом зависит от организации обмена данными между конфигурациями БП и УТ.

Понимание приведенных ниже особенностей типового обмена данными поможет избежать ошибок в процессе обмена между конфигурациями и нарушений учета в каждой конфигурации отдельно.

При написании данной статьи использованы материалы из документации 1С к программным продуктам.Подробно методика настройки обмена изложена в htm-файле «Совместное использование конфигураций Управление торговлей (11) и Бухгалтерия предприятия», который находится в каталоге шаблонов при установке как 1С:Бухгалтерии 2.0 (далее БП), так и 1С:Управления торговлей 11 (далее УТ); рекомендации, полученные на партнерской конференции 1С и личный опыт автора по созданию и изменению настроек обмена для клиентов компании ООО «РГ-Софт Проект Консалтинг».

1. Настройка одностороннего или двустороннего обмена.

Прежде всего, следует учесть, что из конфигурации БП в конфигурацию УТ могут выгружаться только документы, связанные с операциями движения наличных и безналичных денежных средств. К ним относятся: Приходный кассовый ордер, Расходный кассовый ордер, Поступление на расчетный счет и Списание с расчетного счета. Документы движения товаров, созданные в БП, выгружаться в УТ не будут.

Фирма 1С рекомендует производить обмен с банком в УТ. «Это обеспечит полноценную работу с исходящими платежными документами и более простую работу с входящими документами». Однако, была ситуация, когда из файла клиент-банка не удалось загрузить в УТ практически ни одной платежки, в то время как в БП этот файл загрузился полностью.

Это объясняется тем, что в УТ добавлены более строгие проверки содержания файла клиент-банка, например: проверка заполнения ИНН, проверка номера документа, номер должен содержать только цифры в соответствии с положением ЦБР от 3 октября 2002 г. N2-П "О безналичных расчетах в Российской Федерации" (с изменениями от 3 марта 2003 г., 11 июня 2004 г., 2 мая 2007 г., 22 января2008 г.).

Настраивать односторонний обмен (из УТ в БП) имеет смысл только в том случае, если все документы и нормативно-справочная информация заполняются в УТ. Таким образом, можно избежать дублирования элементов в этой базе.

Для этого необходимо настроить следующий сценарий обмена: создать в конфигурации УТ сценарий обмена, в котором сохранить только выгрузку (рис.1), в конфигурации БП создать сценарий обмена и сохранить только загрузку.

Необходимо учитывать, что при таком сценарии обмена, все дополнительные документы и справочники, созданные в БП, будут регистрироваться для обмена, но не будут загружаться в УТ, поэтому регистрацию рекомендуется периодически сбрасывать, иначе файл сообщения обмена из БП будет постоянно увеличиваться, замедляя процесс обмена.

Для этого рекомендуется использовать обработку РегистрацияИзмененийДляОбмена82.epf , которую можно найти в поставке конфигурации "Конвертация данных, ред. 2.1". После установки конфигурации, обработка находится в каталоге установки обновления: ...\1c\Conversion\...номер_версии…

Если нормативно-справочная информация заполняется и в УТ, и в БП, то следует настраивать двусторонний обмен, но при этом может потребоваться отслеживать дубли, запуская обмен в интерактивном режиме вместо автоматического (рис. 2).

Для того, чтобы ограничить обмен данными только на уровне документов, не обязательно настраивать односторонний обмен, достаточно в фильтре обмена на стороне БП поставить дату, больше даты последнего документа (см. рис. 5). Но прежде чем устанавливать фильтр на дату, нужно убедиться, что документы в БП не были ранее зарегистрированы к обмену, иначе зарегистрированные документы будут перенесены в другую базу при обмене.

Приоритет изменения данных

Если вначале будет выполнен обмен в УТ, а потом в БП, то приоритет будут иметь данные, выгруженные из УТ. Например, В УТ завели документ «Поступление на расчетный счет», запустили обмен сначала в УТ, затем в БП – документ появился в конфигурации БП. Затем бухгалтер в конфигурации БП внес изменения в этот документ. При последующем обмене, если очередность запуска обмена не менялась, то внесенные в документ изменения затрутся данными из УТ.

Для корректного обмена с теми объектами, которые изменены в обоих базах, 1С рекомендует организовать работу, чтобы объект редактировался только в одной из баз. В другой базе такой объект должен открываться только на просмотр. Для этого потребуется использовать настройку прав доступа пользователей, но такой подход гарантирует отсутствие коллизий при обмене, т.е. расхождений, возникающих при изменении объекта и в одной, и в другой базе, в период между обменами (рис. 3).


2. Различия БП и УТ, влияющие на обмен

Договоры контрагентов

В конфигурации УТ не ведется аналитика по договорам контрагентов. Все операции, которые ведутся в конфигурации УТ, при загрузке в конфигурацию БП всегда оформляются по отдельным договорам, создаваемым и контролируемым самой системой УТ.

Если договора с нужными параметрами нет в конфигурации БП, то происходит создание такого договора. Необходимо отметить, что поиск договора осуществляется только из числа ранее загруженных из УТ договоров.

Управленческая организация в УТ

Начиная с релиза 11.0.6.9, в УТ в справочнике организации появился предопределённый элемент «Управленческая организация». Этот элемент не должен быть сопоставлен (или изменен) с текущей (единственной или одной из) организацией. Подробнее об использовании данного объекта можно прочитать в файле документации «Изменения и дополнения в документации.htm» , входящем в поставку УТ.

Структура предприятия

В УТ для управленческого учета используется справочник «Структура предприятия», который содержит список подразделений компании. При оформлении документов указание подразделения предприятия является обязательным.

Элементы справочника «Структура предприятия» не сопоставляются элементам справочника «Подразделения организации» в БП. Для того, чтобы в УТ не загружались документы с незаполненным реквизитом Подразделение, в настройках обмена необходимо заполнить значение по умолчанию (рис. 4).

Склад в табличной части

Если в УТ планируется использовать новую возможность указания складов в табличных частях документов, то в настройках узла плана обмена необходимо установить обобщающий склад, который будет подставляться при выгрузке документов из УТ в конфигурацию БП вместо складов, разрешенных для выбора в табличных частях документов (рис. 4).

Вид номенклатуры

При выгрузке данных из БП в УТ, в номенклатуре не заполняется реквизит «вид номенклатуры», это связано с тем, что обменом обслуживается сценарий, когда номенклатура создается в конфигурации УТ, а не в БП. В документах движения товаров в УТ нет отдельной табличной части для учета услуг (услуги заполняются в таблице товары), поэтому, для того, чтобы услуги, указанные в документах УТ правильно переносились в табличную часть в БП, нужно:

1. В разделе нормативно-справочная информация открыть справочник «Виды номенклатуры», зайти в вид номенклатуры «услуги» - нажать «Все действия» - разрешить редактирование и выбрать Тип номенклатуры - Услуга.
2. Изменить номенклатуру (услугу) - нажать «Все действия» - разрешить редактирование и выбрать этот Вид номенклатуры с типом Услуга.

3. Настройка фильтров обмена (рис. 5)

Изменение даты выгрузки (загрузки) документов

1) Прежде чем передвигать дату вперед необходимо синхронизировать базы путем выполнения сеанса обмена, чтобы на узле не было зарегистрированных к обмену документов на момент изменения настройки. Иначе такие документы после изменения настройки, в результате выгрузки, могут стать помеченными на удаление в базе-приемнике, если они были ранее туда выгружены.

2) Передвигать дату назад можно, т.к. это лишь расширяет область выгружаемых данных. Стоит заметить, что при этом документы из ранее закрытого периода не будут зарегистрированы к обмену автоматически. Для того чтобы это сделать, необходимо либо изменить документы, либо воспользоваться обработкой РегистрацияИзмененийДляОбмена82.epf.


Фильтр по организациям

Включение данного фильтра позволяет ограничить список организаций, по которым разрешен обмен данными. Наличие включенного фильтра влияет как на выгрузку самого справочника организаций, так и на выгрузку других данных, связанных с организациями (справочники и документы).

Принцип действия фильтров выгрузки таков: новые настройки действуют применительно для всех данных - в момент создания обмена, либо только для тех данных, которые были изменены после момента применения новых настроек - после создания обмена, поэтому рекомендуется максимально ответственно подойти к настройке фильтров при создании обмена данными.

Пример: при создании обмена пользователь установил фильтр по организации. В базу-приемник выгрузились данные только по указанной организации. Далее пользователь решил, что в базу-приемник должны выгружаться данные по всем организациям. Но так как настройки начинают действовать только для вновь изменяемых данных, то уже имеющиеся документы и справочники не будут выгружены в базу-приемник до тех пор, пока пользователь не произведет с ними какие-либо изменения.

4. Удаление объектов одной из баз

Пометка на удаление

Возможна ситуация, когда используемый ранее элемент справочника не планируется использовать для дальнейшего учета и этот справочник пользователи считают правильным пометить на удаление. Помеченные на удаление объекты не участвуют в обмене. Эту особенность следует учитывать.

Удаление дублей

Для удаления возникших при обмене дублей объектов мы рекомендуем воспользоваться обработкойПоискИЗаменаЗначений.epf , которая находится в каталоге \1CITS\EXE\ExtReps\Unireps82\SearchAndChange\ на диске ИТС. А для проверки корректности сопоставления объектов двух информационных баз можно открыть Регистр сведений «Соответствие объектов информационных баз» и записи данного регистра могут быть откорректированы вручную. Важно знать, что после удаления объекта в одной из баз в записи регистра сведений останется соответствие для удаленного объекта (битая ссылка), нужно будет либо сопоставить другой объект, либо удалить запись.

5. Дополнительные настройки

Статьи движения денежных средств

Для конфигурации УТ может потребоваться проставить реквизит «корр. счет» для тех статей движения денежных средств, которые будут использоваться и выгружаться в БП.

Для конфигурации БП: может потребоваться проставить вид движения денежных средств в элементах справочника.

Пользователи

Элементы справочника пользователи могут быть перенесены в другую базу в том случае, если указаны в качестве ответственных в одном из объектов, участвующем в обмене. Для таких объектов потребуется настроить права.

Префикс базы и префикс организации

В УТ префикс всегда имеет фиксированную длину и разделитель (дефис) "-". Поэтому, если префикс информационной базы не задан или префикс организации не задан, то он заменяется нулями. Однако при настройке обмена префикс информационной базы всегда заполняется на ЦБ (для УТ) и на БП (соответственно для конфигурации БП).

Такое решение является стандартом при формировании номеров документов и кодов объектов. Префикс имеет фиксированную длину и отделяется символом дефиса от номера документа. Если в дальнейшем в базе будет несколько организаций, то достаточно будет установить для них префиксы и не потребуется выполнять перенумерацию всех объектов.

Исправление ошибок

В нашей статье были рассмотрены наиболее важные моменты организации обмена данными между «1С:Управление торговлей 8» ред.11 и «1С:Бухгалтерия 8» ред.2.0.

Специалисты компании ООО «РГ-Софт Проект Консалтинг» готовы предложить не только настройку обмена под особенности ведения учета конкретной организации, но и способы исправления ошибок в действующих обменах.

В настоящее время многие фирмы ведут учет параллельно в нескольких базах 1С, каждая из которых предназначена для решения определенного круга задач:

  • Для ведения бухгалтерского учета предназначена конфигурация Бухгалтерия предприятия (БП),
  • Для отражения торговых операций – Управление торговлей (УТ),
  • Для расчета зарплаты – Зарплата и управление персоналом (ЗУП).

Эти программы 1С являются наиболее часто используемыми на практике.

Трудность заключается в том, чтобы достичь идентичности учета в базах. Ведь для отражения какой-либо операции внесения данных в одной базе недостаточно, требуется произвести аналогичные действия и в другой базе, иначе ведение учета будет разниться. Для того чтобы решить эту проблему и избежать ручного дублирования данных в 1С, предназначен механизм обмена данными. С его помощью имеется возможность настроить автоматический перенос информации между базами по установленным правилам.

Обмен бывает односторонний и двусторонний. Отличаются они тем, что при одностороннем направлении данные можно только выгрузить из одной базы и загрузить в другую, обратное действие невозможно, а при двустороннем информацией можно обмениваться в обоих направлениях.

Для наиболее часто используемых программ 1С имеется встроенный в конфигурацию по умолчанию типовой обмен. Однако для доработанных, нетиповых конфигураций при его использовании перенос данных может происходить некорректно. В таких случаях следует дорабатывать механизм типового обмена или разрабатывать с нуля.

Перед настройкой синхронизации необходимо обновить до последнего релиза конфигурации, которые будут участвовать в обмене, а также сделать их резервные копии. При этом в информационных базах необходимо выполнить предварительное заполнение конфигураций для того, чтобы обмен работал нормально. Что к этим действиям можно отнести смотрите в следующем видео:

Настройка обмена данными (синхронизации) между базами 1С 8.3 на примере конфигураций БП 3.0 и УТ 11

Настройка синхронизации в 1С 8.3 производится с помощью обработки Помощник настройки синхронизации данных и заключается в последовательном выполнении шагов в помощнике в обеих базах, которые будут обмениваться данными:

Для его запуска в конфигурации УТ 11 необходимо в разделе Администрирование перейти по ссылке Настройка синхронизации данных:

В открывшемся окне можно выполнить первичные настройки УТ 11, которые будут использоваться в создаваемых обменах по умолчанию, а также перейти к настройке. Для этого необходимо кликнуть по ссылке Синхронизация данных:

Откроется окно Список настроенных синхронизаций данных. Для создания нового обмена данных в 1С требуется по кнопке Настроить синхронизацию данных, в выпадающем меню, выбрать вид обмена, который будет настраиваться:

Как к существующей настройке обмена данными в 1С 8.3 УТ 11 добавить новый обмен данными, настроить несколько обменов с разными фильтрами по разным организациям смотрите в следующем видео:

Выберем вариант Бухгалтерия предприятия, редакция 3.0. Откроется окно помощника Синхронизация с данных с Бухгалтерия предприятия, редакция 3.0 (настройка). Так как настройка обмена в УТ 11 только начинает производиться, то следует оставить установленный по умолчанию способ настройки Указать настройки вручную и нажать на кнопку Далее:

Настройка обмена данными между УТ 11 и БП 3.0 – пошаговая инструкция

Шаг 1. Выбор способа подключения к другой базе

Можно оставить настройки в УТ 11, установленные по умолчанию:

Обязательно требуется указать:

  • Расположение другой базы в поле Каталог информационной базы;
  • Внести сведения в полях Аутентификация пользователя;
  • Нажать на кнопку Далее:

Шаг 2. Выполнение проверки подключения

Шаг 3. Настройка параметров синхронизации данных для программ

  • Здесь обязательно требуется заполнить поле Обобщенный склад. Выбор делается из выпадающего списка.
  • Кроме того, можно выбрать, как будет отправляться в базу-приемник из базы источника нормативно-справочная информация и по каким организациям переносить данные – по всем или по конкретным.
  • При внесении изменений требуется нажать на кнопку Записать и закрыть, а после закрытия этого окна – на кнопку Далее:

  • Вносить какие-то изменения здесь не требуется.
  • По кнопке Далее совершается переход к информации по параметрам, по которым будут синхронизироваться данные между базами.

Шаг 4. Создание новой настройка синхронизации

По завершении этого этапа созданная настройка записывается, а помощник переходит на заключительный шаг:

Шаг 5. Выполнение синхронизации данных

Остается нажать на кнопку Готово. Происходит закрытие помощника и запускается процедура синхронизации (обмена) данных между БП и УТ:

Шаг 6. Анализ данных

Шаг 7. Сопоставление данных

Если данные переносятся в пустую базу-приемник, то данный шаг будет пропущен:

Если в базу-приемник уже вносились какие-то данные и сопоставление объектов не выполнить, то при нажатии на кнопку Далее появится окно с оповещением:

Шаг 8. Загрузка данных

Шаг 9. Настройка параметров для отправляемых данных

Шаг 10. Выгрузка данных

Затем программа 1С УТ перейдет к завершающему этапу:

В результате которого будет выведена информация по произведенной синхронизации с БП 3.0:

По кнопке Настроить откроется новый документ Сценарий синхронизации данных (создание), в котором можно настроить автоматическое выполнение обмена данными между базами по расписанию:

В нашем случае базой-источником была 1С 8.3 УТ 11. Настройка синхронизации данных в случае, если базой-источником является БП, выполняется аналогичным образом.

Как настроить двухсторонний обмен данными в информационных базах 1С 8.3 БП 3.0 и УТ 11 смотрите в нашем видео уроке:

Настройка обмена данными между БП 3.0 и УТ 11 – пошаговая инструкция

Для настройки синхронизации в программе 1С 8.3 Бухгалтерия 3.0 также требуется последовательно выполнить несколько этапов в Помощнике настройки синхронизации данных:

Запустить помощник в 1С 8.3 Бухгалтерия можно выбрав в разделе Администрирование пункт Настройки синхронизации данных:

В открывшемся окне, в новой вкладке необходимо установить галочку в пункте Синхронизация данных и затем перейти по ссылке Синхронизация данных:

В открывшемся окне Синхронизация данных по команде Настроить синхронизацию данных, из выпадающего списка требуется выбрать вариант Управление торговлей, редакция 11:

Откроется окно Синхронизация данных с Управление торговлей, редакция 11 (настройка):

  • Здесь никаких изменений вносить не требуется.
  • По кнопке Далее будет осуществлен переход к началу процесса настройки синхронизации:

Шаг 1. Выбор варианта подключения к другой программе

На данном шаге требуется указать параметры подключения к базе-приемнику данных, а именно каталог расположения и пользователя:

Шаг 2. Проверка подключения

Шаг 3. Настройка параметров синхронизации для базы-источника и базы-приемника

можно отредактировать параметры, которые система установила по умолчанию:

Если настройки были изменены, то следует сохранить изменения по кнопке Записать и закрыть.

Шаг 4. Создание новой настройки синхронизации

Шаг 5. Синхронизация

Возникла необходимость настроить обмен между базами 1С центрального компании и торговых филиалов. РИБ не подошел, из-за чувствительности к изменениям конфигурации, особенно к динамическим обновлениям. А также из-за того, что требуется обмен по определенным правилам: вся информация должна идти в одну сторону - из центра в филиал. Т.е. если кто-то изменит в базе филиала справочник номенклатуры случайно, это не должно попадать в центральную базу.

Из центральной базы в филиал выгружаются:

  • каталог товаров,
  • цены только по некоторым видам цен,
  • заказы из интернет-магазина.

В центральной базе и в филиале торговля ведется от разных юр. лиц, управление филиалом осуществляется независимо.
Клиентская база в центре и в филиале ведется независимо, общими являются только те клиенты, которые прошли через интернет-магазин. Т.е. клиенты центральной базы не должны попадать в филиал, а также клиенты филиала не должны попадать в центральную базу. Но часть клиентов, проходящих через интернет-магазин, должна проходить через центральную базу. Проблема возникает, если клиент зарегистрировался в базе филиала, а затем решил что-то заказать через интернет-магазин. В этом случае при выгрузке из центра в филиал он не должен задублироваться, а должен подцепиться существующий клиент.

На основе этих требований было решено попробовать обмен через формат EnterpriseData.

Краткая справка по обмену в формате EnterpriseData

Модуль менеджера обмена - это модуль конфигурации 1С, который собственно реализует правила конвертации для обмена. Будет располагаться во внешней обработке, которую мы будем подключать к узлу плана обмена.

ПКС - правила конвертации свойств

Создание плана обмена

Для удобства создадим подсистему "ECom_ОбменСФилиалами". Все новые объекты будем добавлять в эту подсистему. Изменения в типовые модули будем выносить в расширение (при подключении расширения надо будет снять галочки "безопасный режим", т.к. будут затрагиваться серверные модули).

Копируем план обмена "СинхронизацияДанныхЧерезУниверсальныйФормат", называем новый план обмена "ECom_ОбменСФилиалами".

В настройках состава плана обмена делаем Действия - Выключить все, а потом добавляем справочники:

  • ВидыЦен
  • Номенклатура

и документы:

  • ЗаказКлиента
  • УстановкаЦенНоменклатуры

Заходим в модуль менеджера. В процедуре ПолучитьВерсииФорматаОбмена необходимо изменить название плана обмена в запросе.

Также удобно добавить возможность отладки модуля менеджера обмена (внешней обработки), как это сделать, описано тут:

Процедура ОпределитьНастройки определяет, как наш план обмена обмена будет появляться в меню настройки синхронизации.

Процедура ОпределитьНастройки

Процедура ОпределитьНастройки(Настройки, ИдентификаторНастройки = "") Экспорт Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Истина; Настройки.ПутьКФайлуКомплектаПравилНаПользовательскомСайте = "https://users.v8.1c.ru/distribution/project/Trade110"; Настройки.ПутьКФайлуКомплектаПравилВКаталогеШаблонов = "\1c\trade"; Настройки.Вставить("ЗаголовокКомандыДляСозданияНовогоОбменаДанными", НСтр("ru = "Обмен с филиалами"")); Настройки.Вставить("ЗаголовокПомощникаСозданияОбмена", НСтр("ru = "Обмен с филиалами"")); Настройки.Вставить("ЗаголовокУзлаПланаОбмена", НСтр("ru = "Обмен с филиалами"")); Настройки.Вставить("ЭтоПланОбменаXDTO", Истина); КонецПроцедуры

А также необходимо в общем модуле ОбменДаннымиУТУП в процедуре СписокПлановОбмена добавить наш план обмена

ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ECom_ОбменСФилиалами);

В результате появится возможность настраивать обмен по нашему плану обмена:

Чтобы запускать обмен типовыми средствами необходимо еще в общих командах

  • НастроитьПараметрыТранспортаСообщенийОбмена
  • Синхронизировать
  • СоставОтправляемыхДанных

В свойстве "Тип параметра" отметить наш план обмена

Копируем типовые подписки на события:

  • СинхронизацияДанныхЧерезУниверсальныйФорматРегистрация
  • СинхронизацияДанныхЧерезУниверсальныйФорматРегистрацияДокумента

Указываем наши объекты, входящие в состав нашего плана обмена.

Копируем типовой модуль ОбменДаннымиСобытияУТ, в полученном модуле в процедурах меняем имя плана обмена с СинхронизацияДанныхЧерезУниверсальныйФормат на наш ECom_ОбменСФилиалами.

В созданных подписках указываем обработчики - процедуры из нашего нового модуля.

Также добавим в этот модуль функцию ЭтоЦентральнаяБаза(), которая нам потребуется в дальнейшем. Признаком центральной базы будем считать код узла, соответствующего текущей базе ("этот узел"), равным "ЦБ".

Функция ЭтоЦентральнаяБаза() Экспорт

Функция ЭтоЦентральнаяБаза() Экспорт Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВЫБОР | КОГДА ECom_ОбменСФилиалами.Код = ""ЦБ"" | ТОГДА ИСТИНА | ИНАЧЕ ЛОЖЬ | КОНЕЦ КАК ЭтоЦентральнаяБаза |ИЗ | ПланОбмена.ECom_ОбменСФилиалами КАК ECom_ОбменСФилиалами |ГДЕ | ECom_ОбменСФилиалами.ЭтотУзел" ; Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда Возврат Выборка.ЭтоЦентральнаяБаза; Иначе Возврат Ложь; КонецЕсли; КонецФункции // ЭтоЦентральнаяБаза()

Т.к. эта функция будет вызываться постоянно, необходимо ее закэшировать с помощью модуля повторного использования.

Создание правил регистрации

Для создания правил регистрации нам потребуется конфигурация Конвертация Данных v2.

Я для изучения вопроса использовал вот эту статью:

С помощью обработки MD83Exp.epf, входящей в состав поставки Конвертации 2, необходимо выгрузить структуру нашей конфигурации в файл.

Затем необходимо загрузить полученную структуру конфигурации в Конвертацию 2.

Создаем правила регистрации.

Выбираем нашу конфигурацию и наш план обмена.

И заходим в настройку правил регистрации.

Создаем правила регистрации для наших объектов:

Т.к. мы хотим, чтобы у нас был односторонний обмен (только из центра в филил), в настройку правил по каждому объекту надо добавить в обработчик "Перед обработкой" наш фильтр:

Отказ = Не ECom_ОбменДаннымиПовтИсп.ЭтоЦентральнаяБаза();

На "Заказ клиента" накладываем дополнительный фильтр по организации и по дате начала выгрузки:

Для документа "Установка цен номенклатуры" так же добавляем отбор по дате. Плюс к этому в обработчик "При обработке" добавляем фильтр по виду цен.

ИспользоватьКэш = Ложь; ВидыЦен = Объект.ВидыЦен.ВыгрузитьКолонку("ВидЦены"); ПараметрыЗапроса.Вставить("ВидыЦен", ВидыЦен); ТекстЗапроса = "ВЫБРАТЬ | ECom_ОбменСФилиалами.Ссылка КАК Ссылка |ИЗ | ПланОбмена.ECom_ОбменСФилиалами.ВидыЦенНоменклатуры КАК ECom_ОбменСФилиаламиВидыЦенНоменклатуры | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ПланОбмена.ECom_ОбменСФилиалами КАК ECom_ОбменСФилиалами | ПО ECom_ОбменСФилиаламиВидыЦенНоменклатуры.Ссылка = ECom_ОбменСФилиалами.Ссылка | И (ECom_ОбменСФилиаламиВидыЦенНоменклатуры.ВидЦенНоменклатуры В (&СвойствоОбъекта_ВидыЦен)) | И (ECom_ОбменСФилиалами.ЭтотУзел = ЛОЖЬ)" ;

Этот обработчик с помощью запроса позволяет определить список узлов, в которых будет произведена регистрация объекта. Почему-то хотя наш параметр запроса называется "ВидыЦен", в запросе мы должны писать "СвойствоОбъекта_ВидыЦен".

На справочник "Виды цен" также накладываем фильтр:

Сохраняем правила регистрации во внешний файл:

Полученный XML-файл необходимо загрузить в макет "Правила регистрации" нашего плана обмена:

Отметим, что при работе конфигурации правила регистрации берутся вовсе не из этого макета, а из правил, хранящихся в регистре сведений "ПравилаДляОбменаДанными". А в этот регистр правила загружаются как раз из макета, зашитого в конфигурацию - при создании настройки синхронизации. Это приводит к тому, если у нас уже создана настройка синхронизации, а нам по каким-то причинам потребовалось поменять правила регистрации - после изменения правил в макете конфигурации нужно обновить их также в этом регистре:

Правила конвертации

Для создания правил конвертации нам потребуется конфигурация Конвертация Данных v3. Лучше пользоваться чистой базой. Например, разрабатывая конвертацию для формата данных EnterpriseData 1.3, для некоторых объектов почему-то требовалось задавать реквизиты (ПКС), не являющиеся казалось бы обязательными. Оказалось, что они обязательны в версии 1.2, и простое наличие в базе Конвертации загруженного описания этого формата уже сбивало логику работы программы. Поэтому берем чистую базу, и грузим в нее все "с нуля".

Очень здорово работа с конвертацией 3.0 описана тут:

Загружаем структуру конфигурации из файла, выгруженного ранее (в Конвертации 2).

Выгружаем из УТ 11 XDTO-пакет EnterpriseData_1_3_8 в файл

Загружаем полученный файл в Конвертацию 3

Создаем конвертацию

Версия формата менеджера обмена указывается в зависимости от конфигурации. Например для УТ 11.3 это "1", для УТ 11.4 - "2".

Что такое конвертация? Для выгрузки и загрузки объекта нам нужно:

  1. Правило отправки данных - тут мы можем накладывать фильтр на объекты и применять разные правила конвертации (например, для папок номенклатуры и элементов указываются разные правила конвертации из-за разного набора реквизитов)
  2. Правило конвертации "из 1С в XML" - тут данные 1С преобразуются в данные формата EnterpriseData (например, можно документ "Реализация" сконвертировать в документ "Поступление")
  3. Правило конвертации "из XML в 1С"
  4. Правило получения данных

Если объект участвует в плане обмена - для него обязательно необходимо создать правило отправки данных. В нашем случае это:

  • Виды цен
  • Номенклатура
  • Заказ клиента
  • Установка цен номенклатуры

Как себя будут вести реквизиты этих объектов ссылочного типа? Например, реквизит "Организация". У каждого "объектных" типов в формате EnterpriseData (например, Справочник.Контрагенты) есть так называемые ключевые свойства. Так вот, когда мы выгружаем заказ, в правилах конвертации мы указываем реквизит "Организация". При выгрузке этого реквизита выгружаются и его ключевые свойства. Мы не будем создаваться создавать правила отправки для справочника "Организации", потому что эти данные в работающей системе меняются крайне редко, мы просто пропишем алгоритм, который при получении заказа правильно подставит уже существующую в базе филиала организацию.

Итак, правила отправки мы пишем для часто меняющихся объектов, "статичные" же объекты мы лучше однократно (и повторно при необходимости) выгрузим через универсальную выгрузку-загрузку.

Создаем правило конвертации для отправки номенклатуры.

Настраиваем "правила конвертации свойств". Суть в чем. EnterpriseData - это структура данных, по сути та же конфигурация 1С. Только скажем так чуть более упрощенная и универсальная. Она должна подходить для разных конфигураций 1С, поэтому состав и название объектов отличается от УТ 11. Поэтому нам нужно прописать соответствие - как реквизиты называются в УТ11, и как в EnterpriseData. Есть так называемые "ключевые свойства" - это обязательные реквизиты для данной версии формата. Их можно посмотреть в "Дереве объектов формата":

Итак, указываем правила конвертации свойство для номенклатуры:

Как видим, у нас появилось несколько реквизитов "сложного" типа, для них также необходимо создать "Правила конвертации объектов", иначе в при выгрузке будет выходить такое сообщение в ошибках: "Структура объекта "/ЕдиницаИзмерения" не соответствует типу".

Правила конвертации для перечислений, и прочих предопределенных (в конфигураторе) данных создаются на вкладке:

Для этих (и некоторых других) данных удобно, чтобы правило работало сразу и отправку, и на получение.

Указываем созданные правила в ПКС для номенклатуры:

Теперь создадим правило конвертации для "Заказа клиента".

Добавим правила конвертации для табличной части "Товары". Для начала укажем соответствие реквизитов в ПКС. Необходимо проставить галочку "Используется алгоритм", т.к. значения табличной части будут формироваться не "сами", нужно еще написать небольшой алгоритм. При использовании алгоритма нам не обязательно указывать реквизиты объекта из 1С, т.к. значения для выгрузки в файл XML все равно будут формироваться алгоритмом. Необходимо также указывать правило конвертации свойства для "сложных" типов.

Теперь нужно добавить алгоритм заполнения табличной части в обработчик "При отправке".

#Область Товары // Табличные части Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Товары.НомерСтроки КАК НомерСтрокиДокумента, | Товары.Номенклатура КАК Номенклатура, | ВЫБОР | КОГДА НоменклатураСправочник.НаименованиеПолное = """" | ТОГДА НоменклатураСправочник.Наименование | ИНАЧЕ НоменклатураСправочник.НаименованиеПолное | КОНЕЦ КАК НоменклатураНаименование, | ЕСТЬNULL(НоменклатураСправочник.ЕдиницаИзмерения, ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)) КАК ЕдиницаИзмерения, | ВЫРАЗИТЬ(""СобственныеТовары"" КАК СТРОКА(18)) КАК ТипЗапасов, | Товары.Количество, | Товары.Цена КАК Цена, | Товары.Сумма, | Товары.СтавкаНДС, | Товары.СуммаНДС |ИЗ | Документ.ЗаказКлиента.Товары КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК НоменклатураСправочник | ПО Товары.Номенклатура = НоменклатураСправочник.Ссылка |ГДЕ | Товары.Ссылка = &Ссылка | И Товары.Отменено = ЛОЖЬ" ; Запрос.УстановитьПараметр("Ссылка", ДанныеИБ.Ссылка); ДанныеXDTO.Вставить("Товары", Запрос.Выполнить().Выгрузить()); #КонецОбласти

В правилах конвертации при получении заказа нужно прописать алгоритм, который выполняет обратную операцию

Алгоритм заполняет ПолученныеДанные.ДополнительныеСвойства.Товары, которые потом автоматически записываются в табличную часть "Товары" загружаемого объекта.

МассивСтрокТовары = Новый Массив; ПравилаЗаполнения = Новый Соответствие; ПравилаЗаполнения.Вставить("Номенклатура", "Номенклатура"); ПравилаЗаполнения.Вставить("Количество", "Количество"); ПравилаЗаполнения.Вставить("Сумма", "Сумма"); ПравилаЗаполнения.Вставить("Цена", "Цена"); ПравилаЗаполнения.Вставить("СтавкаНДС", "СтавкаНДС"); ПравилаЗаполнения.Вставить("СуммаНДС", "СуммаНДС"); ПравилаЗаполнения.Вставить("Склад", "Склад"); Если ДанныеXDTO.Свойство("Товары") И ЗначениеЗаполнено(ДанныеXDTO.Товары) Тогда Для Каждого Строка Из ДанныеXDTO.Товары Цикл СтруктураДанныхСтроки = Новый Структура; Для Каждого ПравилоЗаполнения Из ПравилаЗаполнения Цикл СтруктураДляПереносаЗначения = Новый Структура(ПравилоЗаполнения.Ключ, Неопределено); ЗаполнитьЗначенияСвойств(СтруктураДляПереносаЗначения, Строка); Значение = СтруктураДляПереносаЗначения[ПравилоЗаполнения.Ключ]; Если Значение <> Неопределено Тогда СтруктураДанныхСтроки.Вставить(ПравилоЗаполнения.Значение, Значение); КонецЕсли; КонецЦикла; СтруктураДанныхСтроки.Вставить("КоличествоУпаковок", СтруктураДанныхСтроки.Количество); Если ДанныеXDTO.Свойство("Склад") Тогда СтруктураДанныхСтроки.Вставить("Склад", ДанныеXDTO.Склад); КонецЕсли; МассивСтрокТовары.Добавить(СтруктураДанныхСтроки); КонецЦикла; КонецЕсли; Если МассивСтрокТовары.Количество() > 0 Тогда ПолученныеДанные.ДополнительныеСвойства.Вставить("Товары", МассивСтрокТовары); КонецЕсли;

Теперь реализуем такой механизм обмена контрагентами (покупателями): при загрузке заказа в базу филиала ищем существующего клиента по телефону (например, клиент что-то купил в филиале, зарегистрировался, а потом решил приобрести что-то в интернет-магазине, и заказ попал в центральную базу). Если клиент по телефону найден, то подставляем в заказ его, если же нет - создаем нового. Для этого нам необходимо будет вмести с заказом передавать номер телефона клиента. В типовые поля заказа в формате EnterpriseData телефон не входит, чтобы его передать, можно воспользоваться полем AdditionalInfo, куда можно записывать дополнительную информацию. Мы будем передавать дополнительную информацию в виде структуры с необходимыми полями. Через AdditionalInfo можно передавать и структуры, и таблицы значений. В обработчик "При отправке" в правила конвертации заказа при отправке

добавляем код:

Текст обработчика "При отправке"

СтруктДопДанные = Новый Структура; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПартнерыКонтактнаяИнформация.НомерТелефона |ИЗ | Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация |ГДЕ | ПартнерыКонтактнаяИнформация.Ссылка = &Партнер | И ПартнерыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонПартнера)" ; Запрос.УстановитьПараметр("Партнер", ДанныеИБ.Партнер); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда структДопДанные.Вставить("НомерТелефона", Выборка.НомерТелефона); КонецЕсли; ДанныеXDTO.Вставить("Additionalinfo", структДопДанные);

Соответственно, в обработчик "При конвертации данных XDTO" в найстройку конвертации при получении

Добавляем код:

Текст обработчика "При конвертации данных XDTO"

Если ДанныеXDTO.Свойство("AdditionalInfo") Тогда Если ДанныеXDTO.AdditionalInfo.Свойство("НомерТелефона") Тогда НомерТелефона = ДанныеXDTO.AdditionalInfo.НомерТелефона; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ПартнерыКонтактнаяИнформация.Ссылка КАК Партнер, | Контрагенты.Ссылка КАК Контрагент |ИЗ | Справочник.Партнеры.КонтактнаяИнформация КАК ПартнерыКонтактнаяИнформация | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты | ПО ПартнерыКонтактнаяИнформация.Ссылка = Контрагенты.Партнер | И (ПартнерыКонтактнаяИнформация.Вид = ЗНАЧЕНИЕ(Справочник.ВидыКонтактнойИнформации.ТелефонПартнера)) | И (ПартнерыКонтактнаяИнформация.НомерТелефона = &НомерТелефона)" ; Запрос.УстановитьПараметр("НомерТелефона", НомерТелефона); Выборка = Запрос.Выполнить().Выбрать(); Если Выборка.Следующий() Тогда ПолученныеДанные.Партнер = Выборка.Партнер; ПолученныеДанные.Контрагент = Выборка.Контрагент; Иначе ПартнерОбъект = Справочники.Партнеры.СоздатьЭлемент(); ПартнерОбъект.Наименование = ДанныеXDTO.Контрагент.Наименование; ПартнерОбъект.НаименованиеПолное = ПартнерОбъект.Наименование; ПартнерОбъект.Клиент = Истина; ПартнерОбъект.ЮрФизЛицо = Перечисления.КомпанияЧастноеЛицо.ЧастноеЛицо; НоваяСтрока = ПартнерОбъект.КонтактнаяИнформация.Добавить(); НоваяСтрока.Тип = Перечисления.ТипыКонтактнойИнформации.Телефон; НоваяСтрока.Вид = Справочники.ВидыКонтактнойИнформации.ТелефонПартнера; НоваяСтрока.НомерТелефона = НомерТелефона; НоваяСтрока.Представление = НомерТелефона; НоваяСтрока.ЗначенияПолей = УправлениеКонтактнойИнформациейСлужебныйВызовСервера.КонтактнаяИнформацияXMLПоПредставлению(НоваяСтрока.Представление, Перечисления.ТипыКонтактнойИнформации.Телефон); ПартнерОбъект.ОбменДанными.Загрузка = Истина; ПартнерОбъект.Записать(); КонтрагентОбъект = Справочники.Контрагенты.СоздатьЭлемент(); КонтрагентОбъект.Наименование = ПартнерОбъект.Наименование; КонтрагентОбъект.НаименованиеПолное = КонтрагентОбъект.Наименование; КонтрагентОбъект.ЮрФизЛицо = Перечисления.ЮрФизЛицо.ФизЛицо; КонтрагентОбъект.Партнер = ПартнерОбъект.Ссылка; КонтрагентОбъект.ОбменДанными.Загрузка = Истина; КонтрагентОбъект.Записать(); ПолученныеДанные.Партнер = ПартнерОбъект.Ссылка; ПолученныеДанные.Контрагент = КонтрагентОбъект.Ссылка; КонецЕсли; КонецЕсли; КонецЕсли;

В выгрузке цен номенклатуры есть несколько интересных моментов:

  • документ установки цен может содержать несколько видов цен, а нам нужно выгружать только те, которые подпадают под фильтр.
  • В формате EnterpriseData документ "Установка цен номенклатуры" имеет только один тип цен. Т.е. один документ в 1С должен выгружаться как несколько объектов EnterpriseData.

Для реализации фильтра нам потребуется где-то хранить выгружаемые виды цен, установленные в настройках узла обмена. Для этого нам потребуются "Параметры конвертации":

А также обработка события "Перед конвертацией":

В правилах обработки данных для документа "Установка цен номенклатуры" нам необходимо отключить использование конвертации "в типовом" варианте, а вместо этого генерировать объект XDTO "на ходу":

Для этого мы обратимся напрямую к методу ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки. Преобразуем документ в массив необходимых нам структур с одним типом цен, и уже каждую эту структуру отдельно выгрузим через правила конвертации. Выглядит, конечно, запутанно.

Текст обработчика "При обработке"

Если ТипЗнч(ДанныеИБ) = Тип("Структура") Тогда Возврат; КонецЕсли; Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ЦеныНоменклатуры.ВидЦены КАК ТипЦен, | ЦеныНоменклатуры.Номенклатура КАК Номенклатура, | ЦеныНоменклатуры.Цена КАК Цена |ИЗ | Документ.УстановкаЦенНоменклатуры.Товары КАК ЦеныНоменклатуры |ГДЕ | ЦеныНоменклатуры.Ссылка = &Ссылка | И ЦеныНоменклатуры.Цена <> 0 | И ЦеныНоменклатуры.ВидЦены В(&ВидыЦенНоменклатуры) |ИТОГИ ПО | ТипЦен"; Запрос.УстановитьПараметр("Ссылка", ДанныеИБ.Ссылка); Запрос.УстановитьПараметр("ВидыЦенНоменклатуры", КомпонентыОбмена.ПараметрыКонвертации.ВидыЦенНоменклатуры); ТаблицаТоваров = Новый ТаблицаЗначений(); ТаблицаТоваров.Колонки.Добавить("Номенклатура"); ТаблицаТоваров.Колонки.Добавить("Цена"); ВыборкаВидЦены = Запрос.Выполнить().Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); ПравилоУстановкаЦенОтправка = КомпонентыОбмена.ПравилаОбработкиДанных.Найти("Документ_УстановкаЦенНоменклатуры", "Имя"); Если Не ПравилоУстановкаЦенОтправка = Неопределено Тогда Пока ВыборкаВидЦены.Следующий() Цикл Если НЕ ЗначениеЗаполнено(ВыборкаВидЦены.ТипЦен) Тогда Продолжить; КонецЕсли; ДанныеИБСтруктура = Новый Структура("Дата, Номер, Ссылка"); ЗаполнитьЗначенияСвойств(ДанныеИБСтруктура, ДанныеИБ); ВыборкаДетали = ВыборкаВидЦены.Выбрать(); ТаблицаТоваров.Очистить(); Пока ВыборкаДетали.Следующий() Цикл СтрокаТовары = ТаблицаТоваров.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаТовары, ВыборкаДетали); КонецЦикла; ДанныеИБСтруктура.Вставить("ТипЦен", ВыборкаВидЦены.ТипЦен); ДанныеИБСтруктура.Вставить("Товары", ТаблицаТоваров); ОбменДаннымиXDTOСервер.ВыгрузкаОбъектаВыборки(КомпонентыОбмена, ДанныеИБСтруктура, ПравилоУстановкаЦенОтправка); КонецЦикла; КонецЕсли; ИспользованиеПКО.Документ_УстановкаЦенНоменклатуры = Ложь;

В правило конвертации в ПКС необходимо добавить свойство "ТипЦен". При этом надо выбирать способ выбора свойств "Вручную".

Настройка синхронизации

Необходимо задать значение константы "Префикс информационной базы" - "ЦБ":

Создаем новую настройку синхронизации

Зададим в настройках фильтр по дате документов, организации, виду цен:

Чтобы подключить нашу внешнюю обработку, содержащую модуль менеджера обмена, необходимо в настройках формы указать отображение вкладки "служебная информация":

Создадим вторую чистую базу (для филиала) из cf-ника центральной базы. Также не забываем подключить наше расширение. При создании базы автоматически создаются справочники "Валюта" и "Единицы измерения". Чтобы при загрузке данных из центральной базы не произошло задвоение этих данных, необходимо в конвертации по этим справочникам идентификацию сделать не по UID, а по коду.

Префикс информационной базы задаем "ФЛ" и настраиваем синхронизацию, аналогично центральной базе.

Дополнительные файлы со сквозным примером.

Состав файлов, приложенных к данной статье:

  • cf-файл "Доп. объекты конфигурации.cf" для объединения с основной конфигурацией УТ 11, содержащий разработанный план обмена
  • cfe-файл с расширением конфигурации, для корректировки модулей конфигурации
  • xml-файл "Правила регистрации.xml"
  • epf-файл "МенеджерДемо.epf"

Порядок установки плана обмена. В конфигураторе запускаем операцию сравнения и объединения с "Доп. объекты конфигурации.cf". Снимаем галочки со всех объектов:

Выбираем "Действия - отметить по подсистемам файла", отмечаем только "ECom_ОбменСФилиалами"

Добавляем расширение из файла "ECom_ОбменДаннымиСФилиалами.cfe", снимаем галочки про безопасность:

Для корректировки правил регистрации вложенный файл "Правила регистрации.xml" можно загрузить в Конвертацию 2. Предварительно необходимо загрузить структуру конфигурации, как описано .

Для корректировки правил конвертации вложенный файл "МенеджерДемо.epf" можно загрузить в Конвертацию 3. Предварительно необходимо создать описание конвертации, как описано .



 


Читайте:



Промокоды пандао на баллы

Промокоды пандао на баллы

Иногда, при попытке зайти в официальный магазин цифрового гиганта, Плей Маркет пишет активировать промокод. Для того, чтобы получить исчерпывающий...

Установка дополнительной оперативной памяти

Установка дополнительной оперативной памяти

«Принципы естественного запоминания базируются на нервных связях, которые создаются в головном мозге, - говорит Ольга Зимнякова, врач-невролог...

Что делать, если наушники не воспроизводят звук на ноутбуке

Что делать, если наушники не воспроизводят звук на ноутбуке

Проблемы с подключением и работой наушников встречаются достаточно часто. В данном материале мы рассмотрим несколько наиболее вероятных причин,...

Диоды справочник Выпрямительные диоды большой мощности 220в

Диоды справочник Выпрямительные диоды большой мощности 220в

Основное предназначение выпрямительных диодов – преобразование напряжения. Но это не единственная сфера применения данных полупроводниковых...

feed-image RSS