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

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%

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

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

50722 45650 руб.

04.08.2015    165350    386    276    

370

SALE! 10%

Перенос данных 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. Не требуется синхронного обновления правил после обновления другой конфигурации, участвующей в обмене. Типовой обмен через планы обмена кнопкой Синхронизация вручную или автоматически по расписанию, или вручную обработкой.

26280 23652 руб.

12.06.2017    140322    784    295    

410

SALE! 20%

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

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

35000 28000 руб.

15.12.2021    23237    161    48    

118

Зарплата Внешние источники данных Бюджетный учет Перенос данных 1C Системный администратор Программист Платформа 1С v8.3 Сложные периодические расчеты 1С:Зарплата и кадры государственного учреждения 3 Государственные, бюджетные структуры Россия Бухгалтерский учет Бюджетный учет Платные (руб)

Обработка позволяет перенести кадровую информацию и данные по заработной плате, фактических удержаниях, НДФЛ, вычетах, страховых взносах из базы Парус 8 учреждений в конфигурацию 1С:Зарплата и кадры государственного учреждения ред. 3 (ЗГУ) и начать с ней работать с любого месяца года.

84000 руб.

19.08.2020    24523    23    1    

25

SALE! 10%

Перенос данных 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 | Сэкономьте время - используйте готовое решение для перехода! | Перенос разработан в формате КД 2 (правила конвертации данных) | Переносятся все возможные виды документов, начальных остатков и нормативно-справочная информация| Можно опционально выгружать каждую пару "номенклатура+характеристика" как отдельную номенклатуру | Есть выгрузка настроек счетов учета и зарплатных данных из ERP / КА 2 | Можно проверить на вашем сервере перед покупкой

50722 45650 руб.

15.04.2019    71651    180    149    

121

SALE! 10%

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

Можно проверить до покупки, оставьте заявку! Воспользовались более 268 компаний! Перенос данных из УТ 10.3 в УТ 11 | из УТ 10.3 в КА 2 | из УТ 10.3 в ERP. Предлагаем качественное и проверенное временем решение для перехода с УТ 10.3. Можно перенести начальные остатки, нормативно-справочную информацию и все возможные документы. При выгрузке можно установить отбор по периоду, организациям и складам. При выходе новых релизов конфигураций 1C оперативно выпускаем обновление переноса данных.

50722 45650 руб.

24.04.2015    194306    149    242    

279

SALE! 10%

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

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

50722 45650 руб.

31.10.2014    236209    99    334    

305

SALE! 10%

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

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

48278 43450 руб.

03.12.2020    36109    90    63    

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

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

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