Мы сталкиваемся с распространенной задачей в мире 1С: необходимо организовать автоматический двусторонний обмен данными между типовой конфигурацией, такой как 1С:Бухгалтерия 3.0, и нетиповой, самописной конфигурацией, использующей Библиотеку Стандартных Подсистем (БСП) версии 3.1.6. При этом структуры данных, справочников и документов в этих базах значительно отличаются. Нам потребуется передавать информацию о клиентах, услугах, поставщиках и заказах из самописной базы в Бухгалтерию для создания счетов, а затем отображать эти счета обратно в заказах самописной конфигурации. Для начинающего разработчика эта задача может показаться сложной, но существуют проверенные и эффективные механизмы, которые мы сейчас подробно рассмотрим.
Прежде всего, давайте разберем, какие общие принципы и подходы нам следует использовать для решения этой задачи. Платформа 1С:Предприятие предоставляет несколько мощных инструментов для организации обмена данными, и для нашего сценария наилучшим образом подходят те, которые основаны на универсальных механизмах обмена XML, а именно EnterpriseData и Конвертация данных 2.1.
Прежде чем углубляться в конкретные инструменты, давайте освежим в памяти основные концепции, которые являются фундаментом любого обмена данными в 1С:
Для нашего случая, когда структуры данных в базах отличаются, использование таких механизмов, как Распределенные информационные базы (РИБ), нецелесообразно, поскольку РИБ предназначен для обмена между идентичными конфигурациями.
Один из самых современных и рекомендуемых подходов для обмена между различными конфигурациями 1С, особенно когда они используют БСП, является формат EnterpriseData (ED). Давайте рассмотрим его подробнее.
EnterpriseData — это стандартный формат обмена данными, разработанный фирмой "1С", основанный на XML. Он описывает структуры данных, соответствующие типовым бизнес-сущностям 1С, таким как "Клиент", "Счет на оплату", "Товары" и т.д. Основная идея ED заключается в том, что он выступает в роли "нейтрального" посредника.
Таким образом, ED позволяет нам обмениваться данными между конфигурациями с отличающимися структурами, поскольку каждая база работает только со своим внутренним представлением и форматом ED, а детали преобразования скрыты внутри механизма обмена.
МенеджерОбменаЧерезУниверсальныйФормат, который упоминался в обсуждении.Для новичка освоение EnterpriseData потребует изучения документации к БСП и примеров использования, но это инвестиция, которая окупится при дальнейшем развитии системы.
Если задача обмена предполагает очень сложные преобразования данных, или если EnterpriseData по каким-то причинам не подходит, универсальным и мощным инструментом является внешняя обработка Конвертация данных 2.1 (КД 2.1). Этот инструмент позволяет нам полностью контролировать процесс обмена.
Конвертация данных 2.1 — это специализированный инструмент (конфигурация), разработанный фирмой "1С", предназначенный для создания правил обмена данными между произвольными конфигурациями. В отличие от EnterpriseData, который предлагает стандартный формат, КД 2.1 позволяет нам самим описывать, как данные из одной конфигурации должны быть преобразованы и записаны в другую, и наоборот.
С помощью КД 2.1 мы создаем XML-файл с правилами обмена. Этот файл содержит детальные инструкции для программы обмена (например, универсальной обработки обмена данными, которая идет в комплекте с БСП) о том, как:
Готовый файл правил используется универсальными обработками обмена для выполнения фактической выгрузки и загрузки данных. Сообщение 16 на форуме справедливо отмечает, что "все руками настраивать", но это дает максимальную гибкость.
Для новичка изучение КД 2.1 — это фундаментальный шаг, который открывает огромные возможности по интеграции систем на 1С. Начинайте с простых справочников, чтобы освоить основные принципы.
Независимо от выбранного подхода (EnterpriseData или КД 2.1), есть несколько общих моментов, которые нам крайне важно учесть для успешной реализации двустороннего автоматического обмена:
Планы обмена: Мы уже упоминали их важность. Убедитесь, что в обеих конфигурациях созданы и настроены планы обмена, которые включают все необходимые для обмена объекты. Механизм регистрации изменений в планах обмена позволит передавать только новые или измененные данные, что значительно снижает нагрузку на систему и ускоряет процесс обмена. При включении объекта в план обмена, платформа автоматически начнет отслеживать его изменения.
Для каждого обмениваемого объекта в плане обмена мы должны установить флаг "Авторегистрация". Это гарантирует, что любое изменение или создание такого объекта будет автоматически зарегистрировано для обмена с другими узлами.
Уникальные префиксы: При двустороннем обмене, особенно когда документы и элементы справочников могут создаваться в обеих базах, критически важно использовать уникальные префиксы для номеров документов и кодов справочников в каждой информационной базе. Это предотвращает возникновение коллизий (одинаковых номеров или кодов) при создании новых элементов и упрощает идентификацию объектов из разных систем.
Например, в Бухгалтерии можно установить префикс "БХ-" для всех документов и элементов справочников, а в самописной конфигурации — "СК-". При обмене система будет понимать, что СК-0000001 и БХ-0000001 — это разные объекты.
Поиск существующих объектов: При загрузке данных из одной базы в другую, нам необходимо, чтобы система корректно определяла, является ли поступающий объект новым или он уже существует в базе-приемнике. Это реализуется через правила поиска. В EnterpriseData это часть стандартных механизмов, а в Конвертации данных 2.1 мы настраиваем "Поисковые правила" в ПКО. Обычно поиск выполняется по уникальным идентификаторам (ГУИД) или по комбинации реквизитов, таких как ИНН + КПП для контрагентов, или по номеру + дате для документов.
Использование универсальных идентификаторов (ГУИД): Каждый объект в 1С имеет уникальный идентификатор (УникальныйИдентификатор или ГУИД). При обмене крайне желательно передавать этот идентификатор. Это позволяет надежно сопоставлять объекты между базами, даже если их наименования или коды изменились.
Автоматизация с помощью регламентных заданий: Ручной запуск обмена не подходит для двусторонней автоматической системы. Для этого мы используем регламентные задания 1С. Мы создаем регламентное задание в каждой базе, которое будет периодически (например, раз в 5-15 минут) запускать процедуру выгрузки и загрузки данных через соответствующий механизм (EnterpriseData или универсальную обработку обмена по правилам КД 2.1). Это обеспечивает непрерывность и актуальность данных.
Пример вызова процедуры обмена в регламентном задании может выглядеть следующим образом (это схематичный пример, реальный код будет зависеть от выбранного механизма):
// В общем модуле, который вызывает регламентное задание
Процедура ВыполнитьОбменДанными() Экспорт
// Получаем настройки обмена
НастройкиОбмена = ОбменДаннымиКлиентСервер.ПолучитьНастройкиОбмена(...);
// Выполняем выгрузку
ОбменДаннымиСервер.ВыполнитьВыгрузкуДанных(НастройкиОбмена);
// Выполняем загрузку
ОбменДаннымиСервер.ВыполнитьЗагрузкуДанных(НастройкиОбмена);
КонецПроцедуры
Начало для новичка: Поскольку вы занимаетесь программированием в 1С недавно, рекомендуем начать с малого. Сначала настройте обмен для одного простого справочника, например, "Клиенты". Как только вы добьетесь стабильного обмена в одну сторону, затем в другую, переходите к более сложным объектам, таким как документы, которые имеют табличные части и ссылки на другие справочники. Это поможет вам постепенно освоить все нюансы.
Поддержка конфигураций: Если вам придется вносить изменения в типовую конфигурацию (Бухгалтерия 3.0), постарайтесь использовать расширения конфигурации. Это значительно упростит процесс обновления типовой конфигурации в будущем, так как ваши изменения будут отделены от основной конфигурации и не потребуют ручного слияния при каждом обновлении.
Для вашей задачи по настройке автоматического двустороннего обмена между Бухгалтерией 3.0 и самописной конфигурацией с БСП, где структуры данных отличаются, наилучшими и наиболее гибкими решениями являются EnterpriseData или Конвертация данных 2.1 в сочетании с планами обмена. EnterpriseData предоставит вам стандартизированный подход с готовыми механизмами БСП для типовых сущностей, в то время как Конвертация данных 2.1 даст максимальный контроль над процессом преобразования для любых, даже самых сложных, сценариев.
Мы рекомендуем начать с изучения концепций планов обмена и затем выбрать один из двух основных инструментов. Для новичка КД 2.1 может показаться более трудоемкой на старте, так как требует освоения отдельной конфигурации, но она обеспечивает непревзойденную гибкость. EnterpriseData же может быть проще для типовых объектов, если их структуры относительно близки к стандарту 1С. В любом случае, оба пути приведут вас к построению надежного и эффективного механизма обмена данными.