Обмен по расписанию типовыми средствами.

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

Организацию полностью автоматического обмена данными я рассматриваю на примере обмена 1С: Управление Производственным Предприятием (УПП) ==> 1С: Бухгалтерия (БП) 2.0 с использованием произвольных правил обмена.

 

Есть 2 базы: 1С:УПП и Бухгалтерия предприятия 2.0. В УПП создаются ряд документов: Реализация товаров и услуг, Поступление товаров и услуг, Счета-фактуры. В бухгалтерии создаются документы по движению денежных средств: РКО, ПКО и платежки.

Структура документов в этих конфигурациях несколько отличается и поэтому были написаны произвольные правила обмена при помощи продукта «Конвертация данных 2.1».

Далее я попытаюсь пошагово объяснить, как можно при помощи типовых средств 1С: УПП и БП 2.0 настроить автоматический обмен данными.

 

ШАГ 1. Настройка узлов обмена.

Для обмена данными будет использовать план обмена «Полный». Для этого в БП зайдем операции ==> Планы Обмена ==> Полный.

План обмена ВСЕГДА содержит один предопределенный узел обмена. Здесь есть три момента:

1) В настройке обмена нельзя использовать предопределенный узел

2) Код этого узла по умолчанию не указан и обязательно должен быть задан

3) В базах, между которыми организуется обмен данными, коды предопределенных узлов не должны совпадать, это приведен к ошибке.

В Плане обмена «Полный» в БП выполнем следующие действия:

1) Укажем код и наименование предопределенного узла. Скажем, наименование = «Предопределенный», Код = 001.

2) Создадим новый узел обмена, назовем его «УПП» и зададим ему код 003.

 

Аналогично откроем план обмена «Полный» 1С: УПП и выполним следующие действия:

1) Укажем код и наименование предопределенного узла. Например, Наименование = «Предопределенный», код = «002».

2) Создадим новый узел обмена, назовем его «БП» и зададим ему код 003.

 

КОДЫ непредопределенных узлов обмена в базе УПП и БП должны совпадать.

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

ШАГ 2. Создание настройки автоматического обмена данными.

 

В базе УПП в интерфейсе «Полный». Меню «Сервис» ==> «Прочие обмены данными» ==> «Все настройки обмена данными».

 

В открывшейся форме выбрать пункт «Распределенные информационные базы» и нажать кнопку «Добавить». 

 Распределенные информационные базы

В появившемся окне необходимо указать наименование настройки. В поле «Узел» необходимо выбрать план обмена «Полный» и указать созданный ранее узел обмена.

Далее нужно отметить флажок «Обмен по правилам обмена» и нажать на кнопку «Загрузить правила из файла».

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

 

В Поле «Тип обмена» выбрать пункт «Обмен через подключение к информационной базе» и указать параметры подключения: Тип инф базы, версию платформы, путь или адрес на сервере, пользователя и пароль. 

 

Далее нужно перейти на вкладку «Обмен по правилам» и нажать на кнопку «Загрузить настройки». В правилах обмена не должно быть правилом со способом выборки «произвольный запрос». Это приведет к ошибке

Загрузка настроек плана обмена

 

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

 

ШАГ 3. Настройка обмена данными.

Для настройки автоматического обмена данными нужно перейти на вкладку «Автоматический обмен», нажать кнопку «Добавить». В появившемся окне можно задать расписание обмена (время, периодичность) или обмен данными при наступлении какого-либо события (например, вход пользователя в систему)

Настройка расписания обмена


Теперь можно проверить созданные настройки

New layer…

52 Comments

  1. AlexBar

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

    Reply
  2. kser87

    У меня была похожая ситуация. Небольшой совет: правила обмена тестируйте при помощи обработки «Обмен данными в формате xml», а не «Универсальный обмен данными в формате xml». Потому, что эта обработка используется при автоматической выгрузке средствами типовых конфигураций

    Reply
  3. melenaspb

    Спасибо за статью.

    Вроде все понятно, но что-то у меня не получается . Может вы мне поможете советом.

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

    Создала узлы для обмена:

    В первой бухгалтерии ( откуда выгружаю) : предопределенный узел код 001, основной узел код 100.

    Во второй бухгалтерии ( куда загружаю) : предопределенный узел код 002, основной узел код 100.

    Обмен через каталог. Делаю выгрузку, создается файл для обмена Message_001_100.xml

    А загрузка не идет.Пишет :Начат обмен данными по настройке «БП-Экономисты». Ни загрузка ни выгрузка данных не были произведены». Смотрю отладчиком — не находит файл для обмена, у меня создан файл Message_001_100 , а ищет Message_100_002. То ли я запуталась в кодах узлов, то ли еще что-то.

    Reply
  4. kser87

    попробуйте в одной из бухгалтерий поменять код основного узла

    Reply
  5. dimazzz84

    Такая же ошибка

    ЗАГРУЗКА В ПРИЕМНИКЕ: {Обработка.ОбменДаннымиXML.МодульОбъекта(13705)}: Не найден узел обмена для загрузки данных. План обмена: Полный, Код: 002

    Reply
  6. Rubenovich

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

    Reply
  7. kser87

    Для этого существует конфигурация «Конвертация данных» (доступна на дисках ИТС)

    Вообще правила обмена можно найти в шаблонах конфигураций. Например, в шаблоне УТ можно найти правила обмена УТ-БП разных версий.

    На данном сайте много разных правил. Обычно называется просто «Правила обмена «Название конфигурации 1» — «Название конфигурации 2». Пример публикации: http://infostart.ru/public/153200/

    Reply
  8. suvolod

    куда делись все картинки к статье?

    Reply
  9. kser87

    (8) suvolod, Не понятно

    Reply
  10. may1c

    Статья хорошая. Первый этап по созданию планов обмена выполняется без проблем.

    Но….

    Мне нужно создать обмен между УТ и Ут.Конфигурации типовые и идентичные. Можно использовать обработку

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

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

    (ограничение по нумерации). Еще нужно, чтобы документы, которые присутствуют в обоих базах при изменении

    не переносились.

    Итак идеальный вариант полный план обмена РИБ. Но так как делаю методом тыка возникают следующие сложности:

    1. Можно не ставить в базе источнике галку загружать. не приведет ли это к огромному росту журнала регистрации?

    2. Пыталась создать пустой файл правил, чтобы загрузить его в при загрузки из базы приемника. Скопировала файл правил и просто очистила его. Не получилось — пустой файл программа не определяет как файл правил.

    Reply
  11. AlexBar

    Кто подскажет выход: настроил обмен между УПП и произвольной конфигурацией. Обмен идет в одну сторону: из УПП в произвольную. В УПП использую план обмена полный. Естественно в нем регистрируются все объекты, для которых для полного стоит авторегистрация. Выгружаются не все объекты. Выгрузка идет по правилам. При получении квитанции из произвольной конфигурации с регистрации снимаются только те объекты, которые были выгружены по правилам. Остальные объекты накапливаются в таблицах регистрации. Как их снимать с регистрации? По какой причине они не «гасятся»?

    Reply
  12. FedorovEvg

    Картинки куда-то исчезли, а новичкам они помогли бы сильно…

    Reply
  13. ilkoder

    Статья хорошая, только по кодам узлов, особенно если будет обмен через файл, нужно уточнить. Если в первой базе у предопределенного узла код 001, а у второго элемента узла — код 002, то во второй базе должно быть наоборот — у предопределенного узла код 002, а у второго — код 001. При этом сообщения от первой базы ко второй — Message_001_002, а в обратную сторону Message_002_001.

    Reply
  14. svilsa
    Статья хорошая, только по кодам узлов, особенно если будет обмен через файл, нужно уточнить. Если в первой базе у предопределенного узла код 001, а у второго элемента узла — код 002, то во второй базе должно быть наоборот — у предопределенного узла код 002, а у второго — код 001. При этом сообщения от первой базы ко второй — Message_001_002, а в обратную сторону Message_002_001.

    Это правда, в этом пункте про нумерацию в узлах в статье неточность, хотя в целом статья очень хорошая

    Reply
  15. spa07

    Статья интересная. А вот как быть когда односторонний обмен? Как очистить авторегистрацию в исходной базе при успешной загрузке в базу приемник?

    Reply
  16. Шапокляк

    В плане обмена «Полный» стоит флажок «Распределенная информационная база». Очень прошу кого-нибудь ответить на вопрос — как можно по этому плану обмениваться между мягко говоря неодинаковыми конфигурациями? Разве РИБ не предполагает полного сходства конфигураций? Или обмен по правилам делает флажок РИБ нерабочим?

    Reply
  17. kvovka

    Статья хорошая, но не решила моей проблемы. у меня УТ переписанная всмерть и БГУ. Обмен односторонний, БГУ -> УТ. Есть правила из КД, с помощью обработки все замечательно переносится. Пробуя настроить обмен по этой статье получил такую ошибку — Неправильный формат сообщения. Действительно, заголовок БГУ создает не тот при выполнении обмена. Так и не смог уломать одинэску заработать. Пришлось допиливать обе конфы и искусственно пускать обмен через обработку УниверсальныйОбменДаннымиXML. Решение очень мне не нравится, но поджимали сроки. Так и не нашел решения проблемы с форматом((( Мож кто подскажет?

    Reply
  18. kser87

    (16) Шапокляк, Извините, что не долго не давал ответ на Ваш вопрос. Действительно механизм РИБ предполагает использование идентичных конфигураций. Или РИБ требует, чтобы хотя бы совпадали объекты в базе-источнике и приемнике. Но все равно механизм можно заставить работать если открыть настройки обмена через «Все функции». В обычном приложении откройте операции — справочники — настройки обмена данными

    Reply
  19. kser87

    (17) kvovka, Для тестирования правил обмена используйте обработку «Обмен данными в формате xml». (есть и такая!). Отличие обработки в том, что у нее в названии нет слова «Универсальный». Ну это шутка. Если серьезно, то эта обработка не поддерживает некоторые функции Универсального обмена. Например, там нельзя использовать правила выгрузки со способом выгрузки «Произвольный алгоритм». Проверьте, что такового у вас в правилах нет

    Reply
  20. kser87

    (18) kser87, Вообще при помощи механизма я настраивал обмен между БП 2.0 и полностью самописной конфигурацией. Так что скорее всего проблема у вас в том, что не там тестируете

    Reply
  21. kvovka

    (20) kser87, опыта настройки обмена не было, поэтому не исключаю, что мог где то галку не поставить или еще чего. Убил много времени, пытался по всякому, но не «шмогла, я, не шмогла»(с) 🙂

    Прочитал в нете, что вот такой заголовок должен быть у xml, чтобы она читалась командой НачатьЧтение(с).

    <?xml version=»1.0″ encoding=»UTF-8″?>

    <v8msg:Message xmlns:v8msg=»http://v8.1c.ru/messages»>

    <v8msg:Header>

    <v8msg:ExchangePlan>НазваниеПланаОбмена</v8msg:ExchangePlan>

    <v8msg:To>КодУзлаКуда</v8msg:To>

    <v8msg:From>КодУзлаОткуда</v8msg:From>

    <v8msg:MessageNo>НомерСообщения</v8msg:MessageNo>

    <v8msg:ReceivedNo>НомерПринятого</v8msg:ReceivedNo>

    </v8msg:Header>

    У меня при нажатии кнопки — «Выполнить обмен» БГУ создает такой вот заголовок —

    <?xml version=»1.0″ encoding=»UTF-8″ ?>

    — <ФайлОбмена ВерсияФормата=»2.0″ ДатаВыгрузки=»2013-06-24T10:56:48″ ИмяКонфигурацииИсточника=»БухгалтерияГосударственногоУчрежде­ния» ИмяКонфигурацииПриемника=»УправлениеТорговлей» ИдПравилКонвертации=»5e8e43ce-1c32-4556-80a8-3523fe3ae162″ Комментарий=»»>

    — <ПравилаОбмена>

    <ВерсияФормата>2.01</ВерсияФормата>

    <Ид>5e8e43ce-1c32-4556-80a8-3523fe3ae162</Ид>

    <Наименование>БухгалтерияГосударственногоУчреждения(ЕЭК) —> УправлениеТорговлей(ЕЭК)</Наименование>

    <ДатаВремяСоздания>2013-06-24T10:56:16</ДатаВремяСоздания>

    <Источник>БухгалтерияГосударственногоУчреждения</Источник>

    <Приемник>УправлениеТорговлей</Приемник>

    <Параметры />

    <Обработки />

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

    Reply
  22. kser87

    (21) kvovka, У вас еще может быть очень старая обработка «Универсальный обмен данными». Скачайте последнюю конвертацию данных. Там в каталоге шаблонов лежит эта обработка последней версии. В УТ и в БП найдите обработку «УниверсальныйОбменДаннымиXML» в дереве конфигурации. Кликните на нее правой кнопкой мыши, выберите пункт «Заменить на внешнюю обработку» и выберите обработку из последней конвертации.

    Reply
  23. kser87

    (21) kvovka, БухгалтерияГосударственногоУчреждения — мать моя женщина!

    Reply
  24. kser87

    (22) kser87, Можно еще попробовать обработку «Обмен данными в формате xml» выцепить из бухни и закачать в УТ. Если у вас УТ 10, то она тоже может быть очень старой

    Reply
  25. kvovka

    Все есть. Универсальный обмен данными не используется при обмене, который описан в вашей статье. Сейчас попробую заменить обработку — Обмен данными в формате xml

    Reply
  26. Шапокляк

    (18) Спасибо за ответ. Я за это время и сама попыталась проделать предложенное вами. Все работает, и это здорово!

    Reply
  27. kvovka

    (24) kser87, а вы можете мне показать заголовок вашего xml файла? А то у меня все по старому:

    Ошибка при начале чтения файла сообщения обмена: {Обработка.КонвертацияОбъектовРаспределенныхИнформационныхБаз.МодульОбъекта(105)}: Ошибка при вызове метода контекста (НачатьЧтение): Неправильный формат сообщения

    Reply
  28. slazzy

    (21) kvovka, здравствуйте. Не знаю актуально ли ещё, уже наверно нет 🙂 но ответ на самом деле элементарен. В конфигурации-приёмнике надо установить галочку «обмен по правилам» и создать пустые правила обмена данными, которые ничего не выгружают. Тогда подобной ошибки не будет

    Reply
  29. lesenoklenok

    Спасибо большое, делала что-то подобное, но как-то не сложилось с таким обменом, данные то дублировались, то пропадали, то не передавались.

    Reply
  30. kser87

    (29) lesenoklenok, видимо проблемы в правилах были

    Reply
  31. insurgut

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

    Reply
  32. shs111

    Требуется обработка для УТ 10.3 в БП 8.3

    Reply
  33. kser87

    (32) shs111, как понимать ваше сообщение?

    Reply
  34. Nicholas

    Настроил односторонний обмен из базы А в базы Б и В.

    Первый момент.

    Чтобы все правильно работало, коды предопределенных элементов в планах обмена должны быть, например:

    001 — в базе А,

    002 — в базе Б,

    003 — в базе В.

    В базе А соответственно два правила выгрузки:

    в базу Б с кодом плана обмена 002,

    в базу В с кодом плана обмена 003.

    В базе Б одно правило загрузки из базы А с кодом плана 001.

    В базе В одно правило загрузки из базы А с кодом плана 001.

    Второй момент.

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

    Третье

    Выгружаются только измененные объекты. Но т.к. выгрузка только в одном направлении и в ответ не приходит подтверждение успешной загрузки, то количество выгружаемых объектов с каждым разом растет. Как это победить я пока не понял. Может кто подскажет?

    Reply
  35. Nicholas

    (11)

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

    Как настроить получение квитанции из произвольной конфигурации?

    Где можно посмотреть таблицы регистрации?

    Не разобрались как «гасить»?

    Reply
  36. insurgut

    (35) Nicholas, загрузив пустые правила обмена для базы-приемника — это и будет квитанцией.

    Reply
  37. Nicholas

    (36) insurgut, получается нужно делать двусторонний обмен, но только, чтобы в обратную сторону выгружалось всегда 0 элементов?

    Получается, что можно использовать то же правило, что и для выгрузки, но только в настройках для всех объектов указать «не выгружать». А что если там поставить «по ссылке»?

    Reply
  38. kser87

    (37) Nicholas, «по ссылке» означает, что элемент будет выгружен только в том случае, если на него есть ссылки в выгружаемых элементах. Например, вы ставите «Не выгружать» для справочника «Номенклатура». Он выгружен не будет. Но в том случае, если выгружаются скажем документы реализации, то номенклатура в них выгружена будет

    Reply
  39. insurgut

    (37) Nicholas, нет, конкретно для этой задачи (чтобы в ответ приходило только подтверждение об успешной загрузке данных) нужны, вернее достаточно, именно пустых правил. В котором не будет ни одного ПВД или ПКО.

    Reply
  40. AndreykO

    Всё-таки не понимаю до конца с этими кодами узлов.

    Есть ЗУП, где в плане Полный узлы: 002 — Центральный, 003 — Переферийная и БП, где в плане Полный узлы: ЖК — Центральный, РБ — Периферийка

    Как видим, изначально коды у всех разные.

    Создаём в ЗУП в плане Полный узел 333 — Обмен с БП, а в БП в плане Полный узел 333 — Обмен с ЗУП

    И конечно обмен не взлетает — коды-то разные, при первом же обмене из ЗУП пишет: «Не найден узел обмена для загрузки данных. План обмена: Полный, Код: 002»

    То есть, я так понимаю, он пытается найти узел в БП с кодом 002, тогда как в БП-то центральный узел имеет код ЖК…

    Как быть, комрады, подскажите. можно ли всё-таки настроить обмен, когда коды центральных разные?

    Reply
  41. insurgut

    (40) AndreykO, я правильно понимаю, что через полный план обмена ты решил настроить обмен зарплаты с бухгалтерией? 🙂

    Reply
  42. AndreykO

    (41) insurgut, ага, это я сначала… думал, прикручу свои правила прокатит… ан нет, пришлось план обмена создавать…

    Reply
  43. micha26

    Хм — у меня так матерится на неизвестного получателя….Две идентичные УТ, если что. Правила через кд сделаны.

    Reply
  44. micha26

    Ага больше не ругается — решил проблему…)))

    Reply
  45. Светлый ум

    Не очень наглядный пример, здесь по подробнее будет:

    ////////////////

    Настройка одностороннего обмена УПП 1.3 -> УТ 10.3 справочника «Номеклатура» в автоматическом режиме

    http://infostart.ru/public/267693/

    Reply
  46. luckily

    В статье по ссылке выше описан случай если нет РИБ или нет возможности подключиться по COM. Т.е. организация выгрузки через вариант файлового хранилища либо облака

    Reply
  47. user803879

    Скажите, пожалуйста, возможно по этой технологии организовать односторонний обмен УПП 1.3 — БП 3.0. Так, чтобы квитанции из БП о приеме приходили.

    Reply
  48. kser87

    (48) возможно

    Reply
  49. user803879

    Еще вопрос, пожалуйста.Тип обмена «Обмен через подключение к информационной базе» обязательно или все будет работать и через файлы?

    Reply
  50. kser87

    (50) не обязательно

    Reply
  51. pyrkin_vanya

    (49)Можно уточнить как? У меня ошибка «Архив не содержит файл сообщения обмена».

    Это в БП 3.0 при получении данных.

    Reply
  52. pyrkin_vanya

    (49)Отдельную ветку создал для обсуждения

    https://forum.infostart.ru/forum15/topic227120/?result#postform

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *