Разработка правил обмена в конфигурации «1С:Конвертация данных 2.1» (КД 2.1) — это классический и один из самых надежных способов настройки интеграции между различными базами на платформе 1С. Однако у начинающих разработчиков часто возникает путаница, когда задача выходит за рамки простого переноса «один в один» и требует сопоставления сложных объектов с различной структурой. Типичный пример — перенос платежных документов из 1С:Бухгалтерия предприятия 3.0 (БП) в 1С:ERP Управление предприятием 2 (ERP).
В этой статье мы подробно разберем, как правильно сопоставить документы при переносе, какие теоретические материалы необходимо изучить в первую очередь, как эффективно использовать встроенные инструменты КД 2.1 и как решать сопутствующие технические проблемы, возникающие при интеграции через БСП.
При переносе кассовых и банковских документов важно понимать, что методология учета в БП и ERP существенно различается. В БП 3.0 платежные документы ориентированы на прямое отражение в бухгалтерском учете. В ERP безналичные платежи тесно связаны с оперативным контуром, казначейством и планированием движения денежных средств.
Рассмотрим базовую схему соответствия документов:
Списание с расчетного счета в БП 3.0 конвертируется в документ Списание безналичных денежных средств в ERP 2.4.Поступление на расчетный счет в БП 3.0 конвертируется в документ Поступление безналичных денежных средств в ERP 2.4.Простая автоматическая синхронизация реквизитов здесь не сработает, поскольку в ERP требуется обязательное заполнение аналитики казначейства. Например, реквизит Статья движения денежных средств (СДДС) в БП является плоским справочником, тогда как в ERP он имеет иерархическую структуру и может требовать сопоставления по определенным алгоритмам.
Для сопоставления связанных объектов по ссылкам (таких как договоры, контрагенты или статьи ДДС) мы должны настроить Правила конвертации объектов (ПКО). Разберем по шагам, как это сделать программно в обработчиках КД 2.1.
Если нам необходимо перед выгрузкой документа проверить наличие договора и принудительно назначить нужное ПКО, мы пишем следующий код в событии ПередВыгрузкой свойства (ПКС) ДоговорКонтрагента:
Если ЗначениеЗаполнено(Источник.ДоговорКонтрагента) Тогда
ИмяПКО = "ДоговорыКонтрагентов";
Иначе
// Если договор не заполнен, мы можем отменить выгрузку конкретного свойства
Отказ = Истина;
КонецЕсли;
При переносе связанных объектов КД 2.1 автоматически выгрузит все ссылочные данные, если для них созданы соответствующие ПКО. Если ПКО не задано, система попытается сопоставить объект по уникальному идентификатору (GUID), но не перенесет его внутренние реквизиты, что приведет к появлению пустых элементов в базе-приемнике.
Для успешного освоения Конвертации данных 2.1 крайне рекомендуется обратиться к методическому пособию В. Э. Бояркина и А. И. Филатова «1С:Предприятие 8. Конвертация данных: обмен данными между прикладными решениями». Рассмотрим подробнее, почему именно главы 3, 8 и 9 критически важны для решения нашей задачи.
Глава 3. «Автоматическое создание правил»
Эта глава описывает интерактивные инструменты КД 2.1, которые позволяют моментально сопоставить метаданные источника и приемника. Используя механизм автоматического сопоставления, мы можем сопоставить простые реквизиты (например, дату, номер, организацию, сумму документа), которые имеют идентичные типы и наименования. Это экономит до 80% времени при стартовой настройке переноса 5 документов.
Глава 8. «Правила очистки данных»
При регулярном обмене данными часто возникает ситуация, когда в базе-источнике документ удаляется или помечается на удаление. В этой главе подробно разъясняется, как настроить правила так, чтобы изменения синхронизировались корректно, а в базе-приемнике не оставалось «битых» ссылок на удаленные объекты.
Глава 9. «Алгоритмы и запросы»
Это 핵심-раздел для любого разработчика. Здесь описывается создание глобальных алгоритмов КД 2.1 (которые можно вызывать из разных обработчиков, сокращая дублирование кода) и использование запросов в Правилах выгрузки данных (ПВД). Например, если нам нужно выгрузить документы Списание с расчетного счета только за определенный период и только по конкретной организации, мы пишем запрос в ПВД:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| СписаниеСРасчетногоСчета.Ссылка КАК Ссылка
|ИЗ
| Документ.СписаниеСРасчетногоСчета КАК СписаниеСРасчетногоСчета
|ГДЕ
| СписаниеСРасчетногоСчета.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И СписаниеСРасчетногоСчета.Организация = &Организация";
Запрос.УстановитьПараметр("НачалоПериода", ДатаНачала);
Запрос.УстановитьПараметр("КонецПериода", ДатаОкончания);
Запрос.УстановитьПараметр("Организация", Параметры.ОрганизацияОтбора);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
ВыгрузитьПоПравилу(Выборка.Ссылка, , , , "СписаниеСРасчетногоСчета");
КонецЦикла;
Один из самых ценных практических советов при работе в КД 2.1 — это активное использование двух встроенных инструментов справочной системы: кнопки со знаком вопроса и кнопки «Информация по обработчикам».
Выясним причину, почему это так важно. В отличие от стандартного конфигуратора 1С, встроенный текстовый редактор в КД 2.1 не обладает контекстной подсказкой (автодополнением кода по нажатию Ctrl+Space) для локальных переменных. Весь написанный код обработчиков компилируется платформой динамически во время выполнения обмена с помощью функции Выполнить().
Справка «Информация по обработчикам» дает подробную информацию по следующим аспектам:
ПередВыгрузкой доступны переменные Источник, Отказ, ВходящиеДанные, а в событии ПКС доступна переменная Значение).ПослеВыгрузки, когда XML-пакет с данными уже сформирован и отправлен в файл.Часто после успешного создания правил в КД 2.1 разработчик настраивает регулярный обмен через функционал синхронизации данных БСП (Библиотека стандартных подсистем) и сталкивается с системной ошибкой:
«Синхронизация данных может быть выполнена некорректно, т.к. версия программы в правилах конвертации отличается от версии в другой программе...»
Проанализируем ситуацию. БСП осуществляет строгий контроль версий метаданных источника и приемника, указанных в заголовке XML-файла правил обмена. Если одна из баз обновилась, фактическая версия конфигурации перестает соответствовать версии, прописанной в правилах конвертации.
Разберем по шагам, как решить эту проблему:
MD83Exp.epf (она идет в комплекте поставки КД 2.1).3.0.121.45 и 2.4.13.281).ExchangeRules.xml (правила конвертации), RegistrationRules.xml (правила регистрации для планов обмена) и CorrespondentExchangeRules.xml (правила для обратной стороны обмена).Несмотря на то, что фирма «1С» активно развивает технологию КД 3.0, базирующуюся на универсальном формате обмена EnterpriseData и XDTO-пакетах, классическая КД 2.1 остается стандартом для решения локальных задач перехода.
Посмотрим на ключевые преимущества КД 2.1 в контексте нашей задачи:
EnterpriseData в КД 3.0.Таким образом, для быстрой и качественной настройки переноса документов между БП 3.0 и ERP 2.4 лучшим решением будет последовательное изучение встроенной справки КД 2.1, чтение профильных глав книги Бояркина и аккуратное программирование логики сопоставления объектов в обработчиках событий конвертации.