Решений всегда несколько

Есть дописанная БД 1С Управление Торговлей (далее УТ) редакции 10.2 на платформе 8.1.
И есть стандартная БД 1С Бухгалтерия на платформе 8.3.

Задача:

Наладить обмен данными между базами.

Решение:

Установил 1С Конвертация данных, редакция 2.1.
Загрузил.
Запускаю "Стартовый помощник" (рис.1).

1. Далее.
2. Выбираю "Создать новые правила обмена данными (с нуля)". Далее.
3. На третьем шаге программа просит указать конфигурации источника и приемника.
Создаю конфигурацию источника (1С УТ):
- так как у меня 1С УТ на платформе 8.1, то с диска ИТС беру внешнюю обработку MD81Exp.epf (ее можно скачать) .
- открываю 1С УТ. Файл --> Открыть --> MD81Exp.epf .

Указываю файл, в который будет выгружаться информация о структуре метаданных. Он должен быть в формате XML.

Нажимаю кнопку "Выгрузить".

Аналогично проделываю все тоже самое с базой приемником. С 1С Бухгалтерией 8.3. Только для нее беру внешнюю обработку MD83Exp.epf (ее можно скачать) .

Перехожу обратно в 1С Конвертация данных.

Мы остановились на 3-ем шаге. Нажимаю кнопку "Новая", указываю сформированный файл структур метаданных. В справочник конфигураций, загрузится данная структура.

4. На четвертом шаге выбираю пункт "Автоматически создать все возможные правила обмена данными".

Теперь перед нами открылось новое окно. Созданы правила конвертации объектов. Нужно создать правила выгрузки данных. Для этого перехожу на вторую вкладку "Правила выгрузки данных" и нажимаю кнопку "Создать правила выгрузки".

1. Вступление.

2. Что понадобится: конфигурация 1С: Конвертация данных 2.* и обработки из пакета. Для Примера задач возьмем конфигурации 1С: Управление торговлей 11 и 1С: БП 3.*.

Итак, для разработки правил выгрузки данных в 1С потребуется конфигурация 1С: Конвертация объектов 2, а также обработки, входящие в пакет.

Например, у нас уже развернута база конвертации и запущена.

Разработку правил обмена будем писать между конфигурацией 1С: Управление торговлей 11 и 1С: Бухгалтерия предприятия 3 (правила обмена УТ / БУХ).

3. Нам понадобятся Обработки для выгрузки структуры метаданных и обмена.

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

Собственно, в распакованном каталоге конфигураций для конфигураций на управляемых формах нас интересует обработка MD83Exp.epf. Если выгрузку нужно сделать из конфигураций на обычных формах, тогда используется обработка MD82Exp.epf. Это если, например, нужно получить структуру из таких конфигураций, как 1С: УТ 10, 1С: Управление производственным предприятием 1.3, 1С: Комплексная автоматизация 1.1, 1С: Зуп 2.5 и так далее.

Далее уже для выгрузки-загрузки данных в 1С с помощью наших правил понадобится обработка «Универсальный обмен данными в формате XML» V8Exchan83.epf для конфигураций на управляемых формах таких как 1С: Управление торговлей 11.*, 1С БП 3, 1С: ERP 2.* и подобных. И соответственно V8Exchan83.epf - для конфигураций на обычных формах.

4. Выгрузка структуры метаданных конфигурации 1С: Управление торговлей 11.3 и 1С: Бухгалтерия предприятия 3.0.*

Начнем с выгрузки структуры метаданных из конфигурации 1С: Бухгалтерия предприятия 3.
Откроем обработку MD83Exp.epf

В форме обработки имеются дополнительные настройки, где мы можем включить или отключить параметр выгружать регистры и движения в 1С. Также есть выбор, где будет проходить выгрузка: на сервере 1С или «на клиенте.» Указываем название файла, куда выгрузится структура данных. Аналогичным образом делаем выгрузку структуры метаданных конфигурации Управление торговлей 11.

Теперь необходимо загрузить конфигурацию в базу конвертаций. К данному пункту можно прийти и из списка конфигураций, и из списка конвертаций. Сделаем просто загрузку из рабочего стола:

В диалоговом окне загружаем структуру БП:

И аналогично - структуру Управления торговлей.

По окончании загрузки появится диалоговое окно, где можно указать удобное для вас наименование.

6. Создание правил конвертации в 1С на конкретном примере задачи.

Далее переходим в «Настройка правил объекта», где создаем новую настройку.
В диалоговом окне создания конвертации выбираем конфигурацию «источник» и конфигурацию «приемник» (которые ранее загрузили) и нажимаем ОК.

Так как в этой статье планировал показать создание «с нуля» и «без мусора», напоминаю, что ничего автоматически не создаем. Никаких прототипов.

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

Создадим правила для выгрузки не один документ в один, а один вид в другой, например, документ РеализацииТоваровУслуг из УТ 11 с необходимыми справочниками в документ ПоступлениеТоваровУслуг в БП 3.

Итак, создаем новое ПКО (правило конвертации объектов в 1С)

Выбираем источник РеализацияТоваровУслуг и приемник ПоступлениеТоваровУслуг и нажимаем ОК.
При этом появится диалоговое окно, где опять отказываемся от автоматического создания ПКС (Правил конвертации свойств). Далее выберем только необходимые.

А вот на предложение создать ПВД (правил выгрузки данных) отвечаем «Да».

Создаются ПВД, которые и будут отражаться в обработке универсального обмена XML для выбора:

Создадутся так же правила конвертации данных с пустыми правилами конвертации свойств.

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

Снимаем поиск по УИО:

Теперь начнем сопоставление необходимых свойств (реквизитов) объекта. Для этого жмем «СинхронизацияСвойств» (метка «1» на скрине). Убираем рекурсивное создание правил («2»). Снимаем все отмеченные реквизиты ("3"). И выберем самостоятельно, что нам нужно.

Для примера выбираем необходимое:

Обращаю внимание на то, что мы сделаем ПКС контрагента в организацию, а организацию в контрагента, и еще сопоставим некоторые реквизиты, которые не совпадают по имени, например, «Валюта» и «Валюта документа».

Где видим, что еще нет правил конвертации.

Начнем по реквизитам проходить и описывать. Сначала настраиваем поиск документа так, как писал ранее, делаем выгрузку и поиск документа на начало даты, и сделаем подмену нумерации. Первые три символа будем подменять на свой префикс «УТБ». А так как в БП и УТ нумерация по 11 символов, делаем составной номер: наш префикс и 8 символов от источника. Пример на скрине ниже.

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

Для этого ПКС установив, как не проведен, 0 или 1, используем как булево.

На примере валюты создаем для ПКС правило конвертации объекта. При этом считаем, что в обеих базах валюты имеются, и они должны синхронизироваться по коду. Поэтому в ПКО валют не будем создавать все ПКС, а только добавим Код для поиска. Т.е. от предложения создать ПКС для объекта - отказываемся.

В ПКО документа для ПКС подставилось созданное Правило конвертации. А само правило по умолчанию предлагается по уникальному идентификатору. Исправляем, делаем поиск по коду и устанавливаем свойство, чтобы не создавать новый объект.

В итоге получаем вариант:

Далее по аналогии создаем для остальных реквизитов ПКО и ПКС. Причем поиск организации по контрагенту и наоборот устанавливаем по ИНН. Примерно так это выглядит с минимальными реквизитами (можно добавлять при необходимости).

Для ПКО Договоры контрагентов делаем поиск по ПКС Контрагент, наименование и владелец.

Посмотрим, как указать в ПКС нужное значение в типе перечисления. Например, реквизит «ВидОперации». Тут можно использовать различные условия и подставлять значения. Например, нам нужно, чтобы «вид операции» выгружался всегда «Товары», в этом случае достаточно в «лоб» написать нужное значение строкой.

Ниже показано, как установить без сложностей и в большинстве случаев ПКС для КратностьВзаиморасчетов, КурсВзаиморасчетов, Счета учета.

Для ПКО Номенклатура оставим поиск по внутреннему уникальному идентификатору. Но обращу внимание на то, как можно переопределить свою группу. Например, мы согласны, что будет выгружаться новая номенклатура из конфигурации 1С: Управление торговлей 11, но нужно, чтобы номенклатура собиралась в определенной группе «НашаГруппа».

Для реализации данной задачи создаем ещё одно ПКО. Назовем его «НоменклатураРодитель», которое укажем в ПКС родителя в правиле конвертации.

Устанавливаем два поиска: по наименованию, где наименование жестко указываем нашей группы, и обязательное свойство признака «ЭтоГруппа» в истина.

Поскольку мы приняли решение, что у нас вся номенклатура падает в нашу группу, то нет необходимости при выгрузке выгружать группы из УТ 11. Для этого в ПКО Номенклатура в обработчике событий «ПередВыгрузкой» поставим фильтр, что не нужно выгружать группы «Отказ = Источник.ЭтоГруппа;».

В ПВД (правила выгрузки данных) РеализацииТоваровУслуг, добавим фильтр, чтобы не выгружались помеченные на удаление документы. Для этого в ПВД в обработчиках событий «ПередВыгрузкой» пропишем фильтр «Отказ = Объект.ПометкаУдаления;».


Сохраним разработанные правила в файл.


7. Подводим итоги: Выгрузка и загрузка данных с помощью разработанных правил обмена данными.

Открываем в 1С:Управление торговлей 11 обработку «Универсальный обмен данными в формате XML» V8Exchan83.epf.

Выгрузка прошла, теперь этой же обработкой делаем загрузку в 1С: Бухгалтерия предприятия 3.


Загрузка прошла. Проверяем, что как загрузилось. Итак, документ загружен, как мы и добивались - у нас Организация загружена в контрагента, а контрагент в организацию. Счета учета все загружены и установлены. Номер документа у нас получился с нашим префиксом и на начало дня. Все реквизиты, которые прописали, заполнены.

Проверяем загрузку номенклатуры. Видим, что всё получилось так, как мы и планировали.


У нас создались и заполнились реквизиты так, как мы это задумывали. В конвертации имеется множество тонкостей и каких-то простых, но нужных вещей, которые помогают точно написать конвертацию. А это позволяет минимизировать ошибки, не испортить существующие данные и избавиться от лишнего мусора. Это один из самых простых примеров. Можно так же делать конвертации одного объекта во многие или же наоборот многие - в один.

Сейчас есть конвертация данных 3, она решает другие задачи. Поэтому конвертация 2, так же нужна. Всем удачи в изучении и освоении.

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

Для настройки обмена данными между различными (в том числе и самописными) конфигурациями в 1С существует очень гибкий механизм настройки переноса информации – конфигурация 1С «Конвертация данных» (КД). Давайте рассмотрим работу этого механизма и попробуем настроить правила обмена между двумя типовыми конфигурациями:

  • Бухгалтерия предприятия (демо-версия), редакция 3.0.30;
  • Зарплата и управление персоналом (демо-версия), редакция 3.0.25.

В качестве инструмента для настройки правил обмена будет выступать конфигурация Конвертация данных редакции 2.1.82. Работы будут производиться на платформе 8.3.9.

Важно отметить, что Ковертация данных позволяет организовать обмен не только между базами 8 версии программы, но и между 7 и 8 версиями платформы 1С.

Стартовый помощник

После установки конфигурации «Конвертация данных» и её запуска первое окно которое открывается – Стартовый помощник (Рис.1) .

Вызвать его повторно можно из меню Операции->Обработки либо из Справки, где эта обработка выделена в отдельную команду.

Так как мы не планируем использовать типовые правила переноса, а собираемся создать свои в следующем окне мы выберем соответствующий пункт из списка (Рис.2) .

Рис.2

Кроме создания новых правил обмена мы можем:


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

Файлы структуры метаданных

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

Важное правило! Обработки выгрузки структуры для разных баз данных должны принадлежать одной версии КД.

Для разных версий платформы фирма 1С реализовала разные обработки выгрузки структуры:

  • MD77Exp.ert – позволяет сохранить в файл структуру конфигураци семерочной базы данных;
  • MD82EXP.epf – выгуржает структуру баз данных, работающих на платформах версии 8.0-8.2;
  • MD83EXP.epf – предназначена для платформы 8.3.

Так как в условиях нашей задачи стоит организовать обмен между базами, работающими на релизе 8.3, мы воспользуемся третьей обработкой (Рис.4).

Рис.4

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

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

Для этого:


Для второй базы повторяем те же самые действия.

Вернемся к нашему помощнику.

Продолжение работы с помощником

После добавления двух наших баз в справочник он имеет вид (Рис.6).

Продолжим работу с помощником

В следующем окне (Рис.7) мы должны выбрать базу приемник и базу источник.

Рис.7

И вот мы подошли к окну, в котором на предложат определить по каким законам и соответствиям будет строиться наш обмен (Рис.8).

Рис.8

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

Так как мы хотим создать собственные правила мы пойдем по третьему пути.

Создание правила для обмена между справочниками

Устанавливаем переключатель в третий пункт списка и нажимаем кнопку «Выполнить».

Мы попали в мастер настроек элемента справочника «Правила конвертации объекта» (Рис.9)

Рис.9

В базе-источнике мы должны выбрать объект, данные которого будут синхронизированы.

В базе приемнике – таблицу, куда эти данные будут попадать.

На следующем этапе нам предстоит определиться с параметрами загрузки:

  • По каким реквизитам будет происходить поиск соответствия;
  • Что делать с существующими элементами;
  • Создавать ли отсутсвующие элементы;
  • Как поступать со ссылками;
  • Какие правила использовать для нумерации новых элементов.

И параметрами выгрузки.

Если мы решим выполнить автоматическое сопоставление данных, этот пункт мы пропустим.

В конце мы должны выгрузить созданные правила на диск.(Рис.10).

Рис.10

Обмен данными

Дальнейший обмен данными мы будем производить с помощью обработки V8Exchan83.epf (Рис.11), также входящей в комплект поставки. Использование стандартного обмена данными, входящего в состав конфигурации или самописной обработки, при использовании правил созданных в КД может закончится возникновением исключительной ситуации.

Рис.11

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

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

Цель данной статьи - ответить на первые вопросы по КД3 и на простом примере показать как доработать типовые правила. Информация полезна начинающим и тем, кто уже приступил к освоению и появились новые вопросы.

Принятые сокращения в этой публикации

КД2 - конфигурация Конвертация данных, редакция 2.0.
КД3 - конфигурация Конвертация данных, редакция 3.0, конфигурация 3.0.5.3.
ED - универсальный формат обмена EnterpriseData.

Ответы на вопросы после поверхностного знакомства с КД3. Если Вы знаете зачем нужна КД3 можно не читать этот абзац;)

Вопросы и ответы

  • КД3 это новая версия КД2? Нет! Это другой инструмент, который решает аналогичные КД2 задачи. Каждому инструменту своё применение.
  • КД3 лучше КД2? Их нельзя сравнивать, т.к. это разные инструменты и у каждого есть свои плюсы и минусы.
  • Для изменения правил обмена КД3 нужно снимать конфигурацию с поддержки? Нет НЕ нужно снимать с поддержки! В типовых конфигурациях можно штатно подключить внешнюю обработку с правилами, а на конфигурациях поддерживающих платформу 8.3.10 и выше можно редактировать правила с помощью расширения.
  • Нужно перенести данные из конфигураций собственного изготовления. Для целей изучения можно воспользоваться КД3? Если Вы задаёте этот вопрос, скорее всего нельзя. Для КД3 в составе конфигурации должна быть БСП 2.3 и выше с синхронизацией через универсальный формат. КД2 вам подойдёт 100%, КД3 под вопросом.
  • Можно ли использовать КД3 для типовых доработанных конфигураций? Да, можно. Если ваши нетиповые данные можно передать используя ED или реквизит AdditionalInfo, то хорошо. Иначе есть вариант изменения формата обмена (XML схемы). В этом случае возможности КД3 почти сравняются с КД2, но пропадёт основной плюс КД3 - универсальность формата обмена.
  • Конфигурации, поддерживающие ED, могут обмениваться между собой? Да! Но для обмена БП 3.0 - БП 3.0 при создании синхронизации нельзя выбрать БП 3.0. Ничего страшного, выбирайте «Другая программа». Если нужен разовый обмен, достаточно воспользоваться обработкой «Выгрузка загрузка EnterpriseData» в меню Все функции.
  • После обновления конфигурации нужно загрузить свежие правила из комплекта поставки? Нет! Правила содержаться в модуле конфигурации. Для обмена с другими базами 1С не требуется загружать правила другой базы. Почему? Подробности в этой статье.
  • После обновления одной базы необходимо привести в актуальное состояние другую базу, участвующую в обмене? Нет! Не требуется синхронно обновлять все базы, участвующие в обмене. Это один из плюсов КД3.
  • Наши конфигурации сильно доработаны, там новые виды документов и справочников, КД3 может их перенести? Есть вероятность, что без изменения формата не сможет. Это один из "минусов" КД3 по сравнению с КД2.

Зачем тогда нужна КД3? Плюсы и минусы

Плюсы КД3

Рассмотрим основной плюс КД3 на примере часто встречающейся задачи. Есть конфигурация УТ 11.3, которая не обновляется по каким либо причинам. Необходимо организовать обмен с БП 3.0, которая постоянно обновляется до актуального релиза.

Нет проблем.

  • Универсальный формат обмена, который используется в КД3 предназначен для решения подобных задач.
  • Правила обмена в УТ создаются не для обмена с БП а для обмена с универсальным форматом EnterpriseData.
  • Если оперировать понятиями КД2, то УТ обменивается с конфигурацией ED, которая не меняется. БП 3.0 тоже обменивается с ED.

У каждой конфигурации свои правила обмена с ED. Таким образом УТ выгружает данные всегда в один и тот же формат. Конфигурация БП 3.0, какая бы она новая не была должна уметь принимать данные из этого формата.

Получается что в УТ не нужно заботится о том, что БП поменяются какие-то реквизиты. Задача простая - выгрузить в ED, а конфигурация БП должна уметь принять данные из этого формата.

  • В связи с тем, что конфигурация источник выгружает всегда в одном формате, любая конфигурация приемник может загрузить в себя данные из этого универсального формата.
    Т.е. для произвольной комбинации обменов УТ - БП, УТ - КА, УТ - ERP, КА- БП, ERP - БП. не нужно писать индивидуальные правила. В КД3 правила универсальны. Любая конфигурация, поддерживающая обмен в универсальном формате может обмениваться с любой конфигурацией, поддерживающей формат ED.

Отладка алгоритмов и правил доступна в самой конфигурации, т.к. все правила это код общего модуля или внешней обработки. Можно обойтись без КД3 для оперативного исправления ошибки.

