Загрузить сообщение обмена.
Процедура ЗагрузитьСообщениеОбмена(Сообщение, Отправитель) Экспорт
Если Не ОбщегоНазначения.ПодсистемаСуществует("ТехнологияСервиса") Тогда
Возврат;
КонецЕсли;
МодульРаботаВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("РаботаВМоделиСервиса");
МодульСообщенияВМоделиСервиса = ОбщегоНазначения.ОбщийМодуль("СообщенияВМоделиСервиса");
СообщениеДляСопоставленияДанных = Ложь;
Если Сообщение.Установлено("AdditionalInfo") Тогда
ДополнительныеСвойства = СериализаторXDTO.ПрочитатьXDTO(Сообщение.AdditionalInfo);
Если ДополнительныеСвойства.Свойство("СообщениеДляСопоставленияДанных") Тогда
СообщениеДляСопоставленияДанных = ДополнительныеСвойства.СообщениеДляСопоставленияДанных;
КонецЕсли;
КонецЕсли;
Тело = Сообщение.Body;
Если Тело.Свойства().Получить("MessageForDataMatching") <> Неопределено
И Тело.Установлено("MessageForDataMatching") Тогда
СообщениеДляСопоставленияДанных = Тело.MessageForDataMatching;
КонецЕсли;
ОтветноеСообщение = Неопределено;
Попытка
Корреспондент = КорреспондентОбмена(Тело.ExchangePlan, Тело.CorrespondentCode);
// Загружаем сообщение обмена
Отказ = Ложь;
ОбменДаннымиВМоделиСервиса.ВыполнитьЗагрузкуДанных(Отказ, Корреспондент, СообщениеДляСопоставленияДанных);
Если Отказ Тогда
ВызватьИсключение СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'В процессе загрузки данных из программы ""%1"" возникли ошибки.'"),
ОбщегоНазначения.ЗначениеРеквизитаОбъекта(Корреспондент, "Наименование"));
КонецЕсли;
// Отправляем ответное сообщение об успешной операции.
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеЗагрузкаСообщенияОбменаУспешноЗавершена());
ОтветноеСообщение.Body.Zone = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone;
ОтветноеСообщение.Body.SessionId = Тело.SessionId;
Исключение
ПредставлениеОшибки = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке());
ЗаписьЖурналаРегистрации(ОбменДаннымиВМоделиСервиса.СобытиеЖурналаРегистрацииНастройкаСинхронизацииДанных(),
УровеньЖурналаРегистрации.Ошибка, , , ПредставлениеОшибки);
// Отправляем ответное сообщение об ошибке.
ОтветноеСообщение = МодульСообщенияВМоделиСервиса.НовоеСообщение(
СообщенияОбменаДаннымиКонтрольИнтерфейс.СообщениеОшибкаЗагрузкиСообщенияОбмена());
ОтветноеСообщение.Body.Zone = МодульРаботаВМоделиСервиса.ЗначениеРазделителяСеанса();
ОтветноеСообщение.Body.CorrespondentZone = Тело.CorrespondentZone;
ОтветноеСообщение.Body.SessionId = Тело.SessionId;
ОтветноеСообщение.Body.ErrorDescription = ПредставлениеОшибки;
КонецПопытки;
Если Не ОтветноеСообщение = Неопределено Тогда
НачатьТранзакцию();
Попытка
МодульСообщенияВМоделиСервиса.ОтправитьСообщение(ОтветноеСообщение, Отправитель, Истина);
ЗафиксироватьТранзакцию();
Исключение
ОтменитьТранзакцию();
ВызватьИсключение;
КонецПопытки;
МодульСообщенияВМоделиСервиса.ДоставитьБыстрыеСообщения();
КонецЕсли;
КонецПроцедуры
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ЗагрузитьСообщениеОбменаДанными (БСП)
СообщениеЗагрузитьСообщениеОбмена (БСП)
ЗагрузитьПоставляемыеПравила (БСП)
ЗагрузитьПочтовыеСообщения (БСП)
ПараметрыЗаголовкаСообщенияОбмена (БСП)
Канал FastCode 1C в Телеграм! Шаблоны кода, статьи, полезные советы, курсы по 1С (8К участников)