Правила конвертации данных в этой статье не разрабатывались. Предполагается, что у каждого свои нюансы и основной целью статьи было лишь обеспечить возможность обмена по правилам КД2. При необходимости любой желающий сможет включить в состав обмена нужные объекты и написать правила. В этой же статье рассмартивается обмен только одного справочника "Склады".
Расширение подойдёт только тем, кто не использует план обмена "Миграция приложений".
Инструкция по установке:
- Подключаете расширение
- Запускаете 1С с параметром "ЗапуститьОбновлениеИнформационнойБазы" (например: нажимаете [Win] + [R] и пишите там (путь к 1С ваш): "C:\Program Files\1cv8\8.3.17.2198\bin\1cv8.exe" /CЗапуститьОбновлениеИнформационнойБазы)
- После завершения операции обновления настраиваете новый обмен через файл:
Если вторая база тоже ERP (или ей подобная), то действия точно такие-же, указав при этом файл НастройкиОбмена.xml. И дальше можете не читать.
Если вторая база на обычных формах (например УПП 1.3.161.2 какая-нибудь переписанная), то настройки нам загружать некуда. Поэтому, чтобы привести первую базу в режим полной готовности к обмену - заходим в Функции технического специалиста и редактируем регистр сведений "Общие настройки узлов информационных баз".
Настройки второй базы на обычных формах:
Заходим в конфигуратор и добавляем план обмена "Миграция приложений" почти с такой-же структурой как в расширении, только без форм.
Перем мМонопольныйРежимПередЗаписью;
Перем мЭтоНовыйЭлемент;
Функция СообщитьИнформациюПользователюПослеСозданияНовогоУзла() Экспорт
НужноПерезапуститьВсеПодключенияКИБ = Ложь;
Если мЭтоНовыйЭлемент
И НЕ ПараметрыСеанса.ИспользованиеРИБ
И НЕ мМонопольныйРежимПередЗаписью Тогда
НужноПерезапуститьВсеПодключенияКИБ = Истина;
КонецЕсли;
Если НужноПерезапуститьВсеПодключенияКИБ Тогда
Если мМонопольныйРежимПередЗаписью Тогда
ПолныеПрава.ОпределитьФактИспользованияРИБ();
Возврат "";
Иначе
Возврат "Для корректной работы механизма обмена данными необходимо завершить работу всех пользователей и перезапустить текущий сеанс работы 1С:Предприятия.";
КонецЕсли;
Иначе
Если мЭтоНовыйЭлемент Тогда
ПолныеПрава.ОпределитьФактИспользованияРИБ();
КонецЕсли;
Возврат "";
КонецЕсли;
КонецФункции
Процедура ПередЗаписью(Отказ)
мЭтоНовыйЭлемент = ЭтоНовый();
мМонопольныйРежимПередЗаписью = ОбщегоНазначения.ОпределитьТекущийРежимРаботыМонопольный();
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
СтрокаСообщенияПользователю = СообщитьИнформациюПользователюПослеСозданияНовогоУзла();
#Если Клиент Тогда
Сообщить(СтрокаСообщенияПользователю);
#КонецЕсли
КонецПроцедуры
Процедура ОпределитьТипОтправкиДанных(ЭлементДанных, ОтправкаЭлемента) Экспорт
КонецПроцедуры
Функция ВыгрузитьИзмененияДанныхДляУзла(УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML) Экспорт
Возврат ПроцедурыОбменаДанными.ВыгрузитьИзмененияДляУзлаВФайлОбмена(УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML);
КонецФункции
Функция ЗагрузитьИзмененияДанныхДляУзла (УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML) Экспорт
Возврат ПроцедурыОбменаДанными.ЗагрузитьИзмененияДляУзлаИзФайлаОбмена(УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML);
КонецФункции
Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
//Если ТипЗнч(ЭлементДанных) = мТипСправочникРегОтчеты Тогда
//
// ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
//
//КонецЕсли;
КонецПроцедуры
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
// Возвращает имя файла настроек по умолчанию;
// В этот файл будут выгружены настройки обмена для приемника;
// Это значение должно быть одинаковым в плане обмена источника и приемника.
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// Строка, 255 - имя файла по умолчанию для выгрузки настроек обмена данными
//
Функция ИмяФайлаНастроекДляПриемника() Экспорт
Возврат "";
КонецФункции
// Возвращает структуру отборов на узле плана обмена с установленными значениями по умолчанию;
// Структура настроек повторяет состав реквизитов шапки и табличных частей плана обмена;
// Для реквизитов шапки используются аналогичные по ключу и значению элементы структуры,
// а для табличных частей используются структуры,
// содержащие массивы значений полей табличных частей плана обмена.
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура отборов на узле плана обмена
//
Функция НастройкаОтборовНаУзле(ВерсияКорреспондента, ИмяФормы) Экспорт
СтруктураНастроек = Новый Структура;
//СтруктураНастроек.Вставить("ИсточникКадровыхСведенийРегламентированныйУчет", Ложь);
Возврат СтруктураНастроек;
КонецФункции
// Возвращает структуру значений по умолчанию для узла;
// Структура настроек повторяет состав реквизитов шапки плана обмена;
// Для реквизитов шапки используются аналогичные по ключу и значению элементы структуры.
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура значений по умолчанию на узле плана обмена
//
Функция ЗначенияПоУмолчаниюНаУзле(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат Неопределено;
КонецФункции
// Возвращает строку описания ограничений миграции данных для пользователя;
// Прикладной разработчик на основе установленных отборов на узле должен сформировать строку описания ограничений
// удобную для восприятия пользователем.
//
// Параметры:
// НастройкаОтборовНаУзле - Структура - структура отборов на узле плана обмена,
// полученная при помощи функции НастройкаОтборовНаУзле().
//
// Возвращаемое значение:
// Строка, Неогранич. - строка описания ограничений миграции данных для пользователя
//
Функция ОписаниеОграниченийПередачиДанных(НастройкаОтборовНаУзле, ВерсияКорреспондента) Экспорт
Результат = НСтр("ru = 'Выгружается Номенклатура, Характеристики.'");
Результат = Результат + Символы.ПС + НСтр("ru = '");
//Если НастройкаОтборовНаУзле.ИсточникКадровыхСведенийРегламентированныйУчет Тогда
// Результат = Результат + НСтр("ru = 'регламентированный учет.'");
//Иначе
// Результат = Результат + НСтр("ru = 'управленческий учет.'");
//КонецЕсли;
Возврат Результат;
КонецФункции
// Возвращает строку описания значений по умолчанию для пользователя;
// Прикладной разработчик на основе установленных значений по умолчанию на узле должен сформировать строку описания
// удобную для восприятия пользователем.
//
// Параметры:
// ЗначенияПоУмолчаниюНаУзле - Структура - структура значений по умолчанию на узле плана обмена,
// полученная при помощи функции ЗначенияПоУмолчаниюНаУзле().
//
// Возвращаемое значение:
// Строка, Неогранич. - строка описания для пользователя значений по умолчанию
//
Функция ОписаниеЗначенийПоУмолчанию(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
// Возвращает представление команды создания нового обмена данными.
//
// Возвращаемое значение:
// Строка, Неогранич - представление команды, выводимое в пользовательском интерфейсе.
//
// Например:
// Возврат НСтр("ru = 'Создать обмен в распределенной информационной базе'");
//
Функция ЗаголовокКомандыДляСозданияНовогоОбменаДанными() Экспорт
Возврат НСтр("ru = 'Создать обмен с конфигурацией ""ERP Обмен НСИ""'");
КонецФункции
// Определяет, будет ли использоваться помощник для создания новых узлов плана обмена.
//
// Возвращаемое значение:
// Булево - признак использования помощника.
//
Функция ИспользоватьПомощникСозданияОбменаДанными() Экспорт
Возврат Истина;
КонецФункции
// Возвращает пользовательскую форму для создания начального образа базы.
// Эта форма будет открыта после завершения настройки обмена с помощью помощника.
// Для планов обмена не РИБ функция возвращает пустую строку
//
// Возвращаемое значение:
// Строка, Неогранич - имя формы
//
// Например:
// Возврат "ПланОбмена._ДемоРаспределеннаяИнформационнаяБаза.Форма.ФормаСозданияНачальногоОбраза";
//
Функция ИмяФормыСозданияНачальногоОбраза() Экспорт
Возврат "";
КонецФункции
// Возвращает массив используемых транспортов сообщений для этого плана обмена
//
// 1. Например, если план обмена поддерживает только два транспорта сообщений FILE и FTP,
// то тело функции следует определить следующим образом:
//
// Результат = Новый Массив;
// Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
// Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
// Возврат Результат;
//
// 2. Например, если план обмена поддерживает все транспорты сообщений, определенных в конфигурации,
// то тело функции следует определить следующим образом:
//
// Возврат ОбменДаннымиСервер.ВсеТранспортыСообщенийОбменаКонфигурации();
//
// Возвращаемое значение:
// Массив - массив содержит значения перечисления ВидыТранспортаСообщенийОбмена
//
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
Результат = Новый Массив;
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.COM);
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
//Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
//Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.EMAIL);
//+Владимир Ч. (заявка 22632) 25.02.2020
Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.WS);
//==Владимир Ч. (заявка 22632) 25.02.2020
Возврат Результат;
КонецФункции
// Возвращает признак использования плана обмена для организации обмена в модели сервиса.
// Если признак установлен, то в сервисе можно включить обмен данными
// с использованием этого плана обмена.
// Если признак не установлен, то план обмена будет использоваться только
// для обмена в локальном режиме работы конфигурации.
//
Функция ПланОбменаИспользуетсяВМоделиСервиса() Экспорт
Возврат Ложь;
КонецФункции
// Возвращает признак того, что план обмена поддерживает обмен данными с корреспондентом, работающим в модели сервиса.
// Если признак установлен, то становится возможным создать обмен данными когда эта информационная база
// работает в локальном режиме, а корреспондент в модели сервиса.
//
Функция КорреспондентВМоделиСервиса() Экспорт
Возврат Ложь;
КонецФункции
// Возвращает имена реквизитов и табличных частей плана обмена,
// перечисленных через запятую, которые являются общими для пары обменивающихся конфигураций.
// Например, если для плана обмена предусмотрено ограничение миграции данных по организациям в обе стороны,
// то табличная часть плана обмена, в которой перечислены разрешенные организации, считается общей.
// Возвращает пустую строку, если общие данные узлов не предусмотрены.
//
Функция ОбщиеДанныеУзлов(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат "";
КонецФункции
// Возвращает краткую информацию по обмену, выводимую при настройке синхронизации данных.
//
Функция КраткаяИнформацияПоОбмену() Экспорт
ПоясняющийТекст = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Позволяет синхронизировать данные между конфигурациями ""%1"" и ""ERP"".
|Синхронизация данных выполняется в одностороннем режиме на уровне справочной информации.'"),
Метаданные.Синоним);
Возврат ПоясняющийТекст;
КонецФункции
// Возвращаемое значение: Строка - Ссылка на подробную информацию по настраиваемой синхронизации,
// в виде гиперссылки или полного пути к форме
Функция ПодробнаяИнформацияПоОбмену() Экспорт
//Возврат "ПланОбмена.ОбменУправлениеПроизводственнымПредприятиемДокументооборот.Форма.ПодробнаяИнформация";
Возврат "";
КонецФункции
// Возвращает имя обработки выгрузки в составе конфигурации
//
Функция ИмяОбработкиВыгрузки() Экспорт
Возврат "";
КонецФункции
// Возвращает имя обработки загрузки в составе конфигурации
//
Функция ИмяОбработкиЗагрузки() Экспорт
Возврат "";
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Обработчики событий для обмена без использования правил обмена
// Обработчик события коллизий изменений объектов.
// Условие возникновения:
// Событие возникает при загрузке данных,
// в случае коллизии изменений загружаемого объекта.
// Коллизия изменений возникает, когда в информационной базе
// зарегистрированы изменения для загружаемого объекта.
//
// Параметры:
// УзелИнформационнойБазы – ПланОбменаСсылка – узел плана обмена для которого выполняется загрузка данных.
// Объект – объект, для которого возникла коллизия изменений.
//
// Возвращаемое значение:
// Тип: Булево. Истина – загружаемый объект будет записан в информационную базу;
// Ложь – загружаемый объект записан не будет.
//
Функция ПрименитьОбъектПриКоллизииИзменений(УзелИнформационнойБазы, Объект) Экспорт
Возврат Ложь;
КонецФункции
////////////////////////////////////////////////////////////////////////////////
// Для работы через внешнее соединение
// Возвращает структуру отборов на узле плана обмена базы корреспондента с установленными значениями по умолчанию;
// Структура настроек повторяет состав реквизитов шапки и табличных частей плана обмена базы корреспондента;
// Для реквизитов шапки используются аналогичные по ключу и значению элементы структуры,
// а для табличных частей используются структуры,
// содержащие массивы значений полей табличных частей плана обмена.
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура отборов на узле плана обмена базы корреспондента
//
Функция НастройкаОтборовНаУзлеБазыКорреспондента(ВерсияКорреспондента, ИмяФормы) Экспорт
СтруктураНастроек = Новый Структура;
Возврат СтруктураНастроек;
КонецФункции
// Возвращает структуру значений по умолчению для узла базы корреспондента;
// Структура настроек повторяет состав реквизитов шапки плана обмена базы корреспондента;
// Для реквизитов шапки используются аналогичные по ключу и значению элементы структуры.
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// СтруктураНастроек - Структура - структура значений по умолчанию на узле плана обмена базы корреспондента
//
Функция ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента(ВерсияКорреспондента, ИмяФормы) Экспорт
Возврат Неопределено;
КонецФункции
// Возвращает строку описания ограничений миграции данных для базы корреспондента, которая отображается пользователю;
// Прикладной разработчик на основе установленных отборов на узле базы корреспондента должен сформировать строку описания ограничений
// удобную для восприятия пользователем.
//
// Параметры:
// НастройкаОтборовНаУзле - Структура - структура отборов на узле плана обмена базы корреспондента,
// полученная при помощи функции НастройкаОтборовНаУзлеБазыКорреспондента().
//
// Возвращаемое значение:
// Строка, Неогранич. - строка описания ограничений миграции данных для пользователя
//
Функция ОписаниеОграниченийПередачиДанныхБазыКорреспондента(НастройкаОтборовНаУзле, ВерсияКорреспондента) Экспорт
Результат = НСтр("ru = 'Выгружается Заявка .'");
Возврат Результат;
КонецФункции
// Возвращает строку описания значений по умолчанию для базы корреспондента, которая отображается пользователю;
// Прикладной разработчик на основе установленных значений по умолчанию на узле базы корреспондента должен сформировать строку описания
// удобную для восприятия пользователем.
//
// Параметры:
// ЗначенияПоУмолчаниюНаУзле - Структура - структура значений по умолчанию на узле плана обмена базы корреспондента,
// полученная при помощи функции ЗначенияПоУмолчаниюНаУзлеБазыКорреспондента().
//
// Возвращаемое значение:
// Строка, Неогранич. - строка описания для пользователя значений по умолчанию
//
Функция ОписаниеЗначенийПоУмолчаниюБазыКорреспондента(ЗначенияПоУмолчаниюНаУзле, ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
// Процедура предназначена для получения дополнительных данных, используемых при настройке обмена в базе-корреспонденте.
//
// Параметры:
// ДополнительныеДанные – Структура. Дополнительные данные, которые будут использованы
// в базе-корреспонденте при настройке обмена.
// В качестве значений структуры применимы только значения, поддерживающие XDTO-сериализацию.
//
Процедура ПолучитьДополнительныеДанныеДляКорреспондента(ДополнительныеДанные) Экспорт
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Константы и проверка параметров учета
// Возвращает пояснение о последовательности действий пользователя для настройки параметров учета в текущей информационной базе.
//
Функция ПояснениеДляНастройкиПараметровУчета() Экспорт
Возврат "";
КонецФункции
// Возвращает пояснение о последовательности действий пользователя для настройки параметров учета в базе-корреспонденте.
//
Функция ПояснениеДляНастройкиПараметровУчетаБазыКорреспондента(ВерсияКорреспондента) Экспорт
Возврат "";
КонецФункции
Процедура ОбработчикПроверкиПараметровУчета(Отказ, Получатель, Сообщение) Экспорт
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Обработчики событий
// Обработчик события при подключении к корреспонденту.
// Событие возникает при успешном подключении к корреспонденту и получении версии конфигурации корреспондента
// при настройке обмена с использованием помощника через прямое подключение
// или при подключении к корреспонденту через Интернет.
// В обработчике можно проанализировать версию корреспондента и,
// если настройка обмена не поддерживается с корреспондентом указанной версии, то вызвать исключение.
//
// Параметры:
// ВерсияКорреспондента (только чтение) – Строка – версия конфигурации корреспондента, например, "2.1.5.1".
//
Процедура ПриПодключенииККорреспонденту(ВерсияКорреспондента) Экспорт
КонецПроцедуры
// Обработчик события при отправке данных узла-отправителя.
// Событие возникает при отправке данных узла-отправителя из текущей базы в корреспондент,
// до помещения данных узла в сообщения обмена.
// В обработчике можно изменить отправляемые данные или вовсе отказаться от отправки данных узла.
//
// Параметры:
// Отправитель – ПланОбменаОбъект, Структура – узел плана обмена, от имени которого выполняется отправка данных.
// Игнорировать – Булево – признак отказа от выгрузки данных узла.
// Если в обработчике установить значение этого параметра в Истина,
// то отправка данных узла выполнена не будет. Значение по умолчанию – Ложь.
//
Процедура ПриОтправкеДанныхОтправителя(Отправитель, Игнорировать) Экспорт
КонецПроцедуры
// Обработчик события при получении данных узла-отправителя.
// Событие возникает при получении данных узла-отправителя,
// когда данные узла прочитаны из сообщения обмена, но не записаны в информационную базу.
// В обработчике можно изменить полученные данные или вовсе отказаться от получения данных узла.
//
// Параметры:
// Отправитель – ПланОбменаОбъект, Структура – узел плана обмена, от имени которого выполняется получение данных.
// Игнорировать – Булево – признак отказа от получения данных узла.
// Если в обработчике установить значение этого параметра в Истина,
// то получение данных узла выполнена не будет. Значение по умолчанию – Ложь.
//
Процедура ПриПолученииДанныхОтправителя(Отправитель, Игнорировать) Экспорт
КонецПроцедуры
////////////////////////////////////////////////////////////////////////////////
// Переопределяемая настройка дополнения выгрузки
// Предназначена для настройки вариантов интерактивной настройки выгрузки по сценарию узла.
// Для настройки необходимо установить значения свойств параметров в необходимые значения.
//
// Параметры:
// Получатель - ПланОбменаСсылка - Узел, для которого производится настройка
// Параметры - Структура - Параметры для изменения. Содержит поля:
//
// ВариантБезДополнения - Структура - настройки типового варианта "Не добавлять".
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Истина.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 1.
// Заголовок - Строка - позволяет переопределить название типового варианта.
// Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
// ВариантВсеДокументы - Структура - настройки типового варианта "Добавить все документы за период".
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Истина.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 2.
// Заголовок - Строка - позволяет переопределить название типового варианта.
// Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
// ВариантПроизвольныйОтбор - Структура - настройки типового варианта "Добавить данные с произвольным отбором".
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Истина.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 3.
// Заголовок - Строка - позволяет переопределить название типового варианта.
// Пояснение - Строка - позволяет переопределить текст пояснения варианта для пользователя.
//
// ВариантДополнительно - Структура - настройки дополнительного варианта по сценарию узла.
// Содержит поля:
// Использование - Булево - флаг разрешения использования варианта. По умолчанию Ложь.
// Порядок - Число - порядок размещения варианта на форме помощника, сверху вниз. По умолчанию 4.
// Заголовок - Строка - название варианта для отображения на форме.
// ИмяФормыОтбора - Cтрока - Имя формы, вызываемой для редактирования настроек.
// ЗаголовокКомандыФормы - Cтрока - Заголовок для отрисовки на форме команды открытия формы настроек.
// ИспользоватьПериодОтбора - Булево - флаг того, что необходим общий отбор по периоду. По умолчанию Ложь.
// ПериодОтбора - СтандартныйПериод - значение периода общего отбора, предлагаемого по умолчанию.
//
// Отбор - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла.
// Содержит колонки:
// ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор которого описывает строка.
// Например "Документ._ДемоПоступлениеТоваров". Можно использовать специальные
// значения "ВсеДокументы" и "ВсеСправочники" для отбора соответственно всех
// документов и всех справочников, регистрирующихся на узле Получатель.
// ВыборПериода - Булево - флаг того, что данная строка описывает отбор с общим периодом.
// Период - СтандартныйПериод - значение периода общего отбора для метаданных строки, предлагаемого по умолчанию.
// Отбор - ОтборКомпоновкиДанных - отбор по умолчанию. Поля отбора формируются в соответствии с общим правилами
// формирования полей компоновки. Например, для указания отбора по реквизиту
// документа "Организация", необходимо использовать поле "Ссылка.Организация"
//
Процедура НастроитьИнтерактивнуюВыгрузку(Получатель, Параметры) Экспорт
КонецПроцедуры
// Возвращает представление отбора для варианта дополнения выгрузки по сценарию узла.
// См. описание "ВариантДополнительно" в процедуре "НастроитьИнтерактивнуюВыгрузку"
//
// Параметры:
// Получатель - ПланОбменаСсылка - Узел, для которого определяется представление отбора
// Параметры - Структура - Характеристики отбора. Содержит поля:
// ИспользоватьПериодОтбора - Булево - флаг того, что необходимо использовать общий отбор по периоду.
// ПериодОтбора - СтандартныйПериод - значение периода общего отбора.
// Отбор - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла.
// Содержит колонки:
// ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор которого описывает строка.
// Например "Документ._ДемоПоступлениеТоваров". Могут быть использованы специальные
// значения "ВсеДокументы" и "ВсеСправочники" для отбора соответственно всех
// документов и всех справочников, регистрирующихся на узле Получатель.
// ВыборПериода - Булево - флаг того, что данная строка описывает отбор с общим периодом.
// Период - СтандартныйПериод - значение периода общего отбора для метаданных строки.
// Отбор - ОтборКомпоновкиДанных - поля отбора. Поля отбора формируются в соответствии с общим правилами
// формирования полей компоновки. Например, для указания отбора по реквизиту
// документа "Организация", будет использовано поле "Ссылка.Организация"
//
// Возвращаемое значение:
// Строка - описание отбора
//
Функция ПредставлениеОтбораИнтерактивнойВыгрузки(Получатель, Параметры) Экспорт
Возврат ""
КонецФункции
#КонецЕсли
В плане обмена указываем состав и в макеты вставляем свои ПКО.
<ПравилаОбмена>
<ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП20">2.01</ВерсияФормата>
<Ид>4467c1a6-ec20-4601-b40b-527728e7329b </Ид>
<Наименование>УПП --> ERP</Наименование>
<ДатаВремяСоздания>2021-07-01T19:07:21</ДатаВремяСоздания>
<Источник ВерсияПлатформы="8.0" ВерсияКонфигурации="1.3.161.2" СинонимКонфигурации="Управление производственным предприятием, редакция 1.3">УправлениеПроизводственнымПредприятием</Источник>
<Приемник ВерсияПлатформы="8.0" ВерсияКонфигурации="2.5.6.124" СинонимКонфигурации="1С:ERP Управление предприятием 2">УправлениеПредприятием</Приемник>
<Параметры/>
<Обработки/>
<ПравилаКонвертацииОбъектов>
<Группа>
<Код>Справочники</Код>
<Наименование>Справочники </Наименование>
<Порядок>50</Порядок>
<Правило>
<Код>Склады</Код>
<Наименование>Справочник: Склады (места хранения)</Наименование>
<Порядок>50</Порядок>
<СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору>
<Источник>СправочникСсылка.Склады</Источник>
<Приемник>СправочникСсылка.Склады</Приемник>
<Свойства>
<Свойство Поиск="true">
<Код>1</Код>
<Наименование>Наименование --> Наименование</Наименование>
<Порядок>50</Порядок>
<Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/>
<Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/>
</Свойство>
<Свойство Поиск="true" Обязательное="true">
<Код>4</Код>
<Наименование>ЭтоГруппа --> ЭтоГруппа</Наименование>
<Порядок>100</Порядок>
<Источник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/>
<Приемник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/>
</Свойство>
<Свойство>
<Код>2</Код>
<Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование>
<Порядок>150</Порядок>
<Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/>
<Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/>
</Свойство>
<Свойство>
<Код>3</Код>
<Наименование>Родитель --> Родитель</Наименование>
<Порядок>200</Порядок>
<Источник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Склады"/>
<Приемник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Склады"/>
</Свойство>
</Свойства>
<Значения/>
</Правило>
</Группа>
</ПравилаКонвертацииОбъектов>
<ПравилаВыгрузкиДанных>
<Группа Отключить="false">
<Код>Справочники</Код>
<Наименование>Справочники</Наименование>
<Порядок>50</Порядок>
<Правило Отключить="false">
<Код>Склады</Код>
<Наименование>Склады</Наименование>
<Порядок>50</Порядок>
<КодПравилаКонвертации>Склады </КодПравилаКонвертации>
<СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных>
<ОбъектВыборки>СправочникСсылка.Склады</ОбъектВыборки>
</Правило>
</Группа>
</ПравилаВыгрузкиДанных>
<ПравилаОчисткиДанных/>
<Алгоритмы/>
<Запросы/>
</ПравилаОбмена>
<ПравилаОбмена>
<ВерсияФормата РежимСовместимости="РежимСовместимостиСБСП20">2.01</ВерсияФормата>
<Ид>cf984fb5-c3f0-433e-9c24-9b3e7765fa49 </Ид>
<Наименование>ERP --> УПП</Наименование>
<ДатаВремяСоздания>2021-07-01T19:08:15</ДатаВремяСоздания>
<Источник ВерсияПлатформы="8.0" ВерсияКонфигурации="2.5.6.124" СинонимКонфигурации="1С:ERP Управление предприятием 2">УправлениеПредприятием</Источник>
<Приемник ВерсияПлатформы="8.0" ВерсияКонфигурации="1.3.161.2" СинонимКонфигурации="Управление производственным предприятием, редакция 1.3">УправлениеПроизводственнымПредприятием</Приемник>
<Параметры/>
<Обработки/>
<ПравилаКонвертацииОбъектов>
<Группа>
<Код>Справочники</Код>
<Наименование>Справочники </Наименование>
<Порядок>50</Порядок>
<Правило>
<Код>Склады</Код>
<Наименование>Справочник: Склады</Наименование>
<Порядок>50</Порядок>
<СинхронизироватьПоИдентификатору>true</СинхронизироватьПоИдентификатору>
<ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>true</ПродолжитьПоискПоПолямПоискаЕслиПоИдентификаторуНеНашли>
<ПриоритетОбъектовОбмена>Ниже</ПриоритетОбъектовОбмена>
<Источник>СправочникСсылка.Склады</Источник>
<Приемник>СправочникСсылка.Склады</Приемник>
<Свойства>
<Свойство Поиск="true" Обязательное="true">
<Код>4</Код>
<Наименование>ЭтоГруппа --> ЭтоГруппа</Наименование>
<Порядок>50</Порядок>
<Источник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/>
<Приемник Имя="ЭтоГруппа" Вид="Свойство" Тип="Булево"/>
</Свойство>
<Свойство Поиск="true">
<Код>1</Код>
<Наименование>Наименование --> Наименование</Наименование>
<Порядок>100</Порядок>
<Источник Имя="Наименование" Вид="Свойство" Тип="Строка"/>
<Приемник Имя="Наименование" Вид="Свойство" Тип="Строка"/>
</Свойство>
<Свойство>
<Код>2</Код>
<Наименование>ПометкаУдаления --> ПометкаУдаления</Наименование>
<Порядок>150</Порядок>
<Источник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/>
<Приемник Имя="ПометкаУдаления" Вид="Свойство" Тип="Булево"/>
</Свойство>
<Свойство>
<Код>3</Код>
<Наименование>Родитель --> Родитель</Наименование>
<Порядок>200</Порядок>
<Источник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Склады"/>
<Приемник Имя="Родитель" Вид="Свойство" Тип="СправочникСсылка.Склады"/>
</Свойство>
</Свойства>
<Значения/>
</Правило>
</Группа>
</ПравилаКонвертацииОбъектов>
<ПравилаВыгрузкиДанных>
<Группа Отключить="false">
<Код>Справочники</Код>
<Наименование>Справочники</Наименование>
<Порядок>50</Порядок>
<Правило Отключить="false">
<Код>Склады</Код>
<Наименование>Склады</Наименование>
<Порядок>50</Порядок>
<КодПравилаКонвертации>Склады </КодПравилаКонвертации>
<СпособОтбораДанных>СтандартнаяВыборка</СпособОтбораДанных>
<ОбъектВыборки>СправочникСсылка.Склады</ОбъектВыборки>
</Правило>
</Группа>
</ПравилаВыгрузкиДанных>
<ПравилаОчисткиДанных/>
<Алгоритмы/>
<Запросы/>
</ПравилаОбмена>
В процедуре ЗаписатьИнформациюОбОбменеДаннымиЧерезПланыОбмена() модуля объекта добавляем аттрибут "УдалитьРегистрациюИзменений" (у меня почему-то не было этой строчки и из-за этого на стороне ERP ничего не снималось с регистрации при поступлении ответа)
Заходим в режим 1С:Предприятие
Заключение
Теоретически, расширение может работать и на любых других конфигурациях, где есть БСП и план обмена "МиграцияПриложений".
Напутствие
Для адаптации расширения под свои нужды не забудьте свой документ/справочник/ПВХ/набор записей...:
- включить в состав расширения или заимствовать в расширение.
- добавить в состав плана обмена «МиграцияПриложений» в расширении
- добавить в составы соответствующих подписок в расширении
Тестировалась на платформе 8.3.18.1563 и конфигурации 1С:ERP Управление предприятием 2 (2.5.6.291)
Тестировалась на платформе 8.3.17.2231 и конфигурации 1С:Комплексная автоматизация 2 (2.4.13.51)
Тестировалась на платформе 8.3.18.1208 и конфигурации Управление торговлей, редакция 11 (11.4.13.99)
Тестировалась на платформе 8.3.19.1150 и конфигурации Бухгалтерия предприятия, редакция 3.0 (3.0.95.15)
Тестировалась на платформе 8.3.19.1150 и конфигурации Зарплата и управление персоналом, редакция 3.1 (3.1.18.83)
Тестировалась на платформе 8.3.18.1563 и конфигурации Розница, редакция 2.3 (2.3.9.42)
Тестировалась на платформе 8.3.22.1709 и конфигурации Управление нашей фирмой, редакция 3.0 (3.0.2.112)
Литература
Подготовить расширение мне помогли замечательные статьи:
[БСП] Обмен через Конвертацию данных 2.1
Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3
Готовое решение
Синхронизация и обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData
Правила в универсальном формате обмена для для последних версий конфигураций 1C. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.