Универсальный обмен данными XML через подписку

1. adushkin08 27.12.18 08:50 Сейчас в теме
Товарищи!
Скажите мне, непутевому, можно ли как-либо настроить обмен по подписке на событие при проведении документа?

Дано:
- самописные правила обмена на КД 2. Работоспособность проверил типовой обработкой XML
- КА 1.1 (Источник)
- БП 3.0 (Приемник)
- Платформа 8.3.12.1440 (Серверный вариант)
- Обмен через COM стандартной обработкой УниверсальныйОбменДаннымиXML, которая запускается по подписке на событие и стартуется через
ФоновоеЗадание.Выполнить("ИмяПроцедуды")
.

Написал простую обработку с таким кодом для отладки.
Проверил - все работает.


Процедура КнопкаВыполнитьНажатие(Кнопка)
	
	ВыгрузкаВБП();	
	                        
КонецПроцедуры

Процедура ВыгрузкаВБП() 
	
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML_v3.Создать();
	ОбработкаОбмена.РежимОбмена = "Выгрузка";
	
	врФайл = ПолучитьИмяВременногоФайла("xml");
	МакетПравил = ПланыОбмена.ОбменСБухгалтерияПредприятия3.ПолучитьМакет("ПравилаВыгрузкиКА_БП");
	МакетПравил.Записать(врФайл);
	
	ОбработкаОбмена.ИмяФайлаПравилОбмена = врФайл;
	ОбработкаОбмена.ЗагружатьДанныеВРежимеОбмена = Истина;
    ОбработкаОбмена.ЗаписыватьРегистрыНаборамиЗаписей = Истина;
    ОбработкаОбмена.ЗапоминатьЗагруженныеОбъекты = Истина;
	ОбработкаОбмена.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 2;
	
	ОбработкаОбмена.ТипИнформационнойБазыДляПодключения = Ложь;
	ОбработкаОбмена.ВерсияПлатформыИнформационнойБазыДляПодключения = "V83";
	ОбработкаОбмена.ИмяИнформационнойБазыНаСервереДляПодключения = "******";
	ОбработкаОбмена.ИмяСервераИнформационнойБазыДляПодключения = "******";
	ОбработкаОбмена.ПользовательИнформационнойБазыДляПодключения = "********";
	ОбработкаОбмена.ПарольИнформационнойБазыДляПодключения = "********";
	ОбработкаОбмена.НепосредственноеЧтениеВИБПриемнике = Истина;
	
	ОбработкаОбмена.ЗагрузитьПравилаОбмена();
	
	УстановитьУзелОбменаУСтрокДерева(ОбработкаОбмена.ТаблицаПравилВыгрузки.Строки, ПланыОбмена.ОбменСБухгалтерияПредприятия3.НайтиПоКоду("БП"));
	
	ОбработкаОбмена.ВыполнитьВыгрузку();
	
КонецПроцедуры
 

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

Показать


Но, если я делаю вот так в общем модуле "МодульРегламентныхЗаданий" (Модуль не глобальный.)
То даже не метод
ОбменятьсяДаннымиСБП()
не стартует

////////////////////////////////////////////////////////////­//////////////////////
// ОБМЕН С БУХГАЛТЕРИЕЙ 3.0

Процедура ОбменятьсяДаннымиСБП() Экспорт
	
	ОбработкаОбмена = Обработки.УниверсальныйОбменДаннымиXML_v3.Создать();
	ОбработкаОбмена.РежимОбмена = "Выгрузка";
	
	врФайл = ПолучитьИмяВременногоФайла("xml");
	МакетПравил = ПланыОбмена.ОбменСБухгалтерияПредприятия3.ПолучитьМакет("ПравилаВыгрузкиКА_БП");
	МакетПравил.Записать(врФайл);
	
	ОбработкаОбмена.ДатаНачала = Константы.ДатаЗапретаИзмененийДокументов.Получить();
	ОбработкаОбмена.ДатаОкончания = ТекущаяДата();
	
	ОбработкаОбмена.ИмяФайлаПравилОбмена = врФайл;
	ОбработкаОбмена.ЗагружатьДанныеВРежимеОбмена = Истина;
    ОбработкаОбмена.ЗаписыватьРегистрыНаборамиЗаписей = Истина;
    ОбработкаОбмена.ЗапоминатьЗагруженныеОбъекты = Истина;
	ОбработкаОбмена.ТипУдаленияРегистрацииИзмененийДляУзловОбменаПослеВыгрузки = 2;
	
	ОбработкаОбмена.ТипИнформационнойБазыДляПодключения = Ложь;
	ОбработкаОбмена.ВерсияПлатформыИнформационнойБазыДляПодключения = "V83";
	ОбработкаОбмена.ИмяИнформационнойБазыНаСервереДляПодключения = "db_buh_v3";
	ОбработкаОбмена.ИмяСервераИнформационнойБазыДляПодключения = "s1c2k16";
	ОбработкаОбмена.ПользовательИнформационнойБазыДляПодключения = "АдушкинВ";
	ОбработкаОбмена.ПарольИнформационнойБазыДляПодключения = "135246";
	ОбработкаОбмена.НепосредственноеЧтениеВИБПриемнике = Истина;
	
	ОбработкаОбмена.ЗагрузитьПравилаОбмена();
	
	УстановитьУзелОбменаУСтрокДерева(ОбработкаОбмена.ТаблицаПравилВыгрузки.Строки, ПланыОбмена.ОбменСБухгалтерияПредприятия3.НайтиПоКоду("БП"));
	
	ОбработкаОбмена.ВыполнитьВыгрузку();
	
КонецПроцедуры

// Процедура УстановитьУзелОбменаУСтрокДерева
// Описание: Установка узла выгрузки для объектов
//
Процедура УстановитьУзелОбменаУСтрокДерева(Дерево, УзелОбмена)
	
	Для Каждого Строка Из Дерево Цикл
		
		Если Строка.ЭтоГруппа Тогда
			
			УстановитьУзелОбменаУСтрокДерева(Строка.Строки, УзелОбмена);
			
		Иначе
			
			Строка.СсылкаНаУзелОбмена = УзелОбмена;
			
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

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

Показать
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. lefthander 27.12.18 09:10 Сейчас в теме
(1)Что будет происходить если... документ провели, отменили проведение и снова провели, закрыли, открыли и и закрывая снова перепровели. :) (из наблюдений за работой различных сотрудников с 1С)
ЗЫ это к целесообразности привязки выгрузки к событию документа.
4. adushkin08 27.12.18 09:41 Сейчас в теме
(3) да, были такие мысли) но документов не так много, и правки очень редкие.
2. Dmitrij-2 48 27.12.18 09:07 Сейчас в теме
Не будет проще добавить новое регламентное задание, которое будет выполнять обмен с определенной периодичностью?
5. adushkin08 27.12.18 09:43 Сейчас в теме
(2) Да, но типовыми средствами почему то не отрабатывает. Почему? Не понимаю. Идет подключение к базе по COM, и на этом собственное все. Поэтому уже думаю сделать регламентное средствами винды и стартовать каждые минуты три..
7. Dmitrij-2 48 27.12.18 13:17 Сейчас в теме
(5) может у пользователя, под которым выполняется подключение через com прав доступа не хватает?
8. adushkin08 27.12.18 14:41 Сейчас в теме
(7) полные права.
логи по регламентному пустые.
журнал регистрации говорит, что все хорошо
6. adushkin08 27.12.18 09:48 Сейчас в теме
(2) и кстати, проблема еще в том, что регламентное, почему-то, не стартует обработку.
9. AntonSm 30 29.12.18 21:45 Сейчас в теме
Есть подозрение, что на каких-то модулях не хватает галок, типа, сервер или вызов сервера.
10. AntonSm 30 29.12.18 21:46 Сейчас в теме
(9) т.е. задание просто не видит процедуру.
Или лишнее &НаСервере где-то притулилось, например.
11. adushkin08 09.01.19 11:54 Сейчас в теме
(10) Тоже были подозрения на галки в модуле и на разграничение по серверу-клиенту.
к сожалению не помогло.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот