gifts2017

Обмен данными в конфигурациях 1С

Опубликовал Ruslan Edokov (Redokov) в раздел Программирование - Теория программирования

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

 

Введение

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

Постановка задачи обмена данными

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

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

Трудности

  1. Документы в конфигурации имеют различный набор и состав реквизитов
  2. Некоторые реквизиты документов составного типа (справочники).
  3. Если уже переданный документ был изменен документ в конфигурации Источник, его необходимо повторно передать в конфигурацию Приемник
  4. Возможно дублирование элементов в том случае, если справочники заполнялись в двух базах одновременно. Как вариант, при наличие дублей в справочнике (элементов справочника с одинаковым набором реквизитов), в документ попадет “ненужный” элемент - например, давно не используемый и помеченный на удаление.

Методы решения

Этап 1. Соответствие объектов

Для составления правил отображения реквизитов документа конфигурации Источника в реквизиты документов конфигурации Приемника создаются правила обмена. Правила обмена специальный файл в формате XML описывающий соответствия и правила преобразования объектов Источника в объекты Приемника. Автоматизируется создание правил обмена с помощью конфигурации “Конвертация данных”.  Из конфигураций Приемника и Источника с помощью специальной обработки выгружаются XML файлы, описывающие структуру метаданных соответствующих конфигураций и загружаются в “Конвертацию данных”.

При описании правил обмена необходимо указать реквизиты (так называемые ключевые реквизиты) по которым система будет искать в Приемнике объекты соответствующие объектам Источника.

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

Этап 2. Регистрация измененных объектов

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

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

Этап 3. Транспорт

Топологии обменов данными очень причудливы. Возможен как прямой доступ к базе-Приемнику из Источника, так и опосредованный. В первом случае возможно использовать ADO-соединение - прямое подключение из Источника к Приемнику. Вариант очень удобный с пользовательской точки зрения: один раз настроив параметры обмена и авторизацию пользователя в Приемнике, одним нажатием кнопки (или по расписанию) провести обмен.

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

Перед тем как настроить обмен

Дубли и объекты, помеченные на удаление

Перед тем как настроить обмен - избавьтесь от дублирующихся элементов в справочниках. Удалите объекты, помеченные на удаление.

Ввод справочников и регистров сведений

Источник ввода справочников и регистров сведений должен быть один. Тогда вы избавитесь от необходимости постоянно исправлять неверно синхронизированные элементы, из-за которых в оборотно-сальдовой ведомости не “схлопываются”, казалось бы идентичные движения.

Заключение

В итоге, создание схемы обмена выглядит следующий образом:
  1. Создаются правила обмена в конфигурации “Конвертация данных”
  2. Создается и инициализируется план обмена
  3. Информационные базы подготавливаются к обмену. Удаление дублей
  4. При инициализации обмена, заполняется регистр сведений “Соответствие объектов обмена”
  5. Выбирается соответствующий транспорт (прямой доступ, через файл)
  6. Выполняется регулярный обмен данными

Библиография

  1. http://v8.1c.ru/overview/ObmenUniversal.htm
  2. http://v8.1c.ru/overview/ExchangePlans.htm
  3. http://v8.1c.ru/overview/ObmenMain.htm
  4. http://www.gotdotnet.ru/blogs/denish/1965/
  5. http://ru.wikipedia.org/wiki/GUID

P.S. Конструктивная критика и дополнения приветствуются.

Скачать файлы

Наименование Файл Версия Размер
Статья в pdf 453
.pdf 213,60Kb
20.02.11
453
.pdf 213,60Kb Бесплатно

См. также

Подписаться Добавить вознаграждение
Комментарии
1. ediks (ediks) 20.02.11 02:42
Картинки бы еще посмотреть...
2. Игорь Исхаков (Ish_2) 20.02.11 08:59
Картинки не показываются.
3. Анна (RODIONOVA) 20.02.11 09:18
4. Misha ⁠ (Magister) 20.02.11 15:21
Статья, как описание того, что есть - вполне ничего (картинки бы ещё).
А вообще - при большой нагрузке все типовые механизмы должны идти лесом. Мне больше по душе варианты с минимальным размером сообщений и транспортом, гарантирующим доставку.
5. Ruslan Edokov (Redokov) 20.02.11 16:17
В чем прикол? У меня картинки отображаются. Что не так делаю? Браузер гугл хром.
6. Ruslan Edokov (Redokov) 20.02.11 16:21
(4) безусловно, штатные обмены (и механизмы обменов) предназначены для ленивого, неторопливого обмена с возможностью дослать пакетик чуть позже. В случае высоконагруженных обменов, я бы смотрел в сторону интеграции решений.

ОФФ с картинками я, вроде, понял в чем прикол, сейчас постараюсь исправить.
7. Яков Коган (Yashazz) 21.02.11 11:57
Урезанный вариант главы про обмены из Большой Книги По 8.0, а про удаление объектов и вовсе схалявлено, там всё не так просто; и про коллизии надо бы подробнее. Изложенное здесь замечательно применимо не только к 8.2
bashirov.rs; Redokov; +2 Ответить 4
8. Ruslan Edokov (Redokov) 21.02.11 12:15
(7) Спасибо за критику. Не могли бы Вы немного развернуть комментарий?
Какую большую книгу по 8.0 Вы имеет в виду?
Что именно схалявлено про удаление объектов?
9. Сергей Старовойтов (AVARY) 22.02.11 00:45
Для меня эта статья - подтверждение того, что элементарное, будничное для одного, может быть чрезвычайно интересным и полезным для другого :D
10. p m (pm74) 22.02.11 07:55
(8) он говорит про "Профессиональная разработка в системе 1с ", автор Гобец А.П.
11. Ruslan Edokov (Redokov) 22.02.11 09:34
(10) ага, я примерно так и предполагал. Спасибо.
(7) Дело в том, что эту книгу я читал очень давно, точно больше трех лет назад. И никак не мог скопипастить оттуда.
Цель статьи собрать общую информацию по обменам для молодых сотрудников, тех кто начинает знакомство с обменами между конфигурациями. Поэтому здесь собрано все в кратком виде. Людям тяжело читать много букв.
(9) Все так. Но в процессе написания статьи я провел немалу работу с источниками. В том числе на мисте и инфостарте. Вопросов по общему пониманию обменов немало. Поэтому и решил выложить статью.
12. p m (pm74) 22.02.11 10:17
(11) "молодых сотрудников" вы только запутали по моему. Смотрите сами по тексту.
"..1.Создаются правила обмена в конфигурации “Конвертация данных”
2.Создается и инициализируется план обмена
3.Информационные базы подготавливаются к обмену. Удаление дублей
4.При инициализации обмена, заполняется регистр сведений “Соответствие объектов обмена”
5.Выбирается соответствующий транспорт (прямой доступ, через файл)
6. Выполняется регулярный обмен данными "

по п.4 регистр "Соответствие объектов обмена" есть только в типовых от 1с ?? тогда зачем нужен п.1 - готовые правила уже есть , по п.2 все нужные планы обмена уже есть
Если имеется ввиду произвольные конфигурации то по п.5 и п.6 какими средствами реализуется обмен. Универсальные обработки годятся только для разовой выгрузки/загрузки в ручном режиме.
NN2P; bard; bashirov.rs; Redokov; +4 Ответить 1
13. Ruslan Edokov (Redokov) 22.02.11 12:37
(12) Спасибо за мнение.
Действительно, статья базируется на обмене, принятом в типовых конфигурациях. Как своего рода "лучшие практики".
pm74 пишет:
тогда зачем нужен п.1 - готовые правила уже есть

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

pm74 пишет:
Если имеется ввиду произвольные конфигурации то по п.5 и п.6 какими средствами реализуется обмен. Универсальные обработки годятся только для разовой выгрузки/загрузки в ручном режиме.

"Универсальная выгрузка в формате XML", умеет как подключаться напрямую, так и выгружать в файл - задача выбора транспорта уже встает в полный рост.
Все типовые выгрузки базируются на функционале обработки "Универсальная выгрузка в формате XML", в том числе и регулярные обмены.
14. Александр Крынецкий (echo77) 23.02.11 14:05
К сожалению, в статья рассматривается только обмен данными с помощью правил, созданных с помощью конфигурации "Конвертация данных". Я хотел увидеть различные существующие методы обмена данными(КД, ВыгрузкаЗагрузкаДанныхXML, УниверсальнаяЗагрузкаИзТабличногоДокумента, советы при написании осбственных обработок обмена данными)
15. Ruslan Edokov (Redokov) 23.02.11 14:15
(14) Спасибо за пожелание, возможно в дальнейшем. Сейчас такой задачи перед собой не ставил.
Поясните пожалуйста, ВыгрузкаЗагрузкаДанныXML - речь идет об обработке, поставляемой с конвертацией данных или какой-то другой?
16. Александр Крынецкий (echo77) 23.02.11 15:06
(15) Да, речь идет об обработке, что идет в комплекте с КД2, есть на ИТС или есть в этом наборе.

