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