Минусы КД2

Правила обмена индивидуальны для каждой пары конфигураций. Для всех вышеперечисленных комбинаций обмена между разными видами конфигураций и разными версиями конфигураций нужны свои правила обмена. Поэтому для решения вышеозвученной задачи обмена УТ 11.3 и БП 3.0 потребуется почти после каждого обновления БП 3.0 отлаживать и дорабатывать правила обмена.

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

Минусы КД3

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

Для осуществления синхронизации в формате ED конфигурация должна поддерживать эти механизмы. Всё это есть в БСП 2.3 и выше. Это не совсем минус, это скорее особенность.

Основной плюс немного меркнет из-за ограниченных сроков поддержки формата. Это уже ощутили на себе пользователи УТ 11.1, УТ 11.2, которые обмениваются с БП 3.0. Сроки поддержки указаны по этой ссылке . Там сказано, что минимальный гарантированный срок поддержки формата составляет год, фактически около 3-х лет. Таким образом если Вы настроите синхронизацию сегодня, то минимум год можно не обновлять базу УТ 11, а потом либо обновить конфигурацию, либо просто добавить новый формат, внести небольшое изменение в БСП и в правила при необходимости. Как это сделать? Будет указано позднее в этой статье.

Плюсы КД2

Возможности КД2 безграничны. Можно создать правила обмена для любых конфигураций на любой платформе. От 1С 7.7 до последней 8.3. От конфигурации ничего не требуется, БСП не обязательна. Правила могут быть созданы в автоматическом режиме и доработаны.

В связи с вышесказанными плюсами и минусами рекомендуется использовать КД3 для типовых конфигураций. КД2 можно использовать для любых конфигураций, но учитывая её минусы не забывать, что иногда целесообразнее использовать КД3.

Надеюсь пришло понимание зачем нужна КД3, продолжаем по существу.

Принятые сокращения далее

БСП - Библиотека стандартных подсистем.
ПОД - правило обработки данных.
ПКО - правило конвертации объекта.
ПКПД - правило конвертации предопределенных данных.
ПКС - правило конвертации свойства.

Рассмотрим пример - необходимо изменить типовые правила обмена БП 3.0 и УТ 11.3

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

Как изменить правила ED?
  1. Доработать модуль с правилами обмена прямо в конфигурации. Этот вариант пока не рассматриваем, т.к. для понимания что и где нужно менять, необходимо хотя бы один раз сделать это в КД3. В этом случае будет проще в будущем оперативно решать проблемы, отлаживать в модуле и переносить в КД3 при необходимости.
  2. Воспользоваться КД3 .
    Как это делается в КД2? Выгружаем метаданные обеих конфигураций и загружаем в КД2.
    Шаг 1. Для КД3 делаем аналогично - в каждой конфигурации в режиме предприятия обработкой \tmplts\1c\Conversion\3_0_5_3\MD83Exp.epf выгружаем метаданные конфигураций,
    например, в папку «D:\Правила БП3\БП 3.0.54.15\ », имя файла «МД.xml ».

Непонятно с какой целью скрыты настройки этой обработки, в результате по умолчанию не выгружаются данные по регистрам сведений. Устраняем этот недочет.
В процедуре ИзменитьРежимОбработки() основной формы комментируем строку

// Элементы.Настройки.Видимость = Ложь;

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

Шаг 3. Загружаем ранее созданный файл «МД.xml » в КД3, раздел флаг «В новую версию конфигурации ».

Т.к. в КД3 для обмена используется «промежуточная конфигурация» (ED), загружаем и её «метаданные», которые представляют собой XML схему, файл с расширением «xsd». Шаг 2. Взять её можно из конфигурации УТ 11 или БП 3.0. Они одинаковы. Открываем конфигурацию, в строке поиска вводим «enter », видим в дереве Общие - XDTO-пакеты примерно такие пакеты: EnterpriseData_1_3_8, EnterpriseData_1_4_4 и подобные.. Это версии формата 1.3 и 1.4 соответственно и 1.2, 1.1, 1.0 если есть. Правая кнопка мыши на пакете, в контекстном меню выбираем «».

Шаг 4. В КД3 раздел , выбираем ранее выгруженные файлы с расширением «xsd». Нужно выбирать один файл ! Множественный выбор совместно с ExchangeMessage не нужен ! Это предлагалось в старых инструкциях КД3 предыдущих версий. В последних КД3 этого не требуется.

После загрузки формата в разделе Формат данных - Дерево объектов формата , выберите версию формата. Если там есть документы и справочники, значит Вы загрузили правильный файл. Если нет, начните всё сначала с новой пустой КД3 и первым делом загрузите формат и проверьте дерево.

Этап 2. После загрузки метаданных в КД3 приступаем к загрузке типовых правил обмена.
Как это делается в КД2? Правила загружаются в конвертацию.
В КД3 почти так же. Выгружаем правила из типовой, создаём конвертацию, а потом загружаем в неё правила.

Выгрузка типовых правил из конфигурации для загрузки в КД3

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

Открываем конфигурацию БП 3.0 или УТ 11.3 в режиме конфигуратора, в строке поиска можно ввести «мен уни », открываем общий модуль . Если это БП 3.0, то открываем . В открытом модуле переходим в меню Файл - Сохранить копию , сохраняем файл с произвольным именем, например, «D:\Правила БП3\БП 3.0.54.15\Общий модуль МенеджерОбменаЧерезУниверсальныйФормат_ Модуль ».
Открываем конфигурацию БП 3.0 или УТ 11.3 в режиме предприятия, открываем обработку \tmplts\1c\Conversion\3_0_5_3\Выгрузка правил синхронизации.epf

Недостаток типовой обработки:

  • часто завершается с ошибкой;
  • выгружает правила из внешней обработки, подключенной к узлу, а нам нужны типовые правила;
  • не работает в БП 3.0.53 и выше.

Доработка модуля основной формы обработки. Вносим изменения в процедуры ПриСозданииНаСервере .