Согласен, что с помощью конвертации можно многое сделать, и процесс автоматизировать так же можно. Но практика показывает, что для выполнения разового обмена, посвещать несколько месяцев изучения КД2 нецелесообразно.
17. Яков Коган (Yashazz) 23.02.11 23:08
(7) Да, я про книгу "Профессиональная разработка в системе 1С:Предприятие 8", 2006 г, Габец, Гончаров, Козырев, Кухлевский и, конечно, Радченко.
Касательно удаления, следует осветить ситуацию, когда в базе-источнике объект удалён (не помечен, а именно уже отсутствует), а в базе-получателе он ещё есть. Возможными коллизиями могут быть как ссылки на этот объект в базе-получателе, так и факт изменения этого объекта в базе-получателе. Следует описать варианты. Следует упомянуть про специальный тип "Удаление объекта" (см.мануалы и синтакс-помощник). И фразу "Удалите объекты, помеченные на удаление" я считаю неоднозначной, а порой опасной. Сначала, по-хорошему, следует решить коллизии, а потом уже безвозвратно грохать, особенно если топология обмена сложна по виду и смыслу.

(14) Начните с http://v8.1c.ru/overview/Term_000000269.htm, а дальше ИТС вам в помощь. Там уж столько написано и сделано в лучшем виде...
18. Ruslan Edokov (Redokov) 24.02.11 11:09
(17)

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


Если обмен еще не начался, какая опасность в заблаговременном удалении помеченных объектов?
19. p m (pm74) 25.02.11 15:08
Redokov пишет:
Все типовые выгрузки базируются на функционале обработки "Универсальная выгрузка в формате XML", в том числе и регулярные обмены.

Все типовые базируются на обработке ОбменДаннымиXML
20. p m (pm74) 25.02.11 15:18
(19) в УниверсальнаяВыгрузкаВформатеXML есть 3 режима отмены регистрации изменений : не удалять ,удалять полностью, удалять только выгруженные.
Для полноценного регулярного обмена этого недостаточно.
21. rasswet (rasswet) 28.02.11 12:52
22. Алексей Гуревич (alexey2k) 04.03.11 10:14
Несомненно такие начинания, как написание любой доки или пояснения заслуживают только поощрения!
Очень хотелось бы чтобы в описании были такие примеры как работать с произвольными запросами и выборками данных для передачи из одной системы в другую. Ну как пример - сбор движений по регистру ААА и запись в документ, которого нет в конфигурации источнике, но есть в конфигурации приемнике. Или что наверно более практично - получение остатков по счету на дату, замена по какому-то принципу аналитики и передача в бух операцию в базе приемнике (перенос остатка как бы).
Мой [+]
Светлый ум; gowa; +2 Ответить
23. Сергей Данилов (pencroff) 12.04.11 15:36
Кто сталкивался с обменом из УПП в УТ и обратно. Конфигурации для Украины.
Если есть готовые правила то поделитесь.
А теперь вопрос по обмену:

УПП (очень дописанная, главна) обмен с УТ типовая
Обмен только 3 документами (Счет + Оплата - РТУ)
Справочники: контрагентов с договорами и номенклатура

Порядок работы:
  • Настраиваем правила обмен Конвертацией данных
  • Создаем новый план обмена "УПП-УТ" где регистрирую изменения только необходимых объектов
  • Заполняем регистр "Соответствие объектов" - Как его заполнить автоматически?

В каждой конфигурации есть обработка "УниверсальныйОбменДаннымиXML" только разные версии.
Как их прикрутить к созданному мной плану обмена "УПП-УТ"?
24. gowa 04.10.11 08:44
по п.4 регистр "Соответствие объектов обмена" есть только в типовых от 1с ?? тогда зачем нужен п.1 - готовые правила уже есть , по п.2 все нужные планы обмена уже есть
Если имеется ввиду произвольные конфигурации то по п.5 и п.6 какими средствами реализуется обмен. Универсальные обработки годятся только для разовой выгрузки/загрузки в ручном режиме.
+1
25. 1CProfessional (Paul_Nevada) 23.01.12 15:26
Спасибо автору стать и всем здесь высказавшимся - огромное преспасибо!!!
26. 1CProfessional (Paul_Nevada) 23.01.12 15:28
Ну а как же на счет книги "1С:Предприятие 8. Обмен данными между прикладными решениями."?
Считаю, она - более, чем просто информативный источник!!!
27. Степан Запорный (zastep) 28.01.12 22:05
Вопрос к знатокам:

Есть две базы Б1 и Б2.
Сделан односторонний обмен из Б1 в Б2.
В Б1 есть несколько элементов справочника которые должны ссылаться на один элемент справочника Б2
Регистры соответствия объектов для обмена в обеих базах не пустые.

В какой базе нужно прописывать соответствие одного ко многим в Б1 или Б2?
28. Ruslan Edokov (Redokov) 29.01.12 22:27
(27) zastep, Обычно обмен работает по первому вхождению. Вариант один ко многим надо явно предусмотреть в алгоритмах правил обмена. Простым указанием соответствий дело не обойдется.
29. Степан Запорный (zastep) 30.01.12 17:59
Спасибо Redokov.

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

Т.е. если на объект есть ссылка в регистре сведений для обмена - правила обмена игнорируются.

Если я не прав - поправьте меня.
30. Ruslan Edokov (Redokov) 31.01.12 03:08
(29) zastep, правила конвертации просто описывают способ преобразования одного объекта в другой. Естественно, если в регистре соответствия был найден объект в приемнике, то продолжать не нужно. Просто подставь его в требуемый реквизит. Так рассуждает обработка обмена. Соответственно один ко многим будет отрабатывать попервому значению в регистре соответствия.
31. Степан Запорный (zastep) 31.01.12 11:25
Поэксперементировал с обменами по справочнику "договора контрагентов".
Получается при одностороннем обмене из Б1 в Б2, регистр соответствия заполняется в базе Б2.
Т.е. можно в Б2 набить несколько ссылок на один объект.
Т.к. каждый объект имеет свой UID (уникальный идентификатор) - коллизий возникнуть не должно.

Спасибо за ответы. :)
32. Ruslan Edokov (Redokov) 31.01.12 21:59
(31) zastep, попробуйте. Я считаю, что не сработает. Обратная ситуация когда несколько объекто источника ссылаются на один приемника - сработает. А в Вашем случае нет.
33. Степан Запорный (zastep) 31.01.12 22:19
Так это и есть мой случай.
Источник Б1.
В Б2 набиваю ссылки в регистр и всё!!!
Уже работает.
34. Петров Иван (service_1c) 20.12.13 12:39
Полезная информация
Прикрепленные файлы:
35. Рамиль Баширов (bashirov.rs) 15.09.14 08:47
Благодарю за информацию по обмену и комментариев по этому поводу. Но я хотел бы заметить что обмен не так уж сложно настроить. Здесь не помешала бы информация по работе с конфигурацией "Конвертация данных".
36. Ruslan Edokov (Redokov) 15.09.14 10:58
(35) статья должна была дать общее понимание процедуры обмена. Без привязки к деталями настройки в конкретной конфигурации. Последовательность такая: читаешь статью, понимаешь общие принципы, разбираешься с конкретной конфигураций. А если требуется более глубокое освоение(не хватает глубины изложения), то поднимаешь специализированную литературу, в т.ч. про конвертации данных.
37. Ольга Кузнецова (Kitri) 17.04.15 18:27
Подскажите, может кто сталкивался.. Настроен обмен между УТ 10.3 и БП 2.0.
Всё работает нормально, но! Два документа РКО по каким-то непонятным причинам не хотят выгружаться, уже и проводили их и проверяли регистрацию в обмене (после проведения появляются в регистрации, но не попадают в файл выгрузки). Реквизиты проверили (галочки БУ и НУ есть, организация и касса те, которые в плане обмена настроены).
Куда ещё смотреть не знаю.
38. Андрей Кокконен (skyadmin) 14.08.15 15:23
3.Если уже переданный документ был изменен документ в конфигурации Источник, его необходимо повторно передать в конфигурацию Приемник


Хотелось бы услышать каким образом это можно сделать.

У нас есть конфигурация Штрих-М Торговое предприятие 5, в которой обмен между центральной базой и магазинами настроен не через план обмена, а через модуль.
Есть справочник "Регистрация объектов", в который попадают объекты при изменении и который очищается при получении подтверждения загрузки обмена другой стороной.
Проблема в том, что такой обмен можно делать только монопольно, иначе из регистрации могут удалиться ссылки на измененные объекты, после выгрузки, но до получения подтверждения.

Интересно, в типовой конфигурации 1С Розница, дела с обменом обстоят точно также, или любые изменения гарантированно доходят, в случае не монопольного обмена, решает ли план обмена такой недостаток?

По мне пусть лучше медленно, но верно.