Документооборот с контролирующими органами / Помощник МЧД расширенные настройки / Модуль формы

файл
#Область ОписаниеПеременных

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

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

&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
	
	ИнициализироватьЗначения(Параметры);
	
КонецПроцедуры

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

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

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

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

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

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

	Если НЕ ПредставительСертификат Тогда
		Представитель_ИдентификаторСертификата = "";
		Представитель_СертификатBase64 = "";
	КонецЕсли;
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

&НаКлиенте
Процедура ВыданаОбособкеПриИзменении(Элемент)
	
	Если НЕ ВыданаОбособке Тогда
		КППОбособки = "";
	КонецЕсли;
	
	ИзменитьОформлениеФормы();
	
КонецПроцедуры

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

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

	ОписаниеОповещения = Новый ОписаниеОповещения("ДекорацияНалоговыеОрганыДействияНажатиеПослеВвода", ЭтотОбъект);
	ОткрытьФорму(
		"Справочник.МашиночитаемыеДоверенностиФНС.Форма.ФормаВводаНалоговыхОрганов",
		Новый Структура("СтруктураДанных", СтруктураДанных),
		ЭтаФорма,,,,
		ОписаниеОповещения,
		РежимОткрытияОкнаФормы.БлокироватьОкноВладельца);
	
КонецПроцедуры

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

#Область ОбработчикиСобытийЭлементовТаблицыФормы
// Код процедур и функций
#КонецОбласти

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

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

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

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

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

&НаКлиенте
Процедура ИзменитьОформлениеФормы()
	
	Элементы.ГруппаВыданаОбособке.Видимость = СоздатьМЧДФНС ИЛИ СоздатьМЧДСФР;
	
	ИзменитьОформлениеГруппыФНС();
	ИзменитьОформлениеМЧДЕдиногоФормата();
	ИзменитьОформлениеМЧДСФР();
	
КонецПроцедуры

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

КонецПроцедуры

&НаКлиенте
Процедура ИзменитьОформлениеМЧДЕдиногоФормата()

	Элементы.ГруппаМЧДЕдиногоФормата.Видимость = СоздатьМЧД_ЕФ(ЭтотОбъект);
	
	Если НЕ СоздатьМЧД_ЕФ(ЭтотОбъект) Тогда
		Возврат;
	КонецЕсли;
	
	ПодстрокиМЧД = Новый Массив;
		
	Если СоздатьМЧДРосстат Тогда
		ПодстрокиМЧД.Добавить("Росстата");
	КонецЕсли;
	Если СоздатьМЧДФСРАР Тогда
		ПодстрокиМЧД.Добавить("ФСРАР");
	КонецЕсли;
	Если СоздатьМЧДФТС Тогда
		ПодстрокиМЧД.Добавить("ФТС");
	КонецЕсли;
	Если СоздатьМЧДРПН Тогда
		ПодстрокиМЧД.Добавить("РПН");
	КонецЕсли;
	
	ПодстрокиМЧД = СтрСоединить(ПодстрокиМЧД, ", ");
	Текст = НСтр("ru = 'МЧД для %1 (единого формата):'");
	Текст = СтрШаблон(Текст, ПодстрокиМЧД);
	
	Элементы.ГруппаМЧДЕдиногоФормата.Заголовок = Текст;
	
КонецПроцедуры

&НаКлиенте
Процедура ИзменитьОформлениеМЧДСФР()

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

КонецПроцедуры

&НаСервере
Процедура ИзменитьОформлениеНалоговыеОрганыДействия()

	КоличествоНалоговыхОргановДействия = НалоговыеОрганыДействия.Количество();
	Если КоличествоНалоговыхОргановДействия = 0 Тогда
		Элементы.ДекорацияНалоговыеОрганыДействия.Заголовок = НСтр("ru = 'Все ИФНС'");
	ИначеЕсли КоличествоНалоговыхОргановДействия = 1 Тогда
		Элементы.ДекорацияНалоговыеОрганыДействия.Заголовок = НалоговыеОрганыДействия[0];
	Иначе
		Элементы.ДекорацияНалоговыеОрганыДействия.Заголовок =
			НалоговыеОрганыДействия[0]
			+ ", " + НалоговыеОрганыДействия[1] + ?(КоличествоНалоговыхОргановДействия > 2,
			" " + СтрШаблон(
				НСтр("ru = 'и еще %1'"),
				Формат(КоличествоНалоговыхОргановДействия - 2, "ЧДЦ=; ЧН=; ЧГ=")), "");
	КонецЕсли;

КонецПроцедуры

&НаСервере
Процедура ИзменитьВыданаОбособке()

	Элементы.КППОбособки.Доступность = ВыданаОбособке;

КонецПроцедуры

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

КонецПроцедуры

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

&НаСервере
Функция ЗначенияРеквизитовМЧД(СсылкаНаОбъект, ПрочитатьКорневуюМЧД = Ложь)
	
	Возврат Справочники.МашиночитаемыеДоверенностиФНС.ЗначенияРеквизитовМЧД(СсылкаНаОбъект, ПрочитатьКорневуюМЧД = Ложь);
	
КонецФункции

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция СоздатьМЧД_ЕФ(Форма) Экспорт
	
	Возврат МЧДБРОКлиентСервер.СоздатьМЧД_ЕФ(Форма);
	
КонецФункции

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

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