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