Имя: Пароль:
1C
1С v8
План обмена БП - ERP
0 Reclaim
 
10.10.16
08:32
Здравствуйте! Столкнулся с такой проблемой, что данные не считываются и соответственно не загружаются из XML файла обмена.

В БП создан рукописный план обмена, заданы узлы и настройки обмена. Выгрузка происходит нормально.

На стороне ERP создал план обмена с идентичным наименованием, заданы узлы с соответствием кодов узлов БП.

"Синхронизация" проходит успешно, но при этом в загрузке объекты не обрабатываются (пишет выполнено, обработано 0). Направьте в какую сторону стоит смотреть

В модуле менеджера разместил такой код:


#Если Сервер Или ТолстыйКлиентОбычноеПриложение Или ВнешнееСоединение Тогда
Функция ИспользуемыеТранспортыСообщенийОбмена() Экспорт
        
    Результат = Новый Массив;
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FILE);
    Результат.Добавить(Перечисления.ВидыТранспортаСообщенийОбмена.FTP);
    Возврат Результат;
        
КонецФункции

Функция ОбщиеДанныеУзлов(ВерсияКорреспондента, ИмяФормы) Экспорт
    
    Возврат "";
    
КонецФункции

Процедура ОпределитьНастройки(Настройки, ИдентификаторНастройки = "") Экспорт
    
    Настройки.ПредупреждатьОНесоответствииВерсийПравилОбмена = Ложь;
    Настройки.ЗаголовокПомощникаСозданияОбмена = НСтр("ru='Настройка синхронизации с 1С:Бухгалтерия для Беларуси'");
    Настройки.ЗаголовокУзлаПланаОбмена = НСтр("ru='Синхронизация с 1С:Бухгалтерия для Беларуси'");
    
КонецПроцедуры
    
Процедура ПриВыгрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт
        
КонецПроцедуры
    
Процедура ПриЗагрузке(НастройкиТранспорта, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов) Экспорт
        
КонецПроцедуры
#КонецЕсли


В общем модуле "ОбменДаннымиПереопределяемый":


Процедура ПриВыгрузкеДанных(СтандартнаяОбработка,
                                Получатель,
                                ИмяФайлаСообщения,
                                ДанныеСообщения,
                                КоличествоЭлементовВТранзакции,
                                ИмяСобытияЖурналаРегистрации,
                                КоличествоОтправленныхОбъектов) Экспорт
                                
    Если ТипЗнч(Получатель) = Тип("ПланОбменаСсылка.НЗ_ОбменЕРП") Тогда
        ПриВыгрузке(СтандартнаяОбработка, Получатель, ИмяФайлаСообщения, ДанныеСообщения,
        КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов);
    КонецЕсли;
                                
КонецПроцедуры

Процедура ПриЗагрузкеДанных(СтандартнаяОбработка,
                                Отправитель,
                                ИмяФайлаСообщения,
                                ДанныеСообщения,
                                КоличествоЭлементовВТранзакции,
                                ИмяСобытияЖурналаРегистрации,
                                КоличествоПолученныхОбъектов) Экспорт
                                
    Если ТипЗнч(Отправитель) = Тип("ПланОбменаСсылка.НЗ_ОбменЕРП") Тогда
        ПриЗагрузке(СтандартнаяОбработка, Отправитель, ИмяФайлаСообщения, ДанныеСообщения,
        КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоПолученныхОбъектов);
    КонецЕсли;
    
КонецПроцедуры

Процедура ПриВыгрузке(СтандартнаяОбработка, Получатель, ИмяФайлаСообщения, ДанныеСообщения,
    КоличествоЭлементовВТранзакции, ИмяСобытияЖурналаРегистрации, КоличествоОтправленныхОбъектов) Экспорт

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

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

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

Функция НастройкиТранспортаУзла(Узел, ВыполняемоеДействие)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
    |    СценарииОбменовДаннымиНастройкиОбмена.ВидТранспортаОбмена
    |ИЗ
    |    Справочник.СценарииОбменовДанными.НастройкиОбмена КАК СценарииОбменовДаннымиНастройкиОбмена
    |ГДЕ
    |    СценарииОбменовДаннымиНастройкиОбмена.УзелИнформационнойБазы = &УзелИнформационнойБазы
    |    И СценарииОбменовДаннымиНастройкиОбмена.ВыполняемоеДействие = &ВыполняемоеДействие";
    Запрос.УстановитьПараметр("УзелИнформационнойБазы", Узел);
    Запрос.УстановитьПараметр("ВыполняемоеДействие", ВыполняемоеДействие);
    Выборка = Запрос.Выполнить().Выбрать();
    Если Выборка.Количество() > 1 Тогда
        ВызватьИсключение "Для узлов данного плана обмена нельзя задавать больше чем по одному сценарию обмена!!!";
    ИначеЕсли Выборка.Количество() = 0 Тогда
        ВызватьИсключение "Не найден сценарий обмена для данного узла обмена";
    КонецЕсли;
    Выборка.Следующий();
    НастройкиТранспорта = РегистрыСведений.НастройкиТранспортаОбмена.НастройкиТранспорта(Узел, Выборка.ВидТранспортаОбмена);
    
    Возврат НастройкиТранспорта;
    
КонецФункции
1 zak555
 
10.10.16
08:37
Штаная работает
2 Reclaim
 
10.10.16
09:07
(1) Если убрать сценарий обмена для узла, то вылетает:
"ВызватьИсключение "Не найден сценарий обмена для данного узла обмена";", т.е. рукописный код загрузки/выгрузки отрабатывает, но при этом ничего не происходит...