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