Стоит задача организовать регулярный обмен данными между двумя конфигурациями «1С:Бухгалтерия 3.0». Важное условие — из базы-источника в базу-приемник должны попадать только новые контрагенты и их договоры. Существующие объекты в базе-приемнике затрагивать не нужно. Кроме того, весь процесс должен запускаться автоматически по расписанию. Разберем, какие технологии для этого существуют и какой подход выбрать для решения этой задачи.
Основная сложность, с которой сталкиваются при такой настройке, — это механизм отслеживания новых объектов. Как системе понять, какой контрагент был создан после последней выгрузки? Для этого в платформе «1С:Предприятие» существует специальный инструмент.
Чтобы решить задачу отслеживания новых и измененных данных, используется объект метаданных План обмена. Это фундаментальный механизм для организации любого обмена данными.
Как это работает:
Контрагенты и ДоговорыКонтрагентов) в состав Плана обмена.Таким образом, вам не нужно самостоятельно придумывать, как «отлавливать» новые объекты. План обмена сделает это за вас. Вы можете создать новый план обмена специально для вашей задачи или добавить новый узел в уже существующий, чтобы не нарушать работу действующих обменов.
Теперь, когда мы разобрались с механизмом отслеживания, рассмотрим два основных способа реализации самого обмена.
Для обмена между одинаковыми или похожими типовыми конфигурациями, какими являются две «Бухгалтерии 3.0», этот способ является предпочтительным. Он основан на встроенной в конфигурацию Библиотеке стандартных подсистем (БСП) и технологии «Конвертация данных 3.0».
Преимущества:
Проанализируем шаги настройки и доработки для нашей конкретной задачи.
Шаг 1. Настройка синхронизации.
В разделе Администрирование – Синхронизация данных нужно создать новую настройку, выбрав в качестве корреспондента такую же конфигурацию «Бухгалтерия предприятия, ред. 3.0». Мастер настройки проведет вас по основным этапам подключения.
Шаг 2. Ограничение выгружаемых данных.
По умолчанию синхронизация будет пытаться выгрузить много данных, включая документы. Нам это не нужно. Чтобы ограничить состав выгрузки, необходимо изменить правила регистрации объектов. Вы можете указать, чтобы документы не выгружались совсем, или даже более тонко настроить выгрузку, добавив в правила регистрации условие Отказ = Истина; для всех объектов, кроме контрагентов и договоров.
Шаг 3. Запрет на обновление существующих объектов в приемнике.
Это ключевой момент нашей задачи. Нам нужно, чтобы при загрузке данных создавались только новые контрагенты, а если контрагент с таким же уникальным идентификатором уже есть в базе-приемнике, он не обновлялся. Для этого потребуется небольшая доработка конфигурации-приемника, которую лучше всего выполнять через расширение, чтобы не снимать конфигурацию с поддержки.
В правилах обмена, которые используются при синхронизации, есть специальные обработчики событий. Нам нужен обработчик ПередЗаписьюПолученныхДанных для правила конвертации объекта (ПКО) Справочник_Контрагенты.
Добавим в расширение следующий код:
Процедура ПКО_Справочник_Контрагенты_Получение_ПередЗаписьюПолученныхДанных(ПолученныеДанные, ДанныеИБ, Отказ)
// Если объект в базе-приемнике уже найден (ДанныеИБ не пустое),
// то мы отменяем его запись.
// Таким образом, будут создаваться только новые объекты.
Если НЕ ДанныеИБ = Неопределено Тогда
Отказ = Истина;
КонецЕсли;
Этот код проверяет, был ли найден соответствующий объект в информационной базе-приемнике (ДанныеИБ). Если да, то он устанавливает параметр Отказ в значение Истина, что отменяет запись полученного объекта. В результате обновлений существующих контрагентов не произойдет.
«Конвертация данных 2.1» (КД 2.1) — это более старая, но все еще очень мощная и гибкая технология. Она отлично подходит для сложных обменов, обменов с нетиповыми конфигурациями или когда требуется полный контроль над каждым полем.
Преимущества:
Рассмотрим шаги для этого решения:
Контрагенты и ДоговорыКонтрагентов.ИНН и КПП. Это гарантирует, что система будет искать существующего контрагента по этим реквизитам.Хотя этот метод требует больше ручной работы в конфигураторе «Конвертация данных», он дает непревзойденную гибкость в настройке логики обмена.
Независимо от выбранного способа, запуск обмена по расписанию выполняется с помощью регламентных заданий.
Проанализируем оба варианта в контексте нашей задачи:
Оба подхода решают поставленную задачу, но выбор зависит от ваших долгосрочных планов по поддержке и развитию этого обмена.