Разработка функционала обмена с несколькими внешними точками

21.09.20

Интеграция - Обмен между базами 1C

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

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

После выполнения этого задания появилось следующее – а теперь организовать выгрузку данных, относящихся к другому складу на иной FTP-сервер.

Поделюсь некоторыми идеями в решении данной задачи.

Так как требовалось фиксировать изменения данных, попадающих в выгрузку, то использование планов обмена (конечно, в режиме «не РИБ») показалось очевидным. Благо, что, начиная с релиза 8.3.13, платформа позволяет создавать новые планы обмена в расширениях. Хочется отметить, что с планы обмена в расширениях вполне работоспособны и их использование в разработке практически ничем не отличается от планов обмена стандартной конфигурации. Наверное, единственным отличием является определение состава плана обмена. В состав планов обмена расширения могут включаться только объекты, созданные и заимствованные в текущем расширении.

 

 

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

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

 

 

В пользовательском режиме следует создать узлы обмена для каждой из точек обмена. Если подсистемы в расширении не настраивались, то настроить ПО можно через «Все функции» («Все действия» в ранних релизах платформы).

 

 

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

 

 

Правильная настройка узлов представлена на рисунке:

 

 

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

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

В модуле объекта разместить (скопировать из общего модуля, взять из шаблона) следующие функции и процедуры:

 

//ПОДГОТОВКА РЕГИСТРАЦИИ ОБРАБОТКИ

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = Новый Структура;
	ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); //Варианты: "ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов" 
	
	
	ПараметрыРегистрации.Вставить("Наименование", "Выгрузка на FTP");
	ПараметрыРегистрации.Вставить("Версия", "1.0"); //"1.0"
	ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); //Варианты: Истина, Ложь
	ПараметрыРегистрации.Вставить("Информация", "");
	ПараметрыРегистрации.Вставить("ВерсияБСП", "2.2.5.29");// не ниже какой версии БСП подерживается обработка
	
	ТаблицаКоманд = ПолучитьТаблицуКоманд();
	
	
	ДобавитьКоманду(ТаблицаКоманд,
	"Обмен на FTP тест",
	"ОбменFTP1",
	"ВызовСерверногоМетода",  //Использование.  Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"   
	Ложь,//Показывать оповещение. Варианты Истина, Ложь 
	"");//Модификатор 
	
	
	
	ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Функция ПолучитьТаблицуКоманд()
	
	Команды = Новый ТаблицаЗначений;
	Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	
	Возврат Команды;
	
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Идентификатор = Идентификатор;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;
	
КонецПроцедуры

 

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

Основные моменты, требующие изменения общего шаблона:

ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка")

Указываем, что создается именно дополнительная обработка.

ДобавитьКоманду(ТаблицаКоманд,

                "Обмен на FTP тест",

                "ОбменFTP1",

                "ВызовСерверногоМетода", 

                Ложь

                "");

Здесь важно указать название команды (будущего регламентного задания), ее идентификатор и признак ВызовСерверногоМетода – указывающего на то, что код функционала обмена будет размещен в самом модуле обмена и исполняться на сервере.

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

Код исполнения размещается в процедуре

Процедура  ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

 

Допустим, для обмена была разработана и размещена в модуле процедура ВыполнитьОбмен, входным параметром которой является ссылка на узел обмена.

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

Процедура  ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

                Выборка = ПланыОбмена. Тест_ПланОбмена1.Выбрать();

                Пока Выборка.Следующий() Цикл

                               Если Выборка.Ссылка = ПланыОбмена. Тест_ПланОбмена1.ЭтотУзел() Тогда
      
                                      Продолжить;

                               КонецЕсли;

                               ВыполнитьОбмен(Выборка.Ссылка);                           

                КонецЦикла;          

КонецПроцедуры

 

Обработка готова к подключению.

Подключение осуществляется в пользовательском режиме. Раздел НСИ и администрирование\ Печатные формы, отчеты и обработки. Гиперссылка дополнительные отчеты и обработки доступна только при включенной соответствующей функциональной опции.

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

 

 

Приведенный выше пример позволяет организовать регламентный или принудительный обмен одновременно со всеми узлами ПО. А как поступить, если требуется с узлами 1 и 2 обмениваться раздельно в разное время?

Самый простой способ: убрать из процедуры выборку и сократить всю процедуру ВыполнитьКоманду до одной строки

ВыполнитьОбмен(ПланыОбмена. Тест_ПланОбмена1.НайтиПоКоду("КодУзла"));

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

Очевидно, что данный подход не очень продуктивный. Можно рассмотреть более органичное решение.

Функция СведенияОВнешнейОбработке() Экспорт

   
                ПараметрыРегистрации = Новый Структура;
                ПараметрыРегистрации.Вставить("Вид", "ДополнительнаяОбработка"); //Варианты: "ДополнительнаяОбработка", "ДополнительныйОтчет", "ЗаполнениеОбъекта", "Отчет", "ПечатнаяФорма", "СозданиеСвязанныхОбъектов"
 
                ПараметрыРегистрации.Вставить("Наименование", "Выгрузка на FTP");
                ПараметрыРегистрации.Вставить("Версия", "1.0"); //"1.0"
                ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); //Варианты: Истина, Ложь
                ПараметрыРегистрации.Вставить("Информация", "");
                ПараметрыРегистрации.Вставить("ВерсияБСП", "2.2.5.29");// не ниже какой версии БСП подерживается обработка

                ТаблицаКоманд = ПолучитьТаблицуКоманд();

                Выборка = ПланыОбмена. Тест_ПланОбмена1.Выбрать();

                Пока Выборка.Следующий() Цикл
 
                               Если Выборка.Ссылка = ПланыОбмена. Тест_ПланОбмена1.ЭтотУзел() Тогда
                                             

                                               Продолжить;

 
                               КонецЕсли;

                               ДобавитьКоманду(ТаблицаКоманд,

                               "Обмен: "+Выборка.Наименование,

                               Выборка.Код,

                               "ВызовСерверногоМетода",  //Использование.  Варианты: "ОткрытиеФормы", "ВызовКлиентскогоМетода", "ВызовСерверногоМетода"  

                               Ложь,//Показывать оповещение. Варианты Истина, Ложь

                               "");//Модификатор
                          

                КонецЦикла;

  
                ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

                Возврат ПараметрыРегистрации;


КонецФункции

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

Процедура ВыполнитьКоманду(...) теперь будет выглядеть следующим образом:

Процедура  ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

                ВыполнитьОбмен(ПланыОбмена.Тест.НайтиПоКоду(ИдентификаторКоманды));               

КонецПроцедуры

 

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

 

 

При обновлении ПО – добавлении/изменении/удалении узлов ПО необходимо просто обновить обработку в справочнике.

ПланыОбмена ОбменДанными

См. также

SALE! 10%

Перенос данных из УПП 1.3 в ERP 2 / УТ 11 / КА 2. Переносятся документы, справочная информация и остатки

Обмен между базами 1C Платформа 1С v8.3 1С:Управление производственным предприятием 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос документов, начальных остатков и справочной информации из УПП 1.3 в ERP 2 | из УПП 1.3 в УТ 11 | из УПП в КА 2 | Правила конвертации (КД 2) в продаже с 2015 года, постоянно работаем над их развитием | Более 360 предприятий выполнили переход с использованием этого продукта! | Сэкономьте время - используйте готовое решение для перехода! | Позволяет перенести из УПП 1.3 в ERP / УТ 11 / КА 2 всю возможную информацию | В переносе есть фильтр по организации и множество других опциональных параметров выгрузки | Есть несколько алгоритмов выгрузки остатков на выбор

50722 45650 руб.

04.08.2015    160493    357    268    

349

SALE! 10%

[ED3] Обмен для ERP 2.5, КА 2.5, УТ 11.5 БП 3.0, Розница, УНФ и других с EnterpriseData (универсальный формат обмена), правила обмена

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

25080 руб.

12.06.2017    135782    731    291    

393

SALE! 10%

Перенос данных из ERP 2 / КА 2 / УТ 11 в БП 3.0. Переносятся документы, начальные остатки и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

Перенос данных из ERP в БП 3 | из КА 2 в БП 3 | из УТ 11 в БП 3 | из ЕРП в БП 3 | В продаже с 2019г. | Воспользовались более 176 предприятий! | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой, обращайтесь!

38500 34650 руб.

15.04.2019    69006    181    139    

111

SALE! 10%

Перенос данных из БП 3.0 в УТ 11 / КА 2 / ERP 2. Переносятся начальные остатки, документы и справочники

Обмен между базами 1C Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Россия Платные (руб)

В продаже с 2014г. | Воспользовались более 122 предприятий! | Перенос данных из БП 3.0 в УТ 11 | из БП 3.0 в КА 2 | из БП 3.0 в ERP | Сэкономьте свое время - используйте готовое решение для перехода! | Постоянно работаем над развитием переноса данных | Обновляем на новые релизы 1С | Есть фильтр выгрузки по организациям | Переносятся начальные остатки на выбранную дату, документы за период времени и вся возможная справочная информация | Перенос сделан на технологии КД 2 (правила конвертации данных)

50722 45650 руб.

31.10.2014    232152    126    327    

297

Перенос данных из УПП 1.3 в БП 3.0. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление производственным предприятием 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из 1С:Управление производственным предприятием 1.3 в 1С:Бухгалтерия предприятия 3.0 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УПП 1.3 (1.3.226.x) и БП 3.0 (3.0.151.x). Правила подходят для версии ПРОФ и КОРП.

28000 руб.

15.12.2021    20718    136    38    

95

SALE! 10%

Перенос данных из ERP 2 / КА 2 в ЗУП 3. Переносятся остатки, документы и справочники

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Управленческий учет Платные (руб)

Перенос данных из ERP в ЗУП 3 | из КА 2 в ЗУП | Воспользовались более 79 предприятий! | Предлагаем приобрести готовые правила конвертации данных (КД 2) для переноса остатков, документов с движениями и справочной информации 3 | В продаже с 2020г. | Оперативно обновляем правила до актуальных релизов 1С | Есть перенос начальной задолженности по зарплате и начальной штатной расстановки на выбранную дату | Обороты за прошлые годы (данные для расчета среднего) переносятся свернуто в документ "Перенос данных" | Есть фильтр по организациям | Документы за текущий период переносятся сразу с движениями, поэтому не потребуется делать перерасчеты | Перенос можно проверить перед покупкой, обращайтесь!

48278 43450 руб.

03.12.2020    34541    83    58    

81

Перенос данных из УТ 10.3 в УТ 11.5. Переносятся документы (обороты за период), справочная информация и остатки

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 Оперативный учет 1С:Управление торговлей 10 1С:Управление торговлей 11 Россия Управленческий учет Платные (руб)

Перенос данных из 1С:Управление торговлей 10.3 в 1С:Управление торговлей 11.5 с помощью правил обмена. Переносятся остатки, документы (обороты за период), справочная информация. Правила проверены на конфигурациях УТ 10.3 (10.3.87.x) и УТ 11.5 (11.5.16.x).

28000 руб.

23.07.2020    46917    200    64    

162

SALE! 10%

Перенос данных из БП 3.0 в УНФ 3.0 / УНФ 1.6. Переносятся остатки, документы и справочная информация

Обмен между базами 1C Файловый обмен (TXT, XML, DBF), FTP Платформа 1С v8.3 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

В продаже с 2018г. | Воспользовались более 41 предприятия! | Правила конвертации (КД 2) для переноса данных из БП 3 в УНФ | Переносятся все виды документов, начальные остатки и вся возможная справочная информация | Есть фильтр по организациям | Оперативно обновляем на новые релизы | Оказываем техподдержку | В комплект файлов входит инструкция, авторская версия обработки "Универсальный обмен...", актуальные правила переноса данных и архив старых версий переноса | Учет в БП 3 должен быть корректным, некорректные данные не переносятся | Можно бесплатно проверить на вашем сервере до покупки!

50722 руб.

10.07.2018    67913    41    123    

46
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. Cyberhawk 135 25.09.20 20:08 Сейчас в теме
Дополнительно для хранения настроек можно создать регистра сведений, где ведущим изменением установить созданный ПО
В каком сценарии это может потребоваться делать (вместо использования реквизитов и табличных частей)?
2. Sergey1CSpb 216 25.09.20 22:28 Сейчас в теме
Ну, так как я написал "дополнительно", то именно так делать не обязательно, но раз написал, попробую защититься.)

С ходу придумал пример, где может быть применен периодический регистр сведений. Возможно, к примеру, со следующего понедельника изменяется пароль доступа к удаленному сервису. Дабы не подключаться в ночь с воскресенья на понедельник для изменения настроек, очень удобно прописать новый пароль за несколько дней с указанием новой даты применения.
Кроме того, параметров настроек может быть очень много. И здесь 2 варианта отображения реквизитов Плана. 1-й не создавать форму элемента - тогда значения реквизитов будут некрасиво выводиться один под другим и скоро включится скроллинг. 2- й вариант - аккуратно разместить формы на закладках. Но, если появится новый параметр, придется дорабатывать форму.
А используя РС с ведущим измерением безо всяких доработок организует отдельную закладку где в списке видны все настройки и их значения.
И с точки зрения архитектуры, в моем понимании РС с двумя измерениями и 50 записями лучше нежели справочник с 25 реквизитами.

Если говорить о моей задаче, то сначала речь шла об обмене с одним узлом. И нужно было где-то хранить настройки. Константы в расширениях можно добавлять с 15-го релиза. Вот и выбрал такое решение. Даже создал ПВХ и ссылку на него сделал измерением. Значение характеристики - ресурсом. А когда пришло время расширения на 2-й узел, то моментально родилась идея добавить ссылку на план обмена.
Оставьте свое сообщение