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