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