&НаСервере Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка) // Список выбора версий формата. ВерсииФормата = Новый Соответствие; ОбменДаннымиПереопределяемый.ПриПолученииДоступныхВерсийФормата(ВерсииФормата); Для Каждого ПланОбмена Из ОбменДаннымиПовтИсп.ПланыОбменаБСП() Цикл Если ОбменДаннымиПовтИсп.ЭтоПланОбменаXDTO(ПланОбмена) Тогда ВерсииФорматаПланаОбмена = Новый Соответствие; ВерсияБСП243 = ОбщегоНазначенияКлиентСервер.СравнитьВерсии(СтандартныеПодсистемыСервер.ВерсияБиблиотеки(), "2.4.3.1") >= 0; МодульОбменДаннымиСервер = ОбщегоНазначения.ОбщийМодуль("ОбменДаннымиСервер"); Если ВерсияБСП243 Тогда ВерсииФорматаПланаОбмена = МодульОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ПланОбмена, "ВерсииФорматаОбмена"); Иначе ПланыОбмена[ПланОбмена].ПолучитьВерсииФорматаОбмена(ВерсииФорматаПланаОбмена); КонецЕсли; Для Каждого ВерсияПланаОбмена Из ВерсииФорматаПланаОбмена Цикл МодульМенеджера = ВерсииФормата.Получить(ВерсияПланаОбмена.Ключ); Если МодульМенеджера = Неопределено Или МодульМенеджера <> ВерсияПланаОбмена.Значение Тогда ВерсииФормата.Вставить(ВерсияПланаОбмена.Ключ, ВерсияПланаОбмена.Значение); КонецЕсли; КонецЦикла; КонецЕсли; КонецЦикла; Для Каждого ВерсияФормата ИЗ ВерсииФормата Цикл Элементы.НомерВерсииФормата.СписокВыбора.Добавить(ВерсияФормата.Ключ); КонецЦикла; АдресХранилищаВерсииФормата = ПоместитьВоВременноеХранилище(ВерсииФормата, УникальныйИдентификатор); КонецПроцедуры

  • Выбираем «Номер версии формата», например, «1.3 »,
  • «Каталог обмена» - создадим папку, например, «»
  • Нажимаем кнопку «Выгрузить ».

Повторяем эти действия для других версий формата и сохраняем в соответствующие папки "1.4", "1.5" и т.п.. Для БП 3.0 достаточно выгрузить все форматы от 1.3 и выше. Для других конфигураций от 1.2 и выше.

Правила выгружены, теперь нужно загрузить их в КД3. В КД2 правила загружаются одновременно с созданием конвертации. В КД3 нужно создать конвертацию и загрузить в неё правила.
В КД3 Раздел Конвертации - Конвертации - Создать . . Выбираем конфигурацию. Для удобства можно изменить наименование конфигурации, перейдя в режим редактирования элемента. Например, вместо БухгалтерияПредприятия указать «БП 3.0.54.15 ». Реквизит Имя не нужно менять! Наименование конвертации можно указать таким же, например, «БП 3.0.54.15 ». В табличную часть выбираем поддерживаемые версии формата. Версии формата те, которые мы выгрузили из базы выше. Сохраняем конвертацию.

Переходим в раздел Конвертация - Загрузка правил синхронизации из файлов .
:

    Место загрузки: «В существующую конвертацию »

    Каталог обмена: «D:\Правила БП3\БП 3.0.54.15\1.3 »

  • Файл с модулем обмена: «D:\Правила БП3\БП 3.0.54.15\Общий модуль МенеджерОбменаЧерезУниверсальныйФормат13_ Модуль.txt »
  • Конвертация: «БП 3.0.54.15 »

При загрузке правил синхронизации из файлов для УТ 11.3 появляется ошибка "Поле объекта не обнаружено ". Причина - для ТекПКО.ИспользоватьДляПолучения=Ложь КД3 требует наличия информации по варианту идентификации при получении. Если в файле правил этого нет, возникает ошибка. Исправляем это недоразумение. Либо снимаем эту форму с поддержки, либо используем расширение.

// Основная форма обработки ЗагрузкаПравилСинхронизацииИзФайлов // До внесения изменений: // Процедура загружает правила конвертации объектов &НаСервере Процедура ЗагрузитьПКО() ... ЗаполнитьЗначенияСвойств(ТекПКО, СтруктураАтрибутов); // Вариант идентификации - особая логика. ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентификации]; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // Запись загруженного ПКО. ... // Изменения помечены "//ED" // Процедура загружает правила конвертации объектов &НаСервере Процедура ЗагрузитьПКО() ... ЗаполнитьЗначенияСвойств(ТекПКО, СтруктураАтрибутов); // Вариант идентификации - особая логика. Если ТекПКО.ИспользоватьДляПолучения Тогда //ED ТекПКО.ВариантИдентификации = Перечисления.ВариантыИдентификацииОбъектов[СтруктураАтрибутов.ВариантИдентификации]; КонецЕсли; ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда // Запись загруженного ПКО. ...

Нажимаем кнопку «Загрузить ». «Обработчики предназначены для другой конвертации: БП 3.0.44 (формат 1.4). Продолжить загрузку? » Нажимаем «Да ».
Не закрывая форму выбираем другой «Каталог обмена » и нажимаем кнопку « ». Повторяем несколько раз загрузку правил для каждого формата в текущую конвертацию.
После успешной загрузки переходим в раздел «Конвертации» - «Настройка правил конвертации », открываем нашу конвертацию из формы списка.
Если видим , ПОД и т.п., значит загрузка в КД3 удалась.

Проверка корректности загрузки правил

Это не обязательная операция! Если Вы будете использовать одну версию формата в правилах, добиваться идентичности текста модуля не требуется.

  • Открываем конфигуратор БП, создаём новую внешнюю обработку, например, Имя «СинхронизацияEDБП », синоним «Синхронизация ED БП 3.0 ».
  • В КД3 в форме «Настройка правил обмена » нажимаем кнопку «» и вставляем этот код из буфера обмена в нашу новую обработку.
  • В конфигураторе БП проверяем модуль на синтаксические ошибки. Сохраняем обработку.
  • создаём в БП ещё одну пустую обработку, например, Имя «СинхронизацияEDБПтиповая », синоним «Синхронизация ED БП 3.0 типовая ». Копируем текст общего модуля БП МенеджерОбменаЧерезУниверсальныйФормат13 в модуль обработки и сохраняем её.

Сравниваем обе обработки. Меню Файл - Сравнить файлы .

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

Аналогичным способом создаём в КД3 конвертацию для УТ 11.3.

БП 3.0.54.15

  • Замечена некорректная загрузка ПКО "Справочник_Пользователи ". Необходимо исправить . Должно .
  • В ПКО "Документ_ИнвентаризацияТоваров_Отправка " для ПКС "ОтветственноеЛицо " не указано ПКО. Откройте , перевыберите свойство конфигурации и свойство формата чтобы заполнился их тип, после чего будет доступен выбор в поле "Правило конвертации свойства ". Выберите "Справочник_ФизическиеЛица_Отправка ".

Рассмотрим пример доработки

Основная цель примера - показать возможности доработок для переноса дополнительных данных, которые не укладываются в формат обмена.

Необходимо перенести реквизит "ВидНоменклатуры " справочника "Номенклатура", тип реквизита "Справочник.ВидыНоменклатуры ". Этот вид справочника не переносится типовыми правилами КД3 и не поддерживается форматом ED версии ниже 1.6.

Есть несколько вариантов решения подобной задачи

  • Доработка XDTO пакета , добавление в формат объекта "Справочник.ВидыНоменклатуры". В результате теряется основное преимущество универсального формата - он перестаёт быть универсальным. Доработка XDTO пакета потребуется во всех базах, участвующих в обмене.
  • Использовать свойство формата "ДополнительныеРеквизиты ", которое есть во многих объектах. Этот вариант рассматривать в данной статье не будем ввиду некоторой сложности. Примем к сведению что есть такой способ.
  • Реквизит AdditionalInfo. Он присутствует в шапке всех объектов формата. Тип anyType. Предназначен для подобных случаев. Воспользуемся им как самым простым способом.

Перед тем как приступить к доработке типовых правил, создадим в группе правил две группы «Добавлено », «Изменено ». Это делается в "Конвертации - ".
Новые ПОД, ПКО, Алгоритмы и т.п. будем создавать в группе «Добавлено», типовые объекты, в которые вносим изменения, переносим в группу «Изменено». Это облегчит последующую поддержку изменённых правил.

Итак, приступим.

Изменения правил в УТ 11.3

В КД3 в форме «УТ 11.3.4.12 Настройка правил обмена » на вкладке Алгоритмы создаём новый алгоритм

  • Имя алгоритма «AdditionalInfoВставить»
  • Группа: "Добавлено"

Параметры: «ДанныеXDTO, Имя, ДопЗначение»

Код алгоритма

Если ДанныеXDTO.Свойство("AdditionalInfo") И ТипЗнч(ДанныеXDTO.AdditionalInfo)=Тип("Структура") Тогда ДопДанные = ДанныеXDTO.AdditionalInfo; Иначе ДопДанные = Новый Структура; КонецЕсли; ДопДанные.Вставить(Имя, ДопЗначение); ДанныеXDTO.Вставить("AdditionalInfo", ДопДанные);

Сохраняем алгоритм и переходим на вкладку «Правила конвертации объектов »

По кнопке «Найти » ищем «Номенклатура», открываем ПКО «Справочник_Номенклатура_Отправка ». Переходим на вкладку «При отправке ». Там видим поле «Имя обработчика:» «». Можно прямо туда внести изменения.
Более сложный код, требующий отладки можно писать в конфигурации. Ищем в модуле обмена в УТ 11.3 процедуру с именем «ПКО_Справочник_Номенклатура_Отправка_ПриОтправкеДанных » и дорабатываем там.
Для переноса изменений из УТ 11.3 в КД3 копируем всю процедуру в буфер обмена, в КД3 в форме «Настройка правил обмена » нажимаем кнопку «».

Для нашего примера код такой

Если ЗначениеЗаполнено(ДанныеИБ.ВидНоменклатуры) Тогда //ED AdditionalInfoВставить(ДанныеXDTO, "ВидНоменклатуры", Строка(ДанныеИБ.ВидНоменклатуры.УникальныйИдентификатор())); AdditionalInfoВставить(ДанныеXDTO, "ВидНоменклатурыНаименование", ОбщегоНазначения.ЗначениеРеквизитаОбъекта(ДанныеИБ.ВидНоменклатуры, "Наименование")); // AdditionalInfoВставить... //добавляем другие служебные реквизиты КонецЕсли;

После переноса изменений в КД3 нажимаем кнопку "Сохранить модуль менеджера обмена " и переносим код из буфера в модуль УТ 11.3.

Изменения правил в БП 3.0

Вносим изменения в ПКО "Справочник_Номенклатура_Получение ", на вкладке "При конвертации данных XDTO ", имя процедуры "ПКО_Справочник_Номенклатура_Получение_ПриКонвертацииДанныхXDTO ".

Код, добавляемый в модуль "ПКО_Справочник_Номенклатура_Получение_ПриКонвертацииДанныхXDTO"

Если ДанныеXDTO.Свойство("AdditionalInfo") И ТипЗнч(ДанныеXDTO.AdditionalInfo)=Тип("Структура") Тогда //ED ДопДанные = ДанныеXDTO.AdditionalInfo; Если ДопДанные.Свойство("ВидНоменклатуры") Тогда ВидНоменклатуры = ОбменДаннымиXDTOСервер.СсылкаОбъектаПоУИДОбъектаXDTO(ДопДанные.ВидНоменклатуры, Тип("СправочникСсылка.ВидыНоменклатуры"), КомпонентыОбмена); Если ВидНоменклатуры.ПолучитьОбъект()=Неопределено И ДопДанные.Свойство("ВидНоменклатурыНаименование") Тогда //Создаём новый ВидНоменклатурыОбъект = Справочники.ВидыНоменклатуры.СоздатьЭлемент(); ВидНоменклатурыОбъект.УстановитьСсылкуНового(ВидНоменклатуры); ВидНоменклатурыОбъект.Наименование = ДопДанные.ВидНоменклатурыНаименование; // заполняем другие служебные реквизиты ЗаполнитьЗначенияСвойств(ВидНоменклатурыОбъект,ДопДанные); ВидНоменклатурыОбъект.Записать(); ВидНоменклатуры = ВидНоменклатурыОбъект.Ссылка; КонецЕсли; ПолученныеДанные.ВидНоменклатуры = ВидНоменклатуры; КонецЕсли; КонецЕсли;

Одного кода недостаточно. Необходимо на вкладке "Правила конвертации свойств" добавить ПКС со свойством конфигурации " " и флажком "Используется алгоритм конвертации ".

Переносим модуль менеджера обмена в модуль конфигурации БП 3 или во внешнюю обработку.

Как загрузить доработанные правила КД3 в базу?

В конфигурациях, обменивающихся правилами на КД2 это делается в настройках узла. Для правил, созданных в КД3 мы там увидим только возможность поменять правила регистрации.

Правила, подготовленные в КД3 можно установить в конфигурацию тремя способами

  1. Снять конфигурацию с поддержки и внести изменения в общий модуль МенеджерОбменаЧерезУниверсальныйФормат ;
  2. На конфигурациях, работающих в режиме совместимости с платформой 8.3.10 и выше можно вносить исправления в общий модуль с помощью расширения.
  3. Подключить расширение, которое полностью подменяет общий модуль с правилами.
  4. Не снимая конфигурацию с поддержки подключить к узлу внешнюю обработку с правилами;

С первым вариантом всё понятно, он описан в документации, недостаток - нужно снимать конфигурацию с поддержки. Второй вариант - исправление выбранной процедуры расширением тоже не составит труда для программиста 1С - необходимо сравнить две обработки с типовыми правилами и с доработанными так, как описано выше в этой статье, и внести изменение в нужную процедуру.

Третий вариант - использование расширения с правилами обмена в универсальном формате в настоящее время самый оптимальный. Недостаток пока один - необходимо снимать флаг "Безопасный режим" при подключении данного расширения. Это ограничивает его использование в облачных сервисах. Ждём решения от 1С о порядке замены правил обмена в универсальном формате в 1С фреш.

Суть в том, что необходимо найти в конфигурации участок кода, который отвечает за выбор общего модуля в зависимости от версии формата обмена и заменить выбор модуля на свой модуль. Пример для БП 3.0.67:

//////// // Общий модуль ОбменДаннымиПереопределяемый &Вместо("ПриПолученииДоступныхВерсийФормата") Процедура ED_ПриПолученииДоступныхВерсийФормата(ВерсииФормата) ED_ОбменДаннымиСервер.ПриПолученииДоступныхВерсийФормата(ВерсииФормата); КонецПроцедуры //////// // План обмена СинхронизацияДанныхЧерезУниверсальныйФормат: Модуль менеджера #Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда &Вместо("ПриПолученииНастроек") Процедура ED_ПриПолученииНастроек(Настройки) Настройки.ИмяКонфигурацииИсточника = ОбщегоНазначенияБП.ИмяКонфигурацииИсточника(); Настройки.ЭтоПланОбменаXDTO = Истина; Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Ложь; Настройки.ФорматОбмена = "http://v8.1c.ru/edi/edi_stnd/EnterpriseData"; ВерсииФормата = Новый Соответствие; ED_ОбменДаннымиСервер.ПриПолученииДоступныхВерсийФормата(ВерсииФормата); //ED Настройки.ВерсииФорматаОбмена = ВерсииФормата; Настройки.ПланОбменаИспользуетсяВМоделиСервиса = Истина; Настройки.Алгоритмы.ПриПолученииВариантовНастроекОбмена = Истина; Настройки.Алгоритмы.ПриПолученииОписанияВариантаНастройки = Истина; Настройки.Алгоритмы.ПредставлениеОтбораИнтерактивнойВыгрузки = Истина; Настройки.Алгоритмы.НастроитьИнтерактивнуюВыгрузку = Истина; КонецПроцедуры #КонецЕсли //////// // Общий модуль в расширении ED_ОбменДаннымиСервер Процедура ПриПолученииДоступныхВерсийФормата(ВерсииФормата) Экспорт ВерсииФормата.Вставить("1.2", МенеджерОбменаЧерезУниверсальныйФормат); ВерсииФормата.Вставить("1.3", ED_МенеджерОбменаЧерезУниверсальныйФормат); ВерсииФормата.Вставить("1.4", ED_МенеджерОбменаЧерезУниверсальныйФормат); ВерсииФормата.Вставить("1.5", ED_МенеджерОбменаЧерезУниверсальныйФормат); ВерсииФормата.Вставить("1.6", ED_МенеджерОбменаЧерезУниверсальныйФормат); КонецПроцедуры //////// // Общий модуль в расширении ED_МенеджерОбменаЧерезУниверсальныйФормат // Конвертация БП3.0.44 (формат 1.6) от 27.11.2018 11:23:58 // Доработка для БП 3.0.67.х от 31.12....

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

В режиме предприятия, в разделе администрирования переходим по ссылке Синхронизация данных - Настройки синхронизации данных , нажимаем кнопку "Настроить... " если настройка одна или "Изменить ", если настроек несколько. Переходим в режим редактирования формы через меню " " , Разворачиваем "Группа ", там включаем скрытый элемент формы " ", "ОК ".
На вкладке "Служебная информация " выбираем "Путь к менеджеру обмена ", подставляем туда нашу обработку с правилами.

Подключение внешней обработки с правилами к БП 3.0.52 и выше

В БП 3.0.52 и выше по неизвестным причинам внешняя обработка с правилами не используется. Интерфейс для подключения обработки остался. Хотя бы на этом спасибо.

Задействовать обработку с правилами можно с помощью расширения. Необходимо внести исправление в общий модуль "ОбменДаннымиXDTOСервер ", функцию "ВерсииФорматаОбмена ".

Процедура EDм_ПолучитьВерсиюФорматаОбмена(ВерсииФормата, Знач УзелИнформационнойБазы) Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | СинхронизацияДанныхЧерезУниверсальныйФормат.ПутьКМенеджеруОбмена КАК ПутьКМенеджеруОбмена, | СинхронизацияДанныхЧерезУниверсальныйФормат.ВерсияФорматаОбмена КАК ВерсияФорматаОбмена |ИЗ | ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат |ГДЕ | СинхронизацияДанныхЧерезУниверсальныйФормат.ПутьКМенеджеруОбмена <> """" | И СинхронизацияДанныхЧерезУниверсальныйФормат.Ссылка = &Ссылка"); Запрос.УстановитьПараметр("Ссылка", УзелИнформационнойБазы); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ИмяОбработки = Выборка.ПутьКМенеджеруОбмена; Если НЕ ОбщегоНазначенияКлиентСервер.РежимОтладки() Тогда ДанныеОбработки = Новый ДвоичныеДанные(ИмяОбработки); АдресОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки); Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()); Иначе ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки); КонецЕсли; КонецЕсли; МенеджерОбмена = ВнешниеОбработки.Создать(ИмяОбработки); ВерсииФормата.Вставить(Выборка.ВерсияФорматаОбмена, МенеджерОбмена); КонецЦикла; КонецПроцедуры &Вместо("ВерсииФорматаОбмена") Функция EDм_ВерсииФорматаОбмена(Знач УзелИнформационнойБазы) ВерсииФорматаОбмена = Новый Соответствие; Если ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда ИмяПланаОбмена = УзелИнформационнойБазы.Метаданные().Имя; ВерсииФорматаОбмена = ОбменДаннымиСервер.ЗначениеНастройкиПланаОбмена(ИмяПланаОбмена,"ВерсииФорматаОбмена"); EDм_ПолучитьВерсиюФорматаОбмена(ВерсииФорматаОбмена, УзелИнформационнойБазы); Иначе ОбменДаннымиПереопределяемый.ПриПолученииДоступныхВерсийФормата(ВерсииФорматаОбмена); КонецЕсли; Если ВерсииФорматаОбмена.Количество() = 0 Тогда ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр("ru = "Не заданы версии формата обмена. |Имя плана обмена: %1 |Процедура: ПолучитьВерсииФорматаОбмена(<ВерсииФорматаОбмена>)""), УзелИнформационнойБазы.Метаданные().Имя); КонецЕсли; Результат = Новый Соответствие; Для Каждого Версия Из ВерсииФорматаОбмена Цикл Результат.Вставить(СокрЛП(Версия.Ключ), Версия.Значение); КонецЦикла; Возврат Результат; КонецФункции

Как выполнять отладку правил во внешней обработке

    В конфигураторе "Сервис -> Параметры -> Запуск 1С:Предприятия -> Параметр запуска ", указать параметр " ".

  • Ниже приведён код для расширения, для УТ 11.4, КА 2.4, ERP 2.4. Код для БП 3.0 приведён выше. Модуль менеджера плана обмена СинхронизацияДанныхЧерезУниверсальныйФормат.

Код расширения EDОтладка

&Вместо("ПолучитьВерсииФорматаОбмена") Процедура ED_ПолучитьВерсииФорматаОбмена(ВерсииФормата) ОбменДаннымиУТ.ДоступныеВерсииУниверсальногоФормата(ВерсииФормата); Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | СинхронизацияДанныхЧерезУниверсальныйФормат.ПутьКМенеджеруОбмена, | СинхронизацияДанныхЧерезУниверсальныйФормат.ВерсияФорматаОбмена |ИЗ | ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат |ГДЕ | СинхронизацияДанныхЧерезУниверсальныйФормат.ПутьКМенеджеруОбмена <> """""); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ИмяОбработки = Выборка.ПутьКМенеджеруОбмена; Если НЕ ОбщегоНазначенияКлиентСервер.РежимОтладки() Тогда //ED ДанныеОбработки = Новый ДвоичныеДанные(ИмяОбработки); АдресОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки); Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()); Иначе ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки); КонецЕсли; КонецЕсли; МенеджерОбмена = ВнешниеОбработки.Создать(ИмяОбработки); ВерсииФормата.Вставить(Выборка.ВерсияФорматаОбмена, МенеджерОбмена); КонецЦикла; КонецПроцедуры &Вместо("ДоступныеВерсииФорматаОбмена") Процедура ED_ДоступныеВерсииФорматаОбмена(ВерсииФормата) ОбменДаннымиУТ.ДоступныеВерсииУниверсальногоФормата(ВерсииФормата); Запрос = Новый Запрос("ВЫБРАТЬ РАЗЛИЧНЫЕ | СинхронизацияДанныхЧерезУниверсальныйФормат.ПутьКМенеджеруОбмена, | СинхронизацияДанныхЧерезУниверсальныйФормат.ВерсияФорматаОбмена |ИЗ | ПланОбмена.СинхронизацияДанныхЧерезУниверсальныйФормат КАК СинхронизацияДанныхЧерезУниверсальныйФормат |ГДЕ | СинхронизацияДанныхЧерезУниверсальныйФормат.ПутьКМенеджеруОбмена <> """""); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл ИмяОбработки = Выборка.ПутьКМенеджеруОбмена; Если НЕ ОбщегоНазначенияКлиентСервер.РежимОтладки() Тогда //ED ДанныеОбработки = Новый ДвоичныеДанные(ИмяОбработки); АдресОбработки = ПоместитьВоВременноеХранилище(ДанныеОбработки); Если ОбщегоНазначения.ЕстьЗащитаОтОпасныхДействий() Тогда ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки, ОбщегоНазначения.ОписаниеЗащитыБезПредупреждений()); Иначе ИмяОбработки = ВнешниеОбработки.Подключить(АдресОбработки); КонецЕсли; КонецЕсли; МенеджерОбмена = ВнешниеОбработки.Создать(ИмяОбработки); ВерсииФормата.Вставить(Выборка.ВерсияФорматаОбмена, МенеджерОбмена); КонецЦикла; КонецПроцедуры

Отладку проще всего вести в файловой базе. Точку останова ставим в обработке с правилами. Чтобы найти нужную процедуру, используем КД3. Находим ПКО, ПОД или Алгоритм, смотрим "Имя обработчика " или "Имя алгоритма ", ищем эту процедуру в модуле правил. После правки модуля не забываем скопировать процедуру в буфер и в КД3 нажать кнопку "". Будьте внимательны, должна быть открыта эта же конвертация.

На этом пока всё. Данной информации для программиста 1С уже достаточно чтобы самостоятельно освоить КД3 и поддерживать в рабочем состоянии современный способ синхронизации между базами 1С. Если остались белые пятна, спрашивайте, статья будет дополняться и Вы можете вернуться к ней если что-то забыли.

Общеизвестные ссылки на документацию по КД3:
  • 1С-Учебный центр №3, "Конвертация данных 3.0" - http://www.1c-uc3.ru/konvert30.html
Расширить сферу применения КД3 Вы можете используя эти публикации:
  • - конфигурации предыдущих версий на платформе 8.2 и ниже превращаются в совместимые с ED.
Сэкономить время и воспользоваться готовыми правилами для последних версий конфигураций можно здесь
  • - расширенный функционал, исправления замеченных ошибок.