Обмен. Просто о сложном


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

Это не самый простой процесс. Так что же такое обмен данными, как и где он используется? Давайте разбираться. 

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

Какие средства обмена есть непосредственно в системе 1С?

Для начала введем некую классификацию данного процесса в системе 1С:

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

  2. Обмен данными между различными конфигурациями баз данных 1С.

  3. Обмен данными между программой 1С и внешней программой.

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


Обмен через файл


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


Прямой обмен


К прямым можно отнести обмен с помощью com объекта и веб сервисов.

COM (англ. Component Object Model — модель компонентного объекта; произносится как [ком]) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов объекта, каждый из которых может использоваться во многих программах одновременно.

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

Это не все возможные варианты обмена, но самые распространенные. О других будет рассказано ниже.

Метод есть, средства для обмена есть. Осталось только отправить данные. Однако, встают следующие вопросы: 

  • какие данные;

  • начиная с какой даты;

  • как передать только измененные данные?

И ответить на все эти вопросы нам помогает объект системы 1С: «План обмена».

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

В плане обмена можно выделить три главных составляющих:

  1. Узел обмена.

  2. Состав обмена.

  3. Механизм распределенной информационной базы.

Узел обмена - это те источники, с которыми мы ведем обмен. Состав обмена - это те данные, которыми мы обмениваемся. Что касается механизма распределенной информационной базы, рассмотрим его немного подробнее.

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

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

Пожалуйста, обратите, внимание!
Help Image

Между какими базами можно построить обмен? Между ВСЕМИ. Но есть НО. Должно выполняться хотя бы одно из этих условий:

  1. База должна быть доступна.

  2. База должна иметь доступ к каталогу обмена.

  3. База должна иметь доступ к почте.

Почему должно быть выполнено хотя бы одно из этих условий? Все просто, обмен ‒ это всегда взаимодействие двух баз между собой. Если одна из них не будет доступна, мы никак не сможем забрать или отправить данные при прямом обмене. Представим, что у вас две базы, между которыми нужно настроить обмен. Одна находится где-то в облаке, вторая у вас на сервере. Тогда к первой есть доступ практически из любого места, при наличии интерфейса. Ведь расположение базы в облаке уже говорит о доступности этой базы из любого места при наличии ссылки на нее (как для любого сайта). Со второй базой несколько сложнее, так как база расположена на определенном сервере, и чтобы попасть в эту базу, сначала нужно зайти на этот сервер, используя специальные программы (например rdp и т.п). Как же можно настроить обмен в данном случае? В данном случае мы можем настроить обмен именно со стороны базы, расположенной на сервере. Именно она будет стучаться к доступной базе в облаке: забирать ее данные и относить свои. 

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

Знаете ли вы что?
Help Image

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

Если нет возможности обеспечить такую доступность, можно осуществить обмен через почту. То есть, база-источник должна зайти на почту и отправить данные на указанную почту, база-приемник должна зайти на почту и прочесть это письмо. Этот метод требует доступа к почте с указанием параметров подключения к ней.

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

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

Как же построить обмен?

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

  2. Использовать универсальный обмен данными. Есть специальная обработка, которая позволяет выгрузить данные за период из одной базы и загрузить их в другую. 

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

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

С какими системами может обмениваться система 1С?

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

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

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

Выводы

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

У нас большой опыт в этом деле, причем в нестандартных обменах, таких как обмен между 1С Бухгалтерия 8.3 и 1С 7.7. Его сложность в том, что необходимо настроить выгрузку из одной платформы и загрузку в другую платформу, и с этой задачей обмены 1С уже не справляются. Осложняется настройка такого обмена еще и тем, что конфигурация 7.7 позволяет совершать пользователям различные действия, фактически, без серьезных ограничений, а 8.3 значительно ограничивает их действия. Для того, чтобы в такой ситуации учет в 1С БУ 8.3 был сформирован правильно, приходилось не только выдумывать дополнительные правила обмена, но и изучать логику работы 1С 7.7 с документами, чтобы все перенести в 1С БУ 8.3. Кстати, вид обмена в данном случае использовался через файлы, так как платформа 7.7 довольно устаревшая и не имеет возможностей современных технологий, таких как веб сервис, например. 

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

Именно из-за всех этих сложностей мы решили создать гибкий алгоритм обмена через настройки.

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


Хотите узнавать о новых публикациях и быть в курсе наших новостей?Подпишитесь

Теги: