Протокол обмена ЕГАИС / Форма протокол обмена / Модуль формы

файл

#Область ОбработчикиСобытийФормы

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	Если Параметры.Свойство("АвтоТест") Тогда
		Возврат;
	КонецЕсли;
	
	ПротоколОбменаИС.ОтработатьВходящийДокументПротоколаОбмена(ЭтотОбъект);
	
	ОбменДаннымиЕГАИС.УстановитьВидимостьКомандыВыполнитьОбмен(ЭтотОбъект, "ВыполнитьОбмен");
	
	УстановитьУсловноеОформление();
	ЗаполнитьСтруктуруДействий();
	ЗаполнитьДеревоФайлов();
	
	ОбщегоНазначенияСобытияФормИСПереопределяемый.ПриСозданииНаСервере(ЭтотОбъект, Отказ, СтандартнаяОбработка);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ОбщегоНазначенияИСКлиент.РазвернутьДеревоРекурсивно(ДеревоФайлов, Элементы.ДеревоФайлов);
	
КонецПроцедуры

&НаКлиенте
Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник)
	
	ПерезаполнитьДерево = Ложь;
	
	Если ИмяСобытия = "ИзменениеСостоянияЕГАИС"
		И (Параметр.Ссылка = Документ Или Параметр.Основание = Документ) Тогда
		
		ПерезаполнитьДерево = Истина;
		
	ИначеЕсли ИмяСобытия = "ВыполненОбменЕГАИС"
		И (Параметр = Неопределено
		Или (ТипЗнч(Параметр) = Тип("Структура") И Параметр.ОбновлятьСтатусВФормахДокументов)) Тогда
		
		ПерезаполнитьДерево = Истина;
		
	КонецЕсли;
	
	Если ПерезаполнитьДерево Тогда
		ОбновитьДерево();
	КонецЕсли;
	
	ОбщегоНазначенияСобытияФормИСКлиентПереопределяемый.ОбработкаОповещения(ЭтотОбъект, ИмяСобытия, Параметр, Источник);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовШапкиФормы

&НаКлиенте
Процедура ТекстДокументаЕГАИСОбработкаНавигационнойСсылки(Элемент, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка)
	
	Объект = Новый Структура;
	Объект.Вставить("Объект", Новый Структура("Ссылка", Документ));
	Объект.Вставить("Модифицированность", Ложь);
	Объект.Вставить("УникальныйИдентификатор", УникальныйИдентификатор);
	
	ОбменДаннымиЕГАИСКлиент.ТекстДокументаЕГАИСОбработкаНавигационнойСсылки(Объект, НавигационнаяСсылкаФорматированнойСтроки, СтандартнаяОбработка);
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиСобытийЭлементовТаблицыФормыДеревоФайлов

&НаКлиенте
Процедура ДеревоФайловВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	ОбщегоНазначенияИСКлиент.ПоказатьСообщенияОперации(ЭтотОбъект, "ЕГАИС", ВыбраннаяСтрока);
	
КонецПроцедуры

&НаКлиенте
Процедура ДеревоФайловПриАктивизацииСтроки(Элемент)
	
	ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные;
	
	Если ТекущиеДанные = Неопределено Тогда
		Возврат;
	КонецЕсли;
	
	КомандыПередать = Новый Массив;
	КомандыПередать.Добавить(Элементы.ДеревоФайловДействиеПередать);
	КомандыПередать.Добавить(Элементы.ДеревоФайловКонтекстноеМенюДействиеПередать);
	Для Каждого Элемент Из КомандыПередать Цикл
		Элемент.Доступность = Ложь;
	КонецЦикла;
	
	КомандыПодтвердить = Новый Массив;
	КомандыПодтвердить.Добавить(Элементы.ДеревоФайловДействиеПодтвердить);
	КомандыПодтвердить.Добавить(Элементы.ДеревоФайловКонтекстноеМенюДействиеПодтвердить);
	Для Каждого Элемент Из КомандыПодтвердить Цикл
		Элемент.Доступность = Ложь;
	КонецЦикла;
	
	КомандыОтменить = Новый Массив;
	КомандыОтменить.Добавить(Элементы.ДеревоФайловДействиеОтменить);
	КомандыОтменить.Добавить(Элементы.ДеревоФайловКонтекстноеМенюДействиеОтменить);
	Для Каждого Элемент Из КомандыОтменить Цикл
		Элемент.Доступность = Ложь;
	КонецЦикла;
	
	Для Каждого ЭлементСписка Из ТекущиеДанные.ДальнейшиеДействия Цикл
		
		Если Действия.Передать.Найти(ЭлементСписка.Значение) <> Неопределено Тогда
			Для Каждого Элемент Из КомандыПередать Цикл
				Элемент.Доступность = Истина;
			КонецЦикла;
		ИначеЕсли Действия.Подтвердить.Найти(ЭлементСписка.Значение) <> Неопределено Тогда
			Для Каждого Элемент Из КомандыПодтвердить Цикл
				Элемент.Доступность = Истина;
			КонецЦикла;
		ИначеЕсли Действия.Отменить.Найти(ЭлементСписка.Значение) <> Неопределено Тогда
			Для Каждого Элемент Из КомандыОтменить Цикл
				Элемент.Доступность = Истина;
			КонецЦикла;
		КонецЕсли;
		
	КонецЦикла;
	
КонецПроцедуры

#КонецОбласти

#Область ОбработчикиКомандФормы

