Как настроить автоматический двусторонний обмен данными между 1С:Бухгалтерией 3.0 и нетиповой конфигурацией с БСП?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Бухгалтерский учет IT и автоматизация бизнеса
← На главную

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

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

Основы обмена данными в 1С:Предприятии

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

  1. Планы обмена: это ключевые конфигурационные объекты, которые описывают узлы распределенной системы (в нашем случае это Бухгалтерия и самописная база) и состав данных, подлежащих обмену. Самое важное в планах обмена — это встроенный механизм регистрации изменений. Он автоматически отслеживает, какие объекты (элементы справочников, документы) были изменены или созданы в одной из баз, и помечает их для отправки в другую базу. Без планов обмена реализовать автоматический двусторонний обмен практически невозможно.
  2. XML-сериализация: платформа 1С умеет преобразовывать свои внутренние объекты в формат XML и обратно. Это позволяет нам "упаковывать" данные для передачи и "распаковывать" их при получении.
  3. Инструменты чтения и записи XML-документов: эти низкоуровневые объекты платформы позволяют нам детально работать с XML-файлами, если потребуется более тонкая или нестандартная обработка данных.

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

Подход 1: Обмен через EnterpriseData (ED)

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

Что такое EnterpriseData?

EnterpriseData — это стандартный формат обмена данными, разработанный фирмой "1С", основанный на XML. Он описывает структуры данных, соответствующие типовым бизнес-сущностям 1С, таким как "Клиент", "Счет на оплату", "Товары" и т.д. Основная идея ED заключается в том, что он выступает в роли "нейтрального" посредника.

Как работает EnterpriseData при различающихся структурах?

  1. Преобразование при выгрузке: когда мы выгружаем данные из базы-источника (например, из нашей самописной конфигурации), происходит их преобразование из внутренних объектов этой базы в стандартный формат ED. Например, если в самописной базе у "Клиента" есть реквизит "КодОтветственногоМенеджера", а в ED стандарте такого реквизита нет, то при выгрузке он либо игнорируется, либо преобразуется в другое поле ED, если мы настроили такое сопоставление.
  2. Преобразование при загрузке: аналогично, когда данные в формате ED загружаются в базу-приемник (например, в 1С:Бухгалтерию 3.0), происходит обратная операция. Данные из формата ED преобразуются в объекты базы-приемника. Если в ED есть поле "ИННКлиента", а в Бухгалтерии оно хранится в реквизите "ИНН", система выполнит соответствующее сопоставление и заполнит данные.

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

Преимущества использования EnterpriseData:

Как реализовать обмен через EnterpriseData:

  1. Внедрение подсистемы обмена: В обеих конфигурациях необходимо внедрить подсистему "ОбменДанными" из БСП, если она еще не используется. Эта подсистема предоставляет функциональность для работы с планами обмена и форматом ED.
  2. Определение состава обмениваемых данных: Определите, какие справочники (Клиенты, Поставщики), документы (Заказы, СчетаНаОплату) и другие объекты будут участвовать в обмене.
  3. Создание узлов обмена: В каждой базе создайте узел обмена, который будет представлять другую базу. Это делается через справочник "Узлы планов обмена".
  4. Настройка правил выгрузки/загрузки: Для каждого обмениваемого объекта необходимо настроить правила преобразования между внутренним представлением объекта и его представлением в формате ED. Это может потребовать написания кода на языке 1С для сложных преобразований или использования встроенных механизмов сопоставления. Механизмы могут включать общий модуль МенеджерОбменаЧерезУниверсальныйФормат, который упоминался в обсуждении.
  5. Регистрация изменений: Настройте планы обмена так, чтобы они автоматически регистрировали изменения в обмениваемых объектах. Это гарантирует, что при следующем сеансе обмена будут переданы только те данные, которые действительно изменились или были созданы.
  6. Автоматизация обмена: Используйте регламентные задания для периодического запуска обмена. Например, можно настроить выгрузку данных из самописной базы каждые 15 минут и загрузку в Бухгалтерию, и наоборот.

