В крупных компаниях все бизнес-процессы не помещаются в одной учетной системе. Вводить информацию в несколько учетных систем ‒ долго и трудоемко, поэтому нужно иметь возможность переносить ее из одной системы в другую.
Это не самый простой процесс. Так что же такое обмен данными, как и где он используется? Давайте разбираться.
Обмен данными ‒ это перенос данных между функциональными блоками в соответствии с набором правил, управляющих передачей данных и координацией обмена.
Какие средства обмена есть непосредственно в системе 1С?
Для начала введем некую классификацию данного процесса в системе 1С:
- Обмен данными между абсолютно идентичными конфигурациями баз данных 1С.
- Обмен данными между различными конфигурациями баз данных 1С.
- Обмен данными между программой 1С и внешней программой.
В обмене всегда присутствует источник: то место откуда мы берем данные, и приемник: то место куда их кладем. Но различных способов отправки данных между ними существует несколько. Есть 2 основных способа: напрямую и через файл.
Обмен через файл
При таком способе источник выгружает данные в файл, а приемник потом их забирает. Но источник может напрямую подключаться к приемнику и положить туда необходимые данные, либо приемник может зайти к источнику и забрать все что нужно.
Прямой обмен
К прямым можно отнести обмен с помощью com объекта и веб сервисов.
COM (англ. Component Object Model — модель компонентного объекта; произносится как [ком]) — это технологический стандарт от компании Microsoft, предназначенный для создания программного обеспечения на основе взаимодействующих компонентов объекта, каждый из которых может использоваться во многих программах одновременно.
Web-сервис – это сетевая технология, обеспечивающая межпрограммное взаимодействие (между различными приложениями) на основе веб-стандартов. Web-сервисы дают возможность обратиться с одного приложения к другому и при этом выполнять определенные функции.
Это не все возможные варианты обмена, но самые распространенные. О других будет рассказано ниже.
Метод есть, средства для обмена есть. Осталось только отправить данные. Однако, встают следующие вопросы:
- какие данные;
- начиная с какой даты;
- как передать только измененные данные?
И ответить на все эти вопросы нам помогает объект системы 1С: «План обмена».
План обмена — штатный элемент экосистемы 1С, он является частью конфигурации и не создает никаких проблем при обновлениях. При настройке плана обмена указываются объекты и поля, участвующие в обмене, то есть настраивается состав обмена. Так же, указываем с какого момента начинаем обмен. Чтобы не передавать постоянно одни и те же данные за период, реализован механизм регистрации изменений. То есть, объекты (справочники, документы, регистры сведений и т.д.), которые включены в состав обмена, при изменениях регистрируются в плане обмена и при следующем запуске обмена именно эти изменения и будут переданы приемнику.
В плане обмена можно выделить три главных составляющих:
- Узел обмена.
- Состав обмена.
- Механизм распределенной информационной базы.
Узел обмена — это те источники, с которыми мы ведем обмен. Состав обмена — это те данные, которыми мы обмениваемся. Что касается механизма распределенной информационной базы, рассмотрим его немного подробнее.
Информационный обмен может выполняться как между независимыми конфигурациями, так и внутри единой распределенной базы. Для выполнения задач обмена в 1С:Предприятие существует механизм распределенных информационных баз (РИБ). Он применяется в территориально распределенных организациях. В РИБ всегда есть главный узел и второстепенные.
Все базы должны быть полностью идентичны по структуре. Обновление производится только для корневого узла, затем эти обновления через обмен поступают в подчиненные узлы. В корневой узел сливается вся информация из подчиненных. В состав обмена входят все доступные для обмена объекты системы 1С.
Между какими базами можно построить обмен? Между ВСЕМИ. Но есть НО. Должно выполняться хотя бы одно из этих условий:
- База должна быть доступна.
- База должна иметь доступ к каталогу обмена.
- База должна иметь доступ к почте.
Почему должно быть выполнено хотя бы одно из этих условий? Все просто, обмен ‒ это всегда взаимодействие двух баз между собой. Если одна из них не будет доступна, мы никак не сможем забрать или отправить данные при прямом обмене. Представим, что у вас две базы, между которыми нужно настроить обмен. Одна находится где-то в облаке, вторая у вас на сервере. Тогда к первой есть доступ практически из любого места, при наличии интерфейса. Ведь расположение базы в облаке уже говорит о доступности этой базы из любого места при наличии ссылки на нее (как для любого сайта). Со второй базой несколько сложнее, так как база расположена на определенном сервере, и чтобы попасть в эту базу, сначала нужно зайти на этот сервер, используя специальные программы (например rdp и т.п). Как же можно настроить обмен в данном случае? В данном случае мы можем настроить обмен именно со стороны базы, расположенной на сервере. Именно она будет стучаться к доступной базе в облаке: забирать ее данные и относить свои.
Если у нас обмен между двумя базами на разных серверах, не имеющих доступа друг к другу, то тут уже с прямым обменом сложнее. В этом случае нужно одну базу сделать доступной. Например, опубликовать ее и дать доступ извне. В таком случае она будет доступна аналогично облачной (но при этом физически все так же будет находится на вашем сервере), и доступ к ней будет по ссылке.
Если же такой возможности нет, следует прибегнуть к обмену через файлы. Вот тут мы переходим ко второму условию. Каталог обмена должен быть доступен для баз, которые обмениваются. То есть, должен быть некий каталог, доступ к которому есть у сервера, на котором расположены наши базы, чтобы, создав файл с данными, одна могла перенести его в этот каталог, а вторая зайти и забрать этот файл.
Если нет возможности обеспечить такую доступность, можно осуществить обмен через почту. То есть, база-источник должна зайти на почту и отправить данные на указанную почту, база-приемник должна зайти на почту и прочесть это письмо. Этот метод требует доступа к почте с указанием параметров подключения к ней.
В результате, если не будет выполнено хотя бы одно из этих условий, настроить обмен просто невозможно.
Настройка обмена
Как же построить обмен?
- Настроить типовой обмен. Фирма 1С поставляет свои решения уже со встроенными обменами. Состав обмена зависит от типа поставляемой конфигурации. Так, в 1С Бухгалтерии есть типовой обмен, например, с 1С УТ и 1С ЗУП. В чем плюс такого обмена? Фирма 1С позаботилась о нас и реализовала его в стандартных конфигурациях, вам лишь нужно зайти и настроить подключение между базами. Однако, так как это преднастроенный обмен и довольно статичный, очень часто бывает, что данного функционала недостаточно. Например, нужно обмениваться какими-то типами документов, которые не включены в состав обмена. В таком случае нужно дорабатывать существующий обмен, что не всегда легко и просто.
- Использовать универсальный обмен данными. Есть специальная обработка, которая позволяет выгрузить данные за период из одной базы и загрузить их в другую.
- Создать свой обмен (со своими правилами и планом обмена). Если Вам не подходит ни один из существующих обменов в ваших базах, то можно создать свой. Для этого нужно прописать правила: какие данные выгружать и как их загружать. Для этого необходимо обратиться к разработчику 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 объекты. Однако, и последние способы доступны в Галочке, так как различные ситуации требуют различных способов решения. И мы смогли учесть вариативность, используя настройки при загрузке данных.