&НаКлиенте
Процедура Обновить(Команда)
	
	ОбновитьДерево();
	
КонецПроцедуры

&НаКлиенте
Процедура ВыполнитьОбмен(Команда)
	
	ОрганизацииЕГАИС = Новый Массив();
	Для Каждого СтрокаДерева Из ДеревоФайлов.ПолучитьЭлементы() Цикл
		Если ОрганизацииЕГАИС.Найти(СтрокаДерева.ОрганизацияЕГАИС) = Неопределено Тогда
			ОрганизацииЕГАИС.Добавить(СтрокаДерева.ОрганизацияЕГАИС);
		КонецЕсли;
	КонецЦикла;
	
	ОбменДаннымиЕГАИСКлиент.ВыполнитьОбмен(
		ОрганизацииЕГАИС,,
		УникальныйИдентификатор);
	
КонецПроцедуры

&НаКлиенте
Процедура ПоказатьСообщенияXML(Команда)
	
	ОбщегоНазначенияИСКлиент.ПоказатьСообщенияОперации(ЭтотОбъект, "ЕГАИС", Элементы.ДеревоФайлов.ТекущаяСтрока, Ложь);
	
КонецПроцедуры

&НаКлиенте
Процедура Передать(Команда)
	
	ДальнейшееДействие = Неопределено;
	Если ОбщегоНазначенияИСКлиент.ПроверитьВозможностьДействия(ЭтотОбъект, "Передать", ДальнейшееДействие) Тогда
		ОбменДаннымиЕГАИСКлиент.ПодготовитьКПередаче(
			Элементы.ДеревоФайлов.ТекущиеДанные.Документ,
			ДальнейшееДействие,
			УникальныйИдентификатор);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Отменить(Команда)
	
	ДальнейшееДействие = Неопределено;
	Если ОбщегоНазначенияИСКлиент.ПроверитьВозможностьДействия(ЭтотОбъект, "Отменить", ДальнейшееДействие) Тогда
		ОбменДаннымиЕГАИСКлиент.ПодготовитьКПередаче(
			Элементы.ДеревоФайлов.ТекущиеДанные.Документ,
			ДальнейшееДействие,
			УникальныйИдентификатор);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура Подтвердить(Команда)
	
	ДальнейшееДействие = Неопределено;
	Если ОбщегоНазначенияИСКлиент.ПроверитьВозможностьДействия(ЭтотОбъект, "Подтвердить", ДальнейшееДействие) Тогда
		ОбменДаннымиЕГАИСКлиент.ПодготовитьКПередаче(
			Элементы.ДеревоФайлов.ТекущиеДанные.Документ,
			ДальнейшееДействие,
			УникальныйИдентификатор);
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура РассчитатьСтатус(Команда)
	
	ОчиститьСообщения();
	
	ТекущиеДанные = Элементы.ДеревоФайлов.ТекущиеДанные;
	Если ТекущиеДанные = Неопределено Тогда
		СсылкаНаДокумент = Документ;
	Иначе
		СсылкаНаДокумент = ТекущиеДанные.Документ;
	КонецЕсли;
	
	ОбменДаннымиЕГАИСВызовСервера.ВосстановитьСтатусДокументаПоДаннымПротоколаОбмена(СсылкаНаДокумент);
	
	Оповестить("ВыполненОбменЕГАИС");
	
КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

&НаКлиенте
Процедура ОбновитьДерево()
	
	ЗаполнитьДеревоФайлов();
	ОбщегоНазначенияИСКлиент.РазвернутьДеревоРекурсивно(ДеревоФайлов, Элементы.ДеревоФайлов);
	
КонецПроцедуры

&НаСервере
Процедура УстановитьУсловноеОформление()
	
	ПротоколОбменаИС.УстановитьУсловноеОформлениеПротоколаОбмена(ЭтотОбъект);
	
КонецПроцедуры

&НаСервере
Процедура ЗаполнитьСтруктуруДействий()
	
	Действия = Новый Структура;
	Действия.Вставить("Передать",    Новый Массив);
	Действия.Вставить("Подтвердить", Новый Массив);
	Действия.Вставить("Отменить",    Новый Массив);
	
	Действия.Передать.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ПередайтеДанные"));
	Действия.Передать.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ЗапроситеОстатки"));
	Действия.Передать.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ЗапроситеОтменуПроведения"));
	
	Действия.Подтвердить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ПодтвердитеАктОРасхождениях"));
	Действия.Подтвердить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ПодтвердитеПолучение"));
	Действия.Подтвердить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ПодтвердитеПолучениеАктПодтверждения"));
	Действия.Подтвердить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ПодтвердитеПолучениеАктРасхождений"));
	Действия.Подтвердить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ПодтвердитеЗапросНаОтменуПроведения"));
	
	Действия.Отменить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ОткажитесьОтАктаОРасхождениях"));
	Действия.Отменить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ОткажитесьОтНакладной"));
	Действия.Отменить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ОткажитесьОтЗапросаНаОтменуПроведения"));
	Действия.Отменить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ОтменитеОперацию"));
	Действия.Отменить.Добавить(ПредопределенноеЗначение("Перечисление.ДальнейшиеДействияПоВзаимодействиюЕГАИС.ОтменитеПередачуДанных"));
	
КонецПроцедуры

#Область ЗаполнениеДереваФайлов

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

#КонецОбласти

#КонецОбласти

Связанные материалы