Как настроить автоматический обмен данными между 1С:Бухгалтерия и 1С:Розница по правилам КД 2.1?

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

Автоматизация обмена данными между конфигурациями 1С:Бухгалтерия 3.0 и 1С:Розница 2.2 — это стандартная задача, которая, тем не менее, имеет свои нюансы, особенно если вы используете собственные правила, созданные в Конвертации данных 2.1. Часто разработчики сталкиваются с вопросом: как заставить обмен работать по расписанию, не прибегая к масштабным изменениям конфигурации?

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

Способ 1: Использование штатной подсистемы синхронизации

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

Разберем этот алгоритм по шагам:

  1. Перейдем в раздел Администрирование — Синхронизация данных.
  2. Создадим новую настройку синхронизации (например, выбрав пункт «Другая конфигурация» и настроив обмен через файл).
  3. В созданной настройке найдем пункт Загрузить комплект правил. Именно здесь мы можем подставить свой XML-файл, созданный в КД 2.1.
  4. После загрузки правил система предложит настроить Расписание.

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

Способ 2: Создание внешней обработки-обертки

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

Рассмотрим пример кода, который может быть использован внутри такой «обертки» для инициализации выгрузки:


// Создаем объект обработки Универсальный обмен данными
ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML.Создать();

// Заполняем основные параметры
ОбработкаОбмена.ИмяФайлаПравил = "C:\Exchange\Rules.xml";
ОбработкаОбмена.ИмяФайлаДанных = "C:\Exchange\Data.xml";
ОбработкаОбмена.РежимОбмена = "Выгрузка";

// Загружаем правила для корректного заполнения параметров
ОбработкаОбмена.ЗагрузитьПравилаОбмена();

// Если в правилах есть параметры, их можно заполнить здесь
// ОбработкаОбмена.Параметры.ДатаНачала = НачалоМесяца(ТекущаяДата());

// Запускаем процесс
ОбработкаОбмена.ВыполнитьВыгрузку();

После создания такой обработки ее необходимо зарегистрировать в справочнике Дополнительные отчеты и обработки. В этом справочнике есть возможность настроить регламентное задание для запуска этой обработки по расписанию. Это позволяет автоматизировать обмен, не снимая конфигурацию с поддержки и не используя расширения для создания РегламентныеЗадания.

Особенности работы в файловом режиме

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

Проанализируем критически важные моменты для файловых баз:

Как отличить правила КД 2.1 от КД 3.0?

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

  1. Структура файла: Файл правил КД 2.1 содержит описание метаданных обеих баз и ПВД (Правила выгрузки данных), ПКО (Правила конвертации объектов). КД 3.0 оперирует понятием EnterpriseData (универсальный формат).
  2. Версия формата: Если в настройках синхронизации вы видите выбор версии формата (например, 1.3, 1.10), значит, используется КД 3.0.
  3. Архитектура: КД 2.1 — это всегда прямой маппинг «Источник — Приемник». КД 3.0 — это обмен через промежуточный формат XDTO.

Если вы работаете с КД 2.1, ваш основной инструмент — обработка УниверсальныйОбменДаннымиXML. Если с КД 3.0 — то это МенеджерОбменаЧерезУниверсальныйФормат.

Использование расширений для автоматизации

Начиная с версии платформы 8.3.11, мы можем добавлять объекты РегламентноеЗадание непосредственно в расширения. Это избавляет нас от необходимости изменять основную конфигурацию. Однако, стоит помнить о Безопасном режиме расширения. Если он включен, регламентное задание может не иметь прав на запись файлов на диск или выполнение COM-соединения. Для работы обмена в расширении флаг безопасного режима следует снять.

Рассмотрим ситуацию с COM-соединением. Если базы расположены в одной сети, в правилах КД 2.1 можно настроить обмен не через файлы, а напрямую через COM. В параметрах обработки УниверсальныйОбменДаннымиXML для этого выбирается соответствующий режим. Это исключает этап создания промежуточного XML-файла и делает обмен более быстрым, но требует наличия установленной и зарегистрированной COM-компоненты V83.COMConnector на компьютере, где выполняется задание.

Резюме и рекомендации

Подводя итог, можно сказать, что для автоматизации обмена между «Бухгалтерией» и «Розницей» на правилах КД 2.1 оптимальным будет использование типового механизма синхронизации с подгрузкой своих правил. Если же требуется нестандартное поведение, используйте внешнюю обработку, добавленную в дополнительные обработки с настроенным расписанием.

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

← На главную