1С 8.3 : Конвертация данных 3.0. Настройка правил конвертации в формате Enterprise Data. Пример использования
Передать информацию о контрагентах из УП в БП. Данные передаются в одностороннем порядке, идентификация производится по уникальному идентификатору.Настройка правил конвертации выполняется с помощью специальной конфигурации Конвертация данных, редакция 3.0 (далее – КД 3.0).
Выполняемые действия
Этап 1. Подготовка к настройке правил.
Для настройки правил конвертации в конфигурации КД 3.0 должны содержаться сведения о структуре информационных баз, между которыми производится синхронизация данных, а также о структуре формата Enterprise Data.
Шаг 1. Выгрузка структуры информационных баз УП и БП.
Для выгрузки информации о структуре информационной базы используется обработкаMD83Exp.epf, входящая в комплект поставки конфигурации КД 3.0.
Для каждой информационной базы (УП и БП) необходимо выполнить следующие действия:
- Открыть информационную базу в режиме “Предприятие”.
- Открыть внешнюю обработку MD83Exp.epf (Меню Файл & Открыть).
- Указать имя файла, в который следует сохранить структуру информационной базы.
- Проверить настройки в форме обработки (все флаги должны быть сняты).
- Нажать кнопку Выгрузить.
Шаг 2. Экспорт xml-схемы формата обмена
Для выгрузки схемы формата обмена используются стандартные возможности платформы.
Необходимо выполнить следующие действия:
- Открыть одну из информационных баз (либо УП либо БП) в режиме “Конфигуратор”.
- В дереве метаданных найти XDTO пакеты с именами ExchangeMessage иEnterpriseData_1_0_beta.
- Установить курсор на пакет XDTO, нажать правую кнопку мыши и в контекстном меню выбрать пункт Экспорт XML-схемы. Указать путь и имя файла для экспорта. Выполнить это действие для каждого из двух пакетов, сохранив XML-схемы в два разных файла.
Шаг 3. Загрузка структуры информационных баз в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”. Перечисленные ниже действия следует выполнить для каждой из конфигураций, для которых настраиваются правила конвертации (УП и БП).
- Перейти в раздел Конфигурации, и выбрать команду Загрузка структуры конфигурации.
- Указать путь к файлу со структурой информационной базы (см. Этап 1, Шаг 1).
- Указать способ загрузки & в новую версию конфигурации.
- Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Шаг 4. Загрузка структуры формата обмена в конфигурацию КД 3.0
Загрузка выполняется в конфигурацию КД 3.0 в режиме “Предприятие”.
- Перейти в раздел Формат данных, и выбрать команду Загрузка структуры формата.
- Указать файлы со структурой формата (см. Этап 1, Шаг 2). Необходимо указать сразу оба файла, используя множественный выбор.
- Проверить имя основного пакета XDTO – должен совпадать с пространством имен пакета XDTO EnterpriseData_1_0_beta (см. в конфигураторе УП или БП).
- Указать способ загрузки & в новую версию формата.
- Нажать кнопку Выполнить загрузку, дождаться окончания загрузки.
Этап 2. Создание конвертаций
Для решения описанной задачи необходимо создать две конвертации:
- УП (для выгрузки данных из УП в формат обмена)
- БП (для загрузки данных из формата обмена в БП)
Создание конвертаций производится в разделе Конвертации, команда Конвертации. Для новой конвертации необходимо указать наименование, конфигурацию и формат обмена. Например, конвертация для конфигурации УП:
- Наименование & “УП2.0.7”.
- Конфигурация & “УправлениеПредприятием”.
- Поддерживаемые версии формата & одна строка, в которой выбрана единственная позиция справочника Версии формата.
Далее для каждой из двух конвертаций требуется настроить правила:
- правила обработки данных,
- правила конвертации объектов,
- правила конвертации предопределенных данных.
Для перехода к комплекту правил конкретной конвертации необходимо перейти в разделКонвертации, выбрать команду Настройка правил конвертации и выбрать в списке конкретную конвертацию, для которой будут настраиваться правила. В результате будет открыта форма Настройка правил обмена, в которой собраны все правила для конкретной конвертации.
Этап 3. Создание правил конвертации объектов
Шаг 1. Правило конвертации для выгрузки контрагентов из УП
- Открыть настройку правил обмена для конвертации УП.
- Перейти на закладку Правила конвертации объектов.
- Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
- Идентификатор правила: “Справочник_Контрагенты_Отправка”,
- Объект конфигурации: “СправочникСсылка.Контрагенты”,
- Объект формата: “Справочник.Контрагенты”,
- Область применения: Для отправки.
- Воспользоваться сервисом автоматического сопоставления свойств
- Нажать кнопку Настройка ПКС
- В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”
- Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств
Шаг 2. Правило конвертации для загрузки контрагентов в БП
- Открыть настройку правил обмена для конвертации БП.
- Перейти на закладку Правила конвертации объектов.
- Создать новое правило конвертации и заполнить данные на закладке Основные сведения:
- Идентификатор правила: “Справочник_Контрагенты_Получение”,
- Объект конфигурации: “СправочникСсылка.Контрагенты”,
- Объект формата: “Справочник.Контрагенты”,
- Область применения: Для получения.
- Воспользоваться сервисом автоматического сопоставления свойств:
- Нажать кнопку Настройка ПКС
- В открывшейся форме нажать Автосопоставление. Сопоставятся свойства “ИНН”, “КПП”, “Наименование”, “НаименованиеПолное”, “ДополнительнаяИнформация”, “ЮридическоеФизическоеЛицо”.
- Сохранить результат автоматического сопоставления & нажать кнопкуСоздать правила конвертации свойств и закрыть форму настройки правил конвертации свойств.
Этап 4. Создание правил конвертации предопределенных данных
Порядок действий одинаков для обоих конвертаций.
- Открыть настройку правил обмена для конвертации (УП или БП)
- Перейти на закладку Правила конвертации предопределенных данных
- Создать новое правило конвертации и заполнить его свойства:
- Идентификатор правила: “Перечисление_ЮридическоеФизическоеЛицо”
- Объект конфигурации: “ПеречислениеСсылка.ЮридическоеФизическоеЛицо”
- Объект формата: “ЮридическоеФизическоеЛицо”
- Область применения: для отправки и получения
- В табличном поле заполнить соответствия значений перечисления конфигурации и формата: “ФизическоеЛицо” & “ФизическоеЛицо” и “ЮридическоеЛицо” & “ЮридическоеЛицо”
- Нажать кнопку Записать и закрыть
- Перейти на закладку Правила конвертации объектов
- Найти правило конвертации справочника Контрагенты, открыть форму правила
- Перейти на закладку Правила конвертации свойств и найти правило для свойства “ЮридическоеФизическоеЛицо”
- Открыть форму правила конвертации свойства и указать в нем правило конвертации объекта & “Перечисление_ЮридическоеФизическоеЛицо”.
- Сохранить внесенные изменения
Этап 5. Создание правил обработки данных
Порядок действий одинаков для обоих конвертаций.
- Открыть настройку правил обмена для конвертации (УП или БП)
- Перейти на закладку Правила конвертации объектов
- Найти правило конвертации справочника Контрагенты, открыть форму правила
- Нажать кнопку Создать на основании & Правило обработки данных
- В созданном правиле обработки данных проверить заполнившиеся автоматически свойства:
- Идентификатор правила & указать такой же как для правила обработки данных (“Справочник_Контрагенты_Отправка” либо “Справочник_Контрагенты_Получение”)
- Область применения & такая же как для правила обработки данных
- Объект выборки:
- для конвертации УП & “СправочникСсылка.Контрагенты”
- для конвертации БП & “Справочник.Контрагенты”
Этап 6. Получение модулей менеджера обмена данными
Модуль менеджера обмена данными необходим для обмена данными между конфигурациями в соответствии с настроенными в КД 3.0 правилами.
Порядок действий одинаков для обеих конвертаций:
- Открыть информационную базу УП или БП в режиме “Конфигуратор”. Найти в дереве метаданных общий модуль МенеджерОбменаЧерезУниверсальныйФормат и открыть его для редактирования. Модуль должен быть пустым.
- Открыть информационную базу КД 3.0 в режиме “Предприятие”.
- Перейти в раздел Конвертации и выбрать команду Выгрузка модуля.
- В открывшейся форме указать соответствующую конвертацию и нажать кнопку Выгрузить. Модуль будет скопирован в буфер обмена.
- Перейти в конфигуратор информационной базы УП или БП и вставить содержимое буфера обмена в общий модуль МенеджерОбменаЧерезУниверсальныйФормат.
- Сохранить конфигурацию.
Выгрузка модуля в буфер обмена также может производиться из формы настройки правил обмена по кнопке Сохранить модуль менеджера обмена.
Для того чтобы по настроенным правилам выполнялся обмен данными, необходимо в обеих информационных базах в режиме “Предприятие” настроить синхронизацию данных через универсальный формат.
ВВЕДЕНИЕ
В случае если между базами данных 1с настроен обмен с использованием правил обмена. То в результате доработки конфигураций или обновления на более актуальный релиз возникает задача актуализации правил обмена.
Схематический процесс актуализации правил представлен далее:
Обращаю внимание, что первый пункт в данной схеме не актуален, если у вас в базе конвертация данных уже находятся правила обмена.
Создание и обновление объектов метаданных конвертации
Выгрузка правил обмена из базы в XML файл (для новой конвертации)
Для того что выгрузить привила обмена, в типовых конфигурациях нужно зайти в справочник настройки обмена данными а нажать кнопку «Сохранить правила обмена
Рис. 1. Форма элемента справочника Настройки обмена данными
Загрузка правил обмена, в конфигурацию КД 2.0 (для новой конвертации)
После запуска Конвертации данных нужно открыть форму загрузки правил обмена, и указать файл с правилами обмена данными.
Рис. 2. Вызов формы загрузки правил обмена
Выгрузка изменений конфигурации в файл XML (MD81Exp.epf, MD82Exp.epf)
Выгрузка конфигурации осуществляется обработкой MD81Exp.epf, MD82Exp.epf соответственно для версий 1с 8.1 и 8.2 .Данная обработка расположена в каталоге шаблона конфигурации КД (например C:\Users\RudakovDV\AppData\Roaming\1C\1Cv82\tmplts\1c\Conversion\2_1_7_1 ).
Осуществим выгрузку конфигурации БП 3.0.
Открываем обработку MD82Exp.epf, в ней отмечаем выгружать движения документов без проведения и нажем выгрузить (Рис. 3.)
Рис. 3. Форма обработки MD82Exp.epf
Замена изменённой конфигурации в правилах обмена.
Откроем список правил обмена (Рис. 4.)
Рис. 4. Открытие формы списка правил обмена
Вызываем форму элемента правил обмена (Рис.5). Далее взываем форму конфигурации заменимой конфигурации.
Рис. 5. Форма правил обмена
Появится форма элемента справочника конфигурации (Рис. 6.), в ней нужно заменить старую конфигурацию, на актуальную конфигурацию которую мы получили на втором шаге.
Рис. 6. Формы конфигурации
В форме загрузки метаданных конфигурации, следует обратить внимание, что вы действительно заменяете (а не дополняете и не создаете) нужную конфигурацию.
Рис. 7. Форма конфигурации и форма загрузки структуры метаданных конфигурации
Редактирование правил обмена
Актуализация ПКС и ПКО
При редактировании правил обмена следует обратить внимание на списки правил конвертации объектов и списки правил конвертации свойств. Если объект или свойство удалены (возможно, переименованы) в новой версии конфигурации, то строка с данным полем будет выделена красным. Подобный пример приведен на Рис. 8, в результате обновления к новой конфигурации была удалена табличная часть «Пересортица» и реквизит «ПолученИзАстор», следовательно, данные строки выделены красным.
Рис. 8. Участки, на которые следует обратить внимание при корректировании правил обмена
Для исправления данных недостатков, нужно изменить источник и приемник конвертируемого свойства. Для этого нужно кликнуть по выделенной строке дважды, и в появившейся форме правиле конвертации свойств (Рис. 9.), просмотреть свойства источника и свойства приемника. Если в конфигурации были удалены реквизиты или табличные части, то в конвертации данных при загрузке, эти свойства будут помечены на удаление. Следовательно, нужно переназначить свойства, помеченные на удаление на новые появившиеся свойства, или может быть удалить данную конвертацию свойства из ПКО.
Рис. 9.Актуализация конвертации свойств.
Аналогичным образом нужно актуализировать правила конвертации объектов.
Актуализация кода обработчиков
Для актуализации кода обработчиков на данный момент нет средств, для выявления синтаксических ошибок.
Сохранение правил обмена и их загрузка в БД
Правила обмена нужно сохранить в файл на диске, для этого нажмите «Сохранить правила» в форме настройки правил обмена.
Рис. 10. Сохранение правил обмена
Появится форма сохранения правил, в которой указывается файл сохранения правил обмена.
Рис. 11. Форма сохранения правил обмена
Теперь в форме элемента справочника настройки обмена данными, загружаем правила обмена в БД. Теперь можно провести обмен.
Так же нужно обратить внимание, что при замене правил обмена в конфигурации конвертация данных новой версией правилами обмена, не всегда новые правила загружаются корректно. В частности если в вашей конфигурации конвертация данных имеются правила обмена, в которых галочка «Работа с параметрами версии 2.1» отключена, а в загружаемых правилах обмена включена, то ожидаемого результата что галочка будет включена не подтвердится, т .е. нужно будет вручную зайти и проставить данную галочку (Рис. 12.).
Рис. 12. Форма Правил обмена, вкладка параметры
В файлах размещенных к скачиваю, последовательно рассказано как сохранить новую конфигурацию, заменить её в правилах обмена и доработать их в соответствии с новыми изменениями. Попытался обратить внимание на важные пункты при решении данной задачи.
ddp_knowledge
Суть задачи: иногда возникает необходимость выгрузить данные из, например, 1С:Бухгалтерии предприятия в 1С:Управление торговлей, но не по узлам обмена распределенной информационной базы (РИБ), а через обработку Универсальный обмен данными XML. Это, например, может возникнуть когда Вы создаете новую базу УТ, и хотите импортировать справочник из БП в УТ, не настраивая двусторонний обмен данными или собственные правила обмена, или бухгалтеру привычнее и удобнее выгружать данные за выбранный период, а не по принципу регистрации обмена.
Решение: первое что Вам, возможно, захочется сделать, это просто выгрузить стандартные правила обмена БП-УТ из конфигурации БП, и просто подцепить их в обработку. Но, нажав кнопку «Выгрузить данные», Вы получите огорчающее сообщение:
Ошибка компиляции при вычислении выражения или выполнении фрагмента кода: <(4,52)>: Переменная не определена (УзелДляОбмена)
Вся проблема в том, что при выгрузке через РИБ, в контексте выполнения модулей правил обмена доступен узел обмена, в переменной «УзелДляОбмена», в реквизитах которого содержатся различные настройки. Собственно, пути решения два:
1. Дописывать правила обмена, что в данном случае будет крайне геморройным мероприятием, связанным с бесконечным поиском и заменой в текстах правил обмена и с физическим и умственным истощением человека делающего это.
2. Дать доступ к вышеуказанной переменной.
Собственно, мы с Вами, коллега, будем рассматривать второй вариант. Для этого нужно следовать следующему рецепту:
1. Выгрузим правила обмена. Для этого, откроем конфигуратор, найдем в ветке ОбщиеМакеты макет, в данном случае, с названием ПравилаОбмена_БП_УТ, откроем его, и через меню «Файл/Сохранить как», сохраним с расширением .xml
2. Сохраним обработку УниверсальныйОбменДаннымиXML в файл. Найдем ее в дереве конфигурации, щелкнем правой кнопкой мыши, выберем «Сохранить как внешнюю обработку/отчет».
3. Откроем данную обработку (из файла), и добавим в нее реквизит УзелДляОбмена, тип данных, в нашем случае, «ПланОбменаСсылка.ОбменУправлениеТорговл ейБухгалтерияКОРП».
4. В версии конфигурации Бухгалтерия предприятия, 2.0.37.12 (возможно, и в более ранних), нужно в модуль объекта данной обработки (в самый конец) вставить две строки, указанные ниже, иначе мы получим еще одно безрадостное сообщение типа «Переменная не определена»:
мИнформацияОПользовательскихПоляхПоискаП риВыгрузкеДанных = Новый Соответствие();
мИнформацияОПользовательскихПоляхПоискаП риЗагрузкеДанных = Новый Соответствие();
5. Сохраняем и открываем обработку в режиме 1С:Предприятие.
6. В реквизите «УзелДляОбмена», который мы добавили, выбираем узел из плана обмена — лучше создать новый, и прописать в нем необходимые условия. К сожалению, в этом месте создается одна небольшая проблема: с этого момента все изменения информационной базы начинают регистрироваться и сохраняться в соответствующих таблицах. В связи с этим, я рекомендую периодически сбрасывать зарегистрированные объекты через Монитор обмена данными (закладка «Дополнительно», кнопка «Подробно», затем «Удалить всю регистрацию»). В прочем, этот процесс можно и автоматизировать, прописав соответствующие действия в обработке обмена, при каждом обмене данными.
7. Заполняем остальные реквизиты (выгруженные на шаге 1 правила обмена, файл данных или настройки прямого подключения, период выгрузки, отборы и т.п.)
Выгрузка / загрузка правил Конвертации данных 2.1 в файлы / из файлов (для Git, SonarQube, VS Code и т.д.)
Когда я начал вплотную заниматься разработкой правил обмена на проекте, мне захотелось версионировать правила, чтобы видеть историю изменений. На первых парах я выгружал в Git просто файлы правил целиком, как есть, даже без доработок, которые предлагал в своей статье Станислав Ганиев.
Однако это было несерьезное решение, версионировать и работать с одним огромным файлом такая себе затея. И тем более, когда к разработке подключился коллега, было решено делать декомпозицию правил на структуру папок и файлов, чтобы получился полноценный репозиторий проекта с файлами xml и bsl.
На ИнфоСтарте уже есть несколько разработок на эту тему, от:
Это все очень крутые инструменты, но они требуют изучения и установки дополнительных компонентов, по крайней мере OneScript. Хотелось взять инструмент для простого 1Сника, который сможет запустить его в любой базе КД 2.1, т. е. в виде внешней обработки.
Такого инструмента не нашел, поэтому решил сделать сам. Ну как, сам, взял за основу усовершенствования . Что получилось в итоге расскажу дальше.
Интерфейс Обработки
Основное (и единственное) окно программы представляет собой таблицу с добавленными конвертациями. Настройки сохраняются, поэтому можно добавить нужные правила один раз и навсегда. Напротив каждой конвертации вы указываете путь, куда выгружать /откуда загружать разобранные правила.
Ну и тут же в строке есть кнопки Выгрузить в папку и Загрузить из папки. Кстати, не смог сделать, чтобы кнопки были активны всегда, а не только при нажатии, почти не работал с обычными формами. Может, кто-то подскажет, можно ли сделать как-то лучше?
Внизу еще есть галка Добавлять описание параметров. , которая включает одну мою доработку, о ней подробнее расскажу в следующем разделе.
Отличия от исходного инструмента
В исходных скриптах Никиты я сделал несколько доработок:
- Папки и файлы, отвечающие за конвертацию свойств, выгружались просто по номерам, было неинформативно, добавил в имена еще наименования правил.
- Увеличил количество сериализуемых обработчиков событий.
- Файлы алгоритмов называются по теперь по имени алгоритма, а не просто Текст, чтобы тоже повысить информативность.
И последнее, что касается как раз галки из интерфейса обработки. Добавил возможность выгрузки в файлы bsl обработчиков описание параметров, чтобы было удобнее работать во внешних редакторах (VS Code, Sublime. ), были подсказки, не надо было лезть в справку за пояснениями. Вот пример описания для обработчика перед выгрузкой объекта:
Вынес этот функционал в отдельную настройку, потому как вам это может и не нужно, а такое описание в каждом обработчике будет занимать много места.
Варианты использования
1. В первую очередь, конечно, этот инструмент делался для версионирования и совместной разработки через Git. Командная разработка с его применением выходит на новый уровень: не нужно постоянно договариваться о совместных доработках, заниматься сложным переносом и объединением, бояться потерять свои наработки. В качестве гит-клиента я использую SourceTree, мне нравится его графический интерфейс.
2. Можно выгружать тексты обработчиков в SonarQube или другие системы для контроля качества кода.
3. Также можно открыть всю папку с правилами или отдельные файлы в таких редакторах как VS Code или Sublime Text, и производить, например, удобный поиск по всем правилам. А с установленным плагином BSL LS можно редактировать тексты с автодополнением, подсказками и проверками.
4. Еще отлично может помочь Консоль кода на основе Monaco от salexdv. Например, вы открываете файл обработчика после загрузки документа в этой консоли, запущенной в базе-приемнике. Тогда у вас работает не только подсказка ввода по ключевым словам, но и вы находитесь в контексте конфигурации: будут видны общие модули, реквизиты объектов, конструктор запросов и т.д.
Процесс совместной разработки
Расскажу кратко о процессе, который мы используем при командное работе с правилами. По сути, это почти классический Gitflow.
- В базе КД2 есть, как минимум, следующие варианты правил: рабочие, а также отдельные для каждого разработчика.
- В гите есть две постоянных ветки: master, где лежат полностью проверенные рабочие правила и develop с правилами, по которым закончена разработка.
- Когда разработчик начинает делать новую задачу, он "отпочковывается" от ветки develop, создает свою feature-ветку с именем задачи.
- В этот момент в его локальной папке репозитория лежат разобранные правила из ветки develop.
- С помощью Обработки в КД2 разработчик загружает правила из файлов в свою копию правил конвертации.
- Начинается сама работа над правилами. В процессе работы можно делать промежуточные коммиты в feature-ветку выгружая правила через Обработку. В гит-клиенте можно посмотреть изменения и сделать коммит с комментарием .
- Когда разработка по задаче закончена, делается последний коммит и происходит слияние feature-ветки в develop. Лучше использовать классический merge, с коммитом, даже если возможен fast-forward, т. е. когда изменений в develop не было. Если происходят какие-то конфликты в доработках, надо будет их разрулить в этот момент, однако из-за разделения на множество отдельных файлов, их вероятность сильно падает.
- Когда совместно разработанные правила проверены и пора обновлять рабочие, происходит слияние ветки develop в master, аналогично предыдущему пункту. Правила из ветки master через Обработку загружаются в рабочие правила в КД2 и вставляются в продуктивные базы.
Заключение и благодарности
Буду рад, если этот инструмент кому-то пригодится в работе. Жду замечаний, пожеланий по обработке