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