Простой пример разработки регулярного обмена с использованием БСП на примере ERP 2.4 и УПП 1.3
Интеграция - Перенос данных 1C
В статье будет рассмотрена доработка и настройка на примере конфигураций ERP (2.4.12.109) БСП (3.1.2.500) и УПП (1.3.72.2) БСП (1.2.4.1), платформа 8.3.16.1148, думаю что решение может быть использовано на любых конфигурациях с использованием БСП от 3.1.2.500. Основная цель показать как можно быстро разработать собственный регулярный обмен на современных конфигурациях. В моем случае была задача разработать односторонний обмен справочниками из ERP в УПП.
Разработка на стороне ERP. Добавляем новый план обмена, определяем для него необходимые права доступа, определяем его состав, обязательно включаем в состав:
Регистры сведений:
СоответствияОбъектовИнформационныхБаз
включаем в общие команды:

Добавляем созданный план обмена в процедуру "ПолучитьПланыОбмена" общего модуля "ОбменДаннымиПереопределяемый" таким образом:
Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт
//++ НЕ ГОСИС
ОбменДаннымиЛокализация.ПолучитьПланыОбмена(ПланыОбменаПодсистемы);
//-- НЕ ГОСИС
// Доработка +
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.Доработка_НовыйПланОбмена);
// Доработка -
КонецПроцедуры
Процедура ПриПолученииНастроек(НастройкиПланаОбмена) Экспорт
КонецПроцедуры
Добавляем макеты к новому плану обмена "ПравилаОбмена", "ПравилаОбменаКорреспондента" тип текстовый документ, туда в дальнейшем вставим текст правил обмена, если правила будут подгружаться из файла то можно не заполнять макеты.
Разработка на стороне УПП. Добавляем новый план обмена (с таким же именем что в источнике), определяем для него необходимые права доступа, для старых версий БСП нужно создать управляемую форму. Определяем его состав, обязательно включаем в состав:
Регистры сведений:
СоответствияОбъектовИнформационныхБаз
включаем в общие команды:

Добавляем созданный план обмена в процедуру "ПолучитьПланыОбмена" общего модуля "ОбменДаннымиПереопределяемый" таким образом:
Процедура ПолучитьПланыОбмена(ПланыОбменаПодсистемы) Экспорт
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменРозницаУправлениеПредприятием);
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменУправлениеПроизводственнымПредприятиемДокументооборот);
//ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.ОбменУправлениеПроизводственнымПредприятиемДокументооборот20);
// Доработка +
ПланыОбменаПодсистемы.Добавить(Метаданные.ПланыОбмена.Доработка_НовыйПланОбмена);
// Доработка -
КонецПроцедуры
#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
////////////////////////////////////////////////////////////////////////////////
// ПРОГРАММНЫЙ ИНТЕРФЕЙС
// Возвращает имя файла настроек по умолчанию;
// В этот файл будут выгружены настройки обмена для приемника;
// Это значение должно быть одинаковым в плане обмена источника и приемника.
//
// Параметры:
// Нет.
//
// Возвращаемое значение:
// Строка, 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трока - Заголовок для отрисовки на форме команды открытия формы настроек.
// ИспользоватьПериодОтбора - Булево - флаг того, что необходим общий отбор по периоду. По умолчанию Ложь.
// ПериодОтбора - СтандартныйПериод - значение периода общего отбора, предлагаемого по умолчанию.
//
// Отбор - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла.
// Содержит колонки:
// ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор которого описывает строка.
// Например "Документ._ДемоПоступлениеТоваров". Можно использовать специальные
// значения "ВсеДокументы" и "ВсеСправочники" для отбора соответственно всех
// документов и всех справочников, регистрирующихся на узле Получатель.
// ВыборПериода - Булево - флаг того, что данная строка описывает отбор с общим периодом.
// Период - СтандартныйПериод - значение периода общего отбора для метаданных строки, предлагаемого по умолчанию.
// Отбор - ОтборКомпоновкиДанных - отбор по умолчанию. Поля отбора формируются в соответствии с общим правилами
// формирования полей компоновки. Например, для указания отбора по реквизиту
// документа "Организация", необходимо использовать поле "Ссылка.Организация"
//
Процедура НастроитьИнтерактивнуюВыгрузку(Получатель, Параметры) Экспорт
КонецПроцедуры
// Возвращает представление отбора для варианта дополнения выгрузки по сценарию узла.
// См. описание "ВариантДополнительно" в процедуре "НастроитьИнтерактивнуюВыгрузку"
//
// Параметры:
// Получатель - ПланОбменаСсылка - Узел, для которого определяется представление отбора
// Параметры - Структура - Характеристики отбора. Содержит поля:
// ИспользоватьПериодОтбора - Булево - флаг того, что необходимо использовать общий отбор по периоду.
// ПериодОтбора - СтандартныйПериод - значение периода общего отбора.
// Отбор - ТаблицаЗначений - содержит строки с описанием подробных отборов по сценарию узла.
// Содержит колонки:
// ПолноеИмяМетаданных - Строка - полное имя метаданных регистрируемого объекта, отбор которого описывает строка.
// Например "Документ._ДемоПоступлениеТоваров". Могут быть использованы специальные
// значения "ВсеДокументы" и "ВсеСправочники" для отбора соответственно всех
// документов и всех справочников, регистрирующихся на узле Получатель.
// ВыборПериода - Булево - флаг того, что данная строка описывает отбор с общим периодом.
// Период - СтандартныйПериод - значение периода общего отбора для метаданных строки.
// Отбор - ОтборКомпоновкиДанных - поля отбора. Поля отбора формируются в соответствии с общим правилами
// формирования полей компоновки. Например, для указания отбора по реквизиту
// документа "Организация", будет использовано поле "Ссылка.Организация"
//
// Возвращаемое значение:
// Строка - описание отбора
//
Функция ПредставлениеОтбораИнтерактивнойВыгрузки(Получатель, Параметры) Экспорт
Возврат ""
КонецФункции
#КонецЕсли
Перем мМонопольныйРежимПередЗаписью;
Перем мЭтоНовыйЭлемент;
Функция СообщитьИнформациюПользователюПослеСозданияНовогоУзла() Экспорт
НужноПерезапуститьВсеПодключенияКИБ = Ложь;
Если мЭтоНовыйЭлемент
И НЕ ПараметрыСеанса.ИспользованиеРИБ
И НЕ мМонопольныйРежимПередЗаписью Тогда
НужноПерезапуститьВсеПодключенияКИБ = Истина;
КонецЕсли;
Если НужноПерезапуститьВсеПодключенияКИБ Тогда
Если мМонопольныйРежимПередЗаписью Тогда
ПолныеПрава.ОпределитьФактИспользованияРИБ();
Возврат "";
Иначе
Возврат "Для корректной работы механизма обмена данными необходимо завершить работу всех пользователей и перезапустить текущий сеанс работы 1С:Предприятия.";
КонецЕсли;
Иначе
Если мЭтоНовыйЭлемент Тогда
ПолныеПрава.ОпределитьФактИспользованияРИБ();
КонецЕсли;
Возврат "";
КонецЕсли;
КонецФункции
Процедура ПередЗаписью(Отказ)
мЭтоНовыйЭлемент = ЭтоНовый();
мМонопольныйРежимПередЗаписью = ОбщегоНазначения.ОпределитьТекущийРежимРаботыМонопольный();
КонецПроцедуры
Процедура ПриЗаписи(Отказ)
СтрокаСообщенияПользователю = СообщитьИнформациюПользователюПослеСозданияНовогоУзла();
#Если Клиент Тогда
Сообщить(СтрокаСообщенияПользователю);
#КонецЕсли
КонецПроцедуры
Процедура ОпределитьТипОтправкиДанных(ЭлементДанных, ОтправкаЭлемента) Экспорт
КонецПроцедуры
Функция ВыгрузитьИзмененияДанныхДляУзла(УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML) Экспорт
Возврат ПроцедурыОбменаДанными.ВыгрузитьИзмененияДляУзлаВФайлОбмена(УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML);
КонецФункции
Функция ЗагрузитьИзмененияДанныхДляУзла (УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML) Экспорт
Возврат ПроцедурыОбменаДанными.ЗагрузитьИзмененияДляУзлаИзФайлаОбмена(УзелОбмена,КоличествоЭлементовВТранзакции, ЗаписьXML);
КонецФункции
Процедура ПриОтправкеДанныхГлавному(ЭлементДанных, ОтправкаЭлемента)
//Если ТипЗнч(ЭлементДанных) = мТипСправочникРегОтчеты Тогда
//
// ОтправкаЭлемента = ОтправкаЭлементаДанных.Игнорировать;
//
//КонецЕсли;
КонецПроцедуры
Добавляем макеты к новому плану обмена "ПравилаОбмена", "ПравилаОбменаКорреспондента" тип текстовый документ, туда в дальнейшем вставим текст правил обмена, если правила будут подгружаться из файла то можно не заполнять макеты.
Добавляем реквизит в план обмена даже если он не нужен, например "РежимВыгрузкиПриНеобходимости", тип "ПеречислениеСсылка.РежимыВыгрузкиОбъектовОбмена", это необходимо для того чтобы при открытии настроек обмена через меню "Сервис - Обмен данными с продуктами на платформе 1С:Предприятие 8.2 - Обмены данными" не возникала такая ошибка:

Далее пишем правила обмена с использованием КД 2.1 из источника в приемник и обратно из приемника в источник, если из приемника ничего не должно выгружаться то достаточно написать правила для справочника например "Валюты" поля поиска "Код" без поиска по внутреннему идентификатору.
Сохраняем готовые правила обмена следующим образом (пример):
1) Создаем папки: "Правила обмена данными ERP УПП", "Правила обмена данными УПП ERP".
2) В папку "Правила обмена данными ERP УПП" сохраняем правила обмена из ERP в УПП с названием "ExchangeRules.xml", а правила из УПП ERP с названием "CorrespondentExchangeRules.xml", аналогично проделываем и для папки "Правила обмена данными УПП ERP", только уже правила УПП ERP будут называться "ExchangeRules.xml", а ERP УПП "CorrespondentExchangeRules.xml"
3) Запаковываем при помощи zip папки: "Правила обмена данными ERP УПП", "Правила обмена данными УПП ERP".
На этом разработка закончилась, переходим к настройкам.
Настройка обмена.
1. Настройка на стороне ERP.
Включаем константы:
Использовать синхронизацию данных
Использовать синхронизацию данных в локальном режиме
Открываем новый план обмена через меню "Все функции - Новый план обмена". Заполняем предопределенный узел (код, наименование, например ERP), добавляем новый узел с которым будем обмениваться например "УПП". Загружаем правила обмена (можно использовать типовые, но для общего понимания опишу):


Важно! Через меню все функции идем в регистр сведений (если нет записи то добавляем), устанавливаем признак "Настройка завершена" по узлу приемнику:


Либо 2-й вариант создать форму узла плана обмена и прописать в модуле формы код:
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ОбменДаннымиСервер.ФормаУзлаПриЗаписиНаСервере(ТекущийОбъект, Отказ);
КонецПроцедуры
Настройка автоматического обмена для управляемых форм. Открываем карточку узла приемника по кнопке изменить (F2), выбираем пункт меню "Сценарии синхронизации":

2. Настройки обмена на стороне УПП.
Включаем константы:
Использовать синхронизацию данных
Использовать синхронизацию данных в локальном режиме
Через меню «Операции – Планы обмена– Новый план обмена», добавляем новый узел с которым будет идти обмен (например ERP) и корректно переименуем предопределенный (например УПП). Проведем 2-е настройки:



Важно! Последним ключевым моментом в настройке будет запись в регистр сведений «Параметры подключения», обязательно по узлу корреспондента должен стоять флаг "Использовать передачу большого объема данных".
Либо 2-й вариант переносим этот ресурс в форме записи регистра сведений (требуются доработки, но более надежный т.к. при повторной записи свойство гарантировано будет установлено):

Настройка автоматического обмена для обычных форм. Заходим в пункт меню "Сервис - Обмен данными с продуктами на платформе 1С:Предприятие 8.2 - Сценарии обменов данными":

В качестве примера показал настройки регламентных заданий как на обычных так и на управляемых формах, на практике если обмен идет через "Интернет" или "Прямое подключение" достаточно настроить их на одной стороне, с двух сторон настраиваются если обмен идет через "Локальный или сетевой каталог".
На этом все, обмен настроен, приятного пользования. Если что-то упустил прошу оставить комментарий, но у меня работал и после таких доработок.
Также предлагаю решения вашему вниманию:
Применение cтандартов и методик разработки конфигураций на практике
Шаблоны для применения cтандартов и методик разработки конфигураций 1С
Применение ChatGPT в 1С и не только
Универсальная выгрузка и загрузка зарегистрированных справочников и документов по узлу.
Вступайте в нашу телеграмм-группу Инфостарт
Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
См. также
Перенос данных 1C Разработчик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)
Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор
58000 руб.
04.08.2015 194796 479 310
Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Платные (руб)
Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена | Можно выполнить переход с УПП на БП 3 или запускать выгрузку данных за выбранный период времени | Переносятся документы, начальные остатки и вся справочная информация | Есть фильтр по организации и множество других параметров выгрузки | Поддерживается несколько сценариев работы: как первичный полный перенос, так и перенос только новых документов | Перенос данных возможен в "1С: Бухгалтерия 3.0" версии ПРОФ, КОРП или базовую | Переход с "1С: УПП1.3" / "1С:КА 1.1" на "1С:БП3.0" с помощью правил конвертации будет максимально комфортным! | Можно бесплатно проверить перенос на вашем сервере!
50050 руб.
25.02.2015 192552 383 296
SALE! 10%
Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 Россия Платные (руб)
Правила в универсальном формате обмена для ERP 2.5, КА 2.5, УТ 11.5, БП 3.0, Розница, УНФ, для последних версий конфигураций. Ссылки на другие конфигурации в описании публикации. Правила совместимы со всеми другими версиями конфигураций новыми и старыми, поддерживающими обмен и синхронизацию в формате EnterpriseData. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.
27633 руб.
12.06.2017 165031 1009 329
Перенос данных 1C Взаиморасчеты Оптовая торговля Логистика, склад и ТМЦ Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Управление торговлей 10 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Управленческий учет Платные (руб)
Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам.
50200 руб.
24.04.2015 211459 186 254
SALE! 10%
Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 Бухгалтерский учет Управленческий учет Платные (руб)
Переносите справочную информацию, остатки и документы из УПП 1.3 в ERP 2.6 и КА 2.6 с помощью готовых правил. Переносится более 60 видов документов. Простой интерфейс и понятные настройки.
42000
37800 руб.
24.06.2020 73159 108 35
SALE! 10%
Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)
Переносите справочную информацию, остатки и документы из УПП 1.3 в Бухгалтерию 3.0 с помощью готовых правил. Переносится более 50 видов документов. Простой интерфейс и понятные настройки.
42000
37800 руб.
15.12.2021 37129 268 68
Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Системный администратор Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Управление производственным предприятием Россия Платные (руб)
Регулярный обмен, выгрузка, перенос из КА 1.1, УПП 1.3, УТ 10.3 для обмена с любыми конфигурациями, поддерживающими обмен в формате EnterpriseData (КД3) - БП 3.0, ERP, КА 2, УТ 11, Розница 3, УНФ 3 и другими. Правила для старых и доработанных конфигураций не требуют синхронного обновления и совместимы с новыми и будущими конфигурациями. Обмен по расписанию, через папку, FTP, почту.
27572 руб.
18.02.2016 209271 686 559
Перенос данных 1C Файловый обмен (TXT, XML, DBF), FTP Разработчик 1С:Предприятие 8 1С:Комплексная автоматизация 1.х 1С:Управление производственным предприятием 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)
Правила переноса кадровых и расчетных данных и справочной информации из "1С:УПП1.3" или "1С:КА 1.1" в "1С:ЗУП 3.1 | Разработан в формате КД 2 (правила конвертации данных) | При выгрузке есть фильтр по организациям | Обновляется при выходе новых релизов 1С | Развитие алгоритмов | Расчетные документы переносятся в документ "Перенос данных" | Создаются документы "Начальная штатная расстановка" и "Начальная задолженность по зарплате", переносятся кадровые документы
58000 руб.
29.10.2018 64475 86 137
Надо обязательно в конфигурации создать эти макеты у плана обмена иначе будет ошибка при обмене.
Чтобы так не делать достаточно сделать форму узла и при записи указать.
&НаСервере
Процедура ПриЗаписиНаСервере(Отказ, ТекущийОбъект, ПараметрыЗаписи)
ОбменДаннымиСервер.ФормаУзлаПриЗаписиНаСервере(ТекущийОбъект, Отказ);
КонецПроцедуры
По макетам "ПравилаОбмена" нужно указать что оставляем пустыми, в дальнейшем будем использовать внешние.
Предложения по изменению форматирования для улучшения восприятия
общая структура
h2 Доработки
h3 Настройка на стороне ERP
h3 Настройки обмена на стороне УПП
h2 Создание упаковка правил
h2 Настройка обмена
h3 Настройка на стороне ERP
h3 Настройки обмена на стороне УПП
Возможно завезут формирование содержания из форматирования
2) В папку "Правила обмена данными ERP УПП"
на
2.1 В папку "Правила обмена данными ERP УПП"
2.2 В папку "Правила обмена данными УПП ERP"
Команды можно текстом, копировать для поиска читатели будут
Пример части схемы во вложении.
Настраиваю обмен по вашей статье. в УПП нет действительно общей команды "Загрузить правила конвертации объектов".
Создать собственноручно?
Хотя не так. Команда есть. Именуется "открыть..." но по факту она не появляется в плане обмена.
возможно, в своей версии прописал доступ к правилам через каталог програмно.
<ФайлОбмена ВерсияФормата="3.1" ДатаВыгрузки="2021-11-03T17:03:27" ИмяКонфигурацииИс
А в другом:
<v8msg:Header>
<v8msg:ExchangePlan
и при обмене выходит ошибка: Неправильный формат
Настраивал по инструкции, в итоге УПП выгружает XML правильно с использованием ПКО.
А вот ERP(в моем случае УХ 3.1.) после настройки и загрузки правил формирует XML для РБД, т.е. не используя ПКО.
При этом правила КД2 для плана обмена загружены в рс "Правила обмена для синхронизации" стоит переключатель в положении "Загрузить из файла на компьютере".
Перехожу в "Настройки синхронизации данных", добавляю новую синхронизацию, через каталог, затем "Настроить правила" загружаю ПКО и ПРО.
(см. схему).
<v8msg:ExchangePlan
и при обмене выходит ошибка: Неправильный формат.
В УПП настройку синхронизации обмена данными делать только в управляемых формах, такой формат и ошибка получается если делать в обычных формах.
Статья хорошая и подробная, на платформе 8.3.24.1761 получилось настроить обмен через расширение, не снимая с поддержки ЗУП, обмен ЗУП3.1->УПП1.3 (ведомости на выплату ,отражение зарплаты в бухучете,резервы на оплату труда)
"Значение контролируемого свойства ТипПараметраКоманды у объекта ОбщаяКоманда не совпадает со значением в расширяемой конфигурации"
Пробовал снять галочку проверки этого свойства, но тогда ничего не происходит, команда не добавляется в план обмена.
Если тоже самое делать в конфигурации, то всё получается.
1. Интеграция в "Моя конфигурация" обработки "Универсальный обмен данными в формате XML"
2. Загрузка с помощью этой обработки файла обмена выгруженного из УПП.
3. После загрузки увеличение номера полученного сообщения в плане обмена в "Моя конфигурация".
4. Генерация пустого файла выгрузки плана обмена из "Моя конфигурация"
5. Увеличение номера отправленного сообщения.
Но меня не покидает ощущение, что я изобретаю велосипед ...
Если говорить о ЕРП, то после подключения расширения я настраиваю следующие моменты:
1. Создаю узлы обмена
2. Создаю запись регистра "Общие настройки узлов информационных баз (Регистры сведений)"
3. Загружаю комплект правил
4. Настраиваю подключение
Это все действия, что я выполняю на стороне ЕРП.
В УПП у меня давно дописан обмен и сейчас не вспомню, что делал
И еще вопрос, а каким образом регистрируются документы к обмену(при проведении, изменении и т.д.)? Подскажите, как решали данный вопрос?
Регистрация у меня идёт только на стороне УПП
Для регистрации у меня созданы подписки на события. (Скрин 1)
В источнике указаны необходимые мне документы (Скрин 2)
И соответственно прописаны коды в модуле "ОбменДаннымиСобытияУПП" (Скрин 3)
Нужно Определяемый тип - ПланОбменаБСД добавить в расширение и добавить для него Тип МойПланОбмена.
Думаю во всех последних обновлениях будет схожее изменение
Эта форма не предназначена для непосредственного открытия.
{РегистрСведений.ПравилаДляОбменаДанными.Форма.ПравилаКонвертацииОбъектов.Форма(16)}:ВызватьИсключение НСтр("ru = 'Эта форма не предназначена для непосредственного открытия.';
{ОбщийМодуль.ОбменДаннымиКлиент.Модуль(590)}:ОткрытьФорму(ПолноеИмяФормы, ПараметрыЗаписи, ФормаВладелец);
{ОбменУПП ОбщаяКоманда.ОбУПП_ЗагрузитьПравилаКонвертацииОбъектов.МодульКоманды(23)}:ОбменДаннымиКлиент.ОткрытьФормуЗаписиРегистраСведенийПоОтбору(Отбор, ЗначенияЗаполнения, "ПравилаДляОбменаДанными", ПараметрыВыполненияКоманды.Источник, "ПравилаКонвертацииОбъектов");
Но в ЗУП, на пункте "Настроить общие параметры синхронизации" получаю странную ошибку:
Ошибка при вызове метода контекста (Прочитать)
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(15801)}:ПравилаОбмена.Прочитать();
{Обработка.КонвертацияОбъектовИнформационныхБаз.МодульОбъекта(13405)}:ЗагрузитьПравилаОбмена(Источник, "XMLФайл");
{РегистрСведений.ПравилаДляОбменаДанными.МодульМенеджера(544)}:ПравилаЗачитанные = КонвертацияОбъектовИнформационныхБаз.ПравилаОбмена(ИмяВременногоФайла);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(11463)}:РегистрыСведений.ПравилаДляОбменаДанными.ЗагрузитьПравила(Отказ, НаборЗаписей[0]);
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(11561)}:ЗагрузитьПравилаДляОбменаДанными(Отказ, ИмяПланаОбмена, Перечисления.ВидыПравилДляОбменаДанными.ПравилаКонвертацииОбъектов,
{ОбщийМодуль.ОбменДаннымиСервер.Модуль(2232)}:ВыполнитьОбновлениеВерсииТиповыхПравилДляОбменаДанными(ПравилаОбменаЗагруженныеИзФайла, ПравилаРегистрацииЗагруженныеИзФайла);
{Обработка.ПомощникСозданияОбменаДанными.МодульМенеджера(1615)}:ОбменДаннымиСервер.ВыполнитьОбновлениеПравилДляОбменаДанными();
{Обработка.ПомощникСозданияОбменаДанными.МодульМенеджера(648)}:СоздатьОбновитьУзлыПланаОбмена(НастройкиПодключения);
{Обработка.ПомощникСозданияОбменаДанными.МодульМенеджера(1019)}:ВыполнитьДействияПоНастройкеОбменаДанными(НастройкиПодключения);
{(1)}:Обработки.ПомощникСозданияОбменаДанными.СохранитьНастройкиПодключения(Параметры[0])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6471)}:Возврат Вычислить(ИмяМетода + "(" + ПараметрыСтрока + ")"); // АПК:488 Исполняемый код безопасен.
{ОбщийМодуль.ДлительныеОперации.Модуль(1826)}:Результат = ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяФункции, ПараметрыПроцедуры, Истина);
{ОбщийМодуль.ДлительныеОперации.Модуль(1685)}:ВызватьФункцию(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Ошибка разбора XML: - [1,1]
Фатальная ошибка:
Extra content at the end of the document
SystemId: file:///tmp/v8_CYevmE_68.xml
О каком XML может идти речь здесь? До XML из КД на этом этапе вообще ещё не дошли.
разобрался - пришлось сразу заполнить XML из КД в макетах.
И т.к. делаю на расширении ЗУП, то нужно ещё в расширение брать ОпределяемыйТип.ПланыОбменаБСД, Справочник.НастройкиТранспортаСообщенийОбмена и указать в типе свой план в ОпределяемыйТип.ПланыОбменаБСД.
Настраиваю по данной статье обмен между двумя УТ, начал на стороне актуальной УТ11.5.
Шел в настройках по стороне ERP, столкнулся с проблемами:
1) не могу загрузить правила обмена, при вызове команды пишет "Эта форма не предназначена для непосредственного открытия"
2) Не могу настроить транспорт сообщений, не дает ничего выбрать
Никто не сталкивался с такими проблемами?
Рейтинг: 758
Вы можете заказать платную консультацию или разработку у автора. Будет создан приватный заказ на «Бирже заказов» для автора.
№ 1316278
Создание 27.10.20 12:10
Обновление 28.02.25 19:29
Просмотры 54138
Загрузки 0
Рейтинг
176
Комментарии 74
Код открыт Да
Рубрики БСП (Библиотека стандартных подсистем) Перенос данных 1C
Кому Разработчик
Тип файла Нет файла
Платформа 1С:Предприятие 8
Конфигурация 1С:Библиотека стандартных подсистем
Операционная система Не имеет значения
Страна Россия
Отрасль Не имеет значения
Налоги Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)