Для новичка освоение EnterpriseData потребует изучения документации к БСП и примеров использования, но это инвестиция, которая окупится при дальнейшем развитии системы.

Подход 2: Обмен через Конвертацию данных 2.1 (КД 2.1)

Если задача обмена предполагает очень сложные преобразования данных, или если EnterpriseData по каким-то причинам не подходит, универсальным и мощным инструментом является внешняя обработка Конвертация данных 2.1 (КД 2.1). Этот инструмент позволяет нам полностью контролировать процесс обмена.

Что такое Конвертация данных 2.1?

Конвертация данных 2.1 — это специализированный инструмент (конфигурация), разработанный фирмой "1С", предназначенный для создания правил обмена данными между произвольными конфигурациями. В отличие от EnterpriseData, который предлагает стандартный формат, КД 2.1 позволяет нам самим описывать, как данные из одной конфигурации должны быть преобразованы и записаны в другую, и наоборот.

Как работает Конвертация данных 2.1?

С помощью КД 2.1 мы создаем XML-файл с правилами обмена. Этот файл содержит детальные инструкции для программы обмена (например, универсальной обработки обмена данными, которая идет в комплекте с БСП) о том, как:

  1. Сопоставлять объекты: Например, как справочник "Клиенты" из самописной базы соответствует справочнику "Контрагенты" в Бухгалтерии.
  2. Сопоставлять реквизиты: Как реквизит "ИНН" из "Клиента" самописной базы заполняет реквизит "ИНН" в "Контрагенте" Бухгалтерии.
  3. Трансформировать значения: Если, например, статус заказа в самописной базе хранится числом (1, 2, 3), а в Бухгалтерии — строкой ("В работе", "Выполнен", "Отменен"), КД 2.1 позволяет написать правило преобразования "1" в "В работе".
  4. Выполнять произвольный код: В случаях, когда стандартных правил недостаточно, мы можем вставлять фрагменты кода на языке 1С для выполнения сложной логики (например, создания нескольких документов на основании одного, или поиска контрагента по сложным условиям).

Готовый файл правил используется универсальными обработками обмена для выполнения фактической выгрузки и загрузки данных. Сообщение 16 на форуме справедливо отмечает, что "все руками настраивать", но это дает максимальную гибкость.

Преимущества использования Конвертации данных 2.1:

Как реализовать обмен через Конвертацию данных 2.1:

  1. Установите КД 2.1: Загрузите конфигурацию "Конвертация данных" (обычно она поставляется с дисками ИТС или доступна на сайте 1С для зарегистрированных пользователей) и создайте отдельную информационную базу для работы с ней.
  2. Подключите конфигурации-источники и приемники: В КД 2.1 укажите пути к файлам конфигураций (.cf), из которых и в которые будет осуществляться обмен. Это позволит КД 2.1 "видеть" метаданные обеих баз.
  3. Опишите обмениваемые объекты: Для каждого объекта, который должен участвовать в обмене (например, справочник "Клиенты"), создайте соответствующее описание в КД 2.1.
  4. Настройте правила конвертации объектов (ПКО): Для каждой пары объектов (например, "Клиент" -> "Контрагент") создайте ПКО. Внутри ПКО вы будете настраивать:
    • Правила выгрузки свойств (ПВС): Сопоставление реквизитов объектов. Например, реквизит "Наименование" Клиента сопоставляется с реквизитом "НаименованиеПолное" Контрагента.
    • Поисковые правила: Как система должна найти существующий объект в базе-приемнике, чтобы не создавать дубликат (например, по ИНН или по наименованию).
    • События: Возможность вставить произвольный код 1С для обработки данных "Перед выгрузкой", "После загрузки" и т.д. Это ваш основной инструмент для сложной логики.
  5. Создайте правила конвертации свойств (ПКС): Для каждого реквизита объекта настройте правила его преобразования.
  6. Сформируйте файл правил: После настройки всех ПКО и ПКС, КД 2.1 сгенерирует XML-файл с правилами обмена.
  7. Запустите обмен: Используйте универсальную обработку "УниверсальныйОбменДаннымиXML" (она также входит в БСП или доступна на ИТС) в сочетании с планами обмена в обеих ваших базах. В этой обработке вы указываете сгенерированный файл правил и запускаете выгрузку/загрузку.
  8. Автоматизация: Как и в случае с EnterpriseData, для автоматического обмена используйте регламентные задания, которые будут вызывать универсальную обработку с нужными параметрами и файлом правил.

Для новичка изучение КД 2.1 — это фундаментальный шаг, который открывает огромные возможности по интеграции систем на 1С. Начинайте с простых справочников, чтобы освоить основные принципы.

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

Независимо от выбранного подхода (EnterpriseData или КД 2.1), есть несколько общих моментов, которые нам крайне важно учесть для успешной реализации двустороннего автоматического обмена:

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

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

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

    Например, в Бухгалтерии можно установить префикс "БХ-" для всех документов и элементов справочников, а в самописной конфигурации — "СК-". При обмене система будет понимать, что СК-0000001 и БХ-0000001 — это разные объекты.

  3. Поиск существующих объектов: При загрузке данных из одной базы в другую, нам необходимо, чтобы система корректно определяла, является ли поступающий объект новым или он уже существует в базе-приемнике. Это реализуется через правила поиска. В EnterpriseData это часть стандартных механизмов, а в Конвертации данных 2.1 мы настраиваем "Поисковые правила" в ПКО. Обычно поиск выполняется по уникальным идентификаторам (ГУИД) или по комбинации реквизитов, таких как ИНН + КПП для контрагентов, или по номеру + дате для документов.

  4. Использование универсальных идентификаторов (ГУИД): Каждый объект в 1С имеет уникальный идентификатор (УникальныйИдентификатор или ГУИД). При обмене крайне желательно передавать этот идентификатор. Это позволяет надежно сопоставлять объекты между базами, даже если их наименования или коды изменились.

  5. Автоматизация с помощью регламентных заданий: Ручной запуск обмена не подходит для двусторонней автоматической системы. Для этого мы используем регламентные задания 1С. Мы создаем регламентное задание в каждой базе, которое будет периодически (например, раз в 5-15 минут) запускать процедуру выгрузки и загрузки данных через соответствующий механизм (EnterpriseData или универсальную обработку обмена по правилам КД 2.1). Это обеспечивает непрерывность и актуальность данных.

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

    
    // В общем модуле, который вызывает регламентное задание
    Процедура ВыполнитьОбменДанными() Экспорт
        // Получаем настройки обмена
        НастройкиОбмена = ОбменДаннымиКлиентСервер.ПолучитьНастройкиОбмена(...);
    
        // Выполняем выгрузку
        ОбменДаннымиСервер.ВыполнитьВыгрузкуДанных(НастройкиОбмена);
    
        // Выполняем загрузку
        ОбменДаннымиСервер.ВыполнитьЗагрузкуДанных(НастройкиОбмена);
    КонецПроцедуры
    
  6. Начало для новичка: Поскольку вы занимаетесь программированием в 1С недавно, рекомендуем начать с малого. Сначала настройте обмен для одного простого справочника, например, "Клиенты". Как только вы добьетесь стабильного обмена в одну сторону, затем в другую, переходите к более сложным объектам, таким как документы, которые имеют табличные части и ссылки на другие справочники. Это поможет вам постепенно освоить все нюансы.

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

Заключение

Для вашей задачи по настройке автоматического двустороннего обмена между Бухгалтерией 3.0 и самописной конфигурацией с БСП, где структуры данных отличаются, наилучшими и наиболее гибкими решениями являются EnterpriseData или Конвертация данных 2.1 в сочетании с планами обмена. EnterpriseData предоставит вам стандартизированный подход с готовыми механизмами БСП для типовых сущностей, в то время как Конвертация данных 2.1 даст максимальный контроль над процессом преобразования для любых, даже самых сложных, сценариев.

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

← На главную