#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.Свойство("АвтоТест") Тогда
Возврат;
КонецЕсли;
Если НЕ ЗначениеЗаполнено(Параметры.Сообщение) Тогда
Отказ = Истина;
Возврат;
Иначе
Сообщение = Параметры.Сообщение;
КонецЕсли;
КонтекстЭДО = ДокументооборотСКО.ПолучитьОбработкуЭДО();
ТипыДИВ = Новый Массив;
ТипыДИВ.Добавить(Перечисления.ТипыСодержимогоТранспортногоКонтейнера.ПодтверждениеДатыОтправки);
ТипыДИВ.Добавить(Перечисления.ТипыСодержимогоТранспортногоКонтейнера.ПодтверждениеДатыОтправкиПредставление);
СтрПодтверждения = КонтекстЭДО.ПолучитьВложенияТранспортногоСообщения(Сообщение, Истина, ТипыДИВ, ИмяФайлаПодтверждения);
Если СтрПодтверждения.Количество() = 0 Тогда
ТекстПредупреждения = "Подтверждение даты отправки не обнаружено среди содержимого сообщения.";
Возврат;
КонецЕсли;
СтрПодтверждение = СтрПодтверждения[0];
ФайлПодтверждения = ПолучитьИмяВременногоФайла("xml");
Попытка
СтрПодтверждение.Данные.Получить().Записать(ФайлПодтверждения);
Исключение
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка выгрузки подтверждения даты отправки во временный файл:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,,, Отказ);
Возврат;
КонецПопытки;
ОписаниеОшибки = "";
ДеревоXML = КонтекстЭДО.ЗагрузитьXMLВДеревоЗначений(ФайлПодтверждения, , ОписаниеОшибки);
ОперацииСФайламиЭДКО.УдалитьВременныйФайл(ФайлПодтверждения);
Если НЕ ЗначениеЗаполнено(ДеревоXML) Тогда
ТекстСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
НСтр("ru = 'Ошибка чтения XML из файла подтверждения даты отправки:
|%1'"), КраткоеПредставлениеОшибки(ИнформацияОбОшибке()));
ОбщегоНазначения.СообщитьПользователю(ТекстСообщения,,,, Отказ);
Возврат;
КонецЕсли;
УзелФайл = ДеревоXML.Строки.Найти("Файл", "Имя");
Если НЕ ЗначениеЗаполнено(УзелФайл) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректная структура XML подтверждения: не обнаружен узел ""Файл"".'"),,,, Отказ);
Возврат;
КонецЕсли;
УзелДокумент = УзелФайл.Строки.Найти("Документ", "Имя");
Если НЕ ЗначениеЗаполнено(УзелДокумент) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректная структура XML подтверждения: не обнаружен узел ""Документ"".'"),,,, Отказ);
Возврат;
КонецЕсли;
УзелОргПодт = УзелДокумент.Строки.Найти("ОргПодт", "Имя");
Если НЕ ЗначениеЗаполнено(УзелОргПодт) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректная структура XML подтверждения: не обнаружен узел ""ОргПодт"".'"),,,, Отказ);
Возврат;
КонецЕсли;
УзелСпецОперат = УзелОргПодт.Строки.Найти("СпецОперат", "Имя");
УзелНО = УзелОргПодт.Строки.Найти("НО", "Имя");
Если НЕ ЗначениеЗаполнено(УзелСпецОперат) И НЕ ЗначениеЗаполнено(УзелНО) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректная структура XML подтверждения: отсутствуют сведения об организации, подтвердившей дату отправки.'"),,,, Отказ);
Возврат;
ИначеЕсли ЗначениеЗаполнено(УзелСпецОперат) Тогда
УзелНаимОрг = УзелСпецОперат.Строки.Найти("НаимОрг", "Имя");
Если НЕ ЗначениеЗаполнено(УзелНаимОрг) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректная структура XML подтверждения: отсутствуют сведения об организации, подтвердившей дату отправки.'"),,,, Отказ);
Возврат;
КонецЕсли;
ОрганизацияСтр = СокрЛП(УзелНаимОрг.Значение);
ИначеЕсли ЗначениеЗаполнено(УзелНО) Тогда
УзелКодНО = УзелНО.Строки.Найти("КодНО", "Имя");
УзелНаимНО = УзелНО.Строки.Найти("НаимНО", "Имя");
Если ЗначениеЗаполнено(УзелКодНО) И ЗначениеЗаполнено(УзелКодНО.Значение) Тогда
ОрганизацияСтр = СокрЛП(УзелКодНО.Значение);
Если ЗначениеЗаполнено(УзелНаимНО) И ЗначениеЗаполнено(УзелНаимНО.Значение) Тогда
ОрганизацияСтр = ОрганизацияСтр + " (" + СокрЛП(УзелНаимНО.Значение) + ")";
КонецЕсли;
КонецЕсли;
КонецЕсли;
УзелСведПодтв = УзелДокумент.Строки.Найти("СведПодтв", "Имя");
Если НЕ ЗначениеЗаполнено(УзелСведПодтв) Тогда
ОбщегоНазначения.СообщитьПользователю(
НСтр("ru = 'Некорректная структура XML подтверждения: отсутствуют сведения подтверждения.'"),,,, Отказ);
Возврат;
КонецЕсли;
УзлыИмяПостФайла = УзелСведПодтв.Строки.НайтиСтроки(Новый Структура("Имя", "ИмяПостФайла"), Истина);
Если ЗначениеЗаполнено(УзлыИмяПостФайла) Тогда
ИменаПоступившихФайлов = Новый Массив;
Для Каждого УзелИмяПостФайла Из УзлыИмяПостФайла Цикл
ИменаПоступившихФайлов.Добавить(СокрЛП(УзелИмяПостФайла.Значение));
КонецЦикла;
ИмяПоступившегоФайла = СтрСоединить(ИменаПоступившихФайлов, ", ");
КонецЕсли;
УзелДатаОтпр = УзелСведПодтв.Строки.Найти("ДатаОтпр", "Имя");
УзелВремяОтпр = УзелСведПодтв.Строки.Найти("ВремяОтпр", "Имя");
Если ЗначениеЗаполнено(УзелДатаОтпр) Тогда
ДатаОтправки = СокрЛП(УзелДатаОтпр.Значение);
КонецЕсли;
Если ЗначениеЗаполнено(УзелВремяОтпр) Тогда
Время = СокрЛП(УзелВремяОтпр.Значение);
Время = СтрЗаменить(Время, ".", ":");
ДатаОтправки = СокрЛП(ДатаОтправки + " " + Время);
КонецЕсли;
Элементы.Печать.Видимость = Параметры.ПечатьВозможна;
Если Параметры.ПечатьВозможна Тогда
ЦиклОбмена = Параметры.ЦиклОбмена;
ФорматДокументооборота = Параметры.ЦиклОбмена.ФорматДокументооборота;
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ПриОткрытии(Отказ)
Если ЗначениеЗаполнено(ТекстПредупреждения) Тогда
ПоказатьПредупреждение(, ТекстПредупреждения);
Отказ = Истина;
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовШапкиФормы
&НаКлиенте
Процедура ПолеВводаОчистка(Элемент, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормы
#КонецОбласти
#Область ОбработчикиКомандФормы
&НаКлиенте
Процедура Печать(Команда)
ОписаниеОповещения = Новый ОписаниеОповещения("ПечатьЗавершение", ЭтотОбъект);
ДокументооборотСКОКлиент.ПолучитьКонтекстЭДО(ОписаниеОповещения);
КонецПроцедуры
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура ПечатьЗавершение(Результат, ДополнительныеПараметры) Экспорт
КонтекстЭДОКлиент = Результат.КонтекстЭДО;
РезультатНастройки = Новый Структура("ПечататьПодтверждениеДатыОтправки, ФорматДокументооборота", Истина, ФорматДокументооборота);
КонтекстЭДОКлиент.СформироватьИПоказатьПечатныеДокументы(ЦиклОбмена, РезультатНастройки);
КонецПроцедуры
#КонецОбласти