Документооборот с контролирующими органами / Мастер направления / Модуль формы

файл

&НаКлиенте
Перем КонтекстЭДОКлиент Экспорт;

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПредупредитьОПопыткеИзмененияДоступаКОрганам(Действие)
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"ПредупредитьОПопыткеИзмененияДоступаКОрганам_ПослеОтвета", 
		ЭтотОбъект);
	
	МультирежимКлиент.ПоказатьПредупреждениеОбратитесьКАдминистратору(
		ЭтотОбъект,
		Действие,
		ОписаниеОповещения);

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

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

&НаКлиенте
Процедура ЭтоШифровальщикПриИзменении(Элемент)
	
	Если ХочетИзменитьСебеШифровальщика() Тогда
		ПредупредитьОПопыткеИзмененияШифровальщика();
	Иначе
		ПредупредитьОПопыткеИзмененияШифровальщика_ПослеОтвета(Истина);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

&НаКлиенте
Процедура ПриИзмененииШифровальщика()
	
	Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(ЭтотОбъект, Пользователь);
	Строка.ЭтоШифровальщик = ЭтоШифровальщик;
	
КонецПроцедуры

&НаКлиенте
Процедура ВывестиОшибку(Элемент)
	
	Если Элемент.Подсказка <> "" Тогда
		ПоказатьПредупреждение(,Элемент.Подсказка);
	КонецЕсли;
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

#Область ФНС

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

		ОткрытьФормуНаправления("Редактировать", "ПолучателиФНС");
		
	КонецЕсли;
	
КонецПроцедуры

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

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

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

#Область ФСГС

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

&НаКлиенте
Процедура РедактироватьВыбранноеНаправлениеФСГС()

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

		ОписаниеОповещения = Новый ОписаниеОповещения("РедактированиеКодРосстатаЗавершение", ЭтотОбъект);
	
		КонтекстЭДОКлиент.КодРосстата(
			Элементы.ПолучателиФСГС.ТекущиеДанные.КодПолучателя, 
			Спецоператор, 
			ОписаниеОповещения);
		
	КонецЕсли;
	
КонецПроцедуры 

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

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

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

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

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

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

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

&НаКлиентеНаСервереБезКонтекста
Функция ЭтоЛичныеНастройки(Форма)
	
	Возврат Форма.ТекущийПользователь = Форма.Пользователь;
	
КонецФункции

&НаКлиенте
Процедура СохранитьПослеПроверок()
	
	Если ПризнакПоддержкиФСРАР И ПодатьЗаявкуНаСертификатДляФСРАР Тогда
		// Дополнительные вопросы
		УточнитьРегионФСРАРИЗатемЗакрыть();
	Иначе
		ЗакрытьОкончательно();
	КонецЕсли;
	
КонецПроцедуры

&НаКлиенте
Процедура ПроверитьШифровальщиковСВыводомФорм(МастерДалее)
	
	Выбрано = МультирежимКлиентСервер.КоличествоШифровальщиков(ТаблицаПользователей);
	
	Если Выбрано > 3 Тогда
		ПоказатьОшибкуШифровальщиковБольше3();
		МастерДалее = Ложь;
	ИначеЕсли Выбрано = 0 Тогда
		ПоказатьОшибкуОтсутствияШифровальщиков();
		МастерДалее = Ложь;
	КонецЕсли;
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура ВыполнитьОбменЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	СохранитьПослеПроверок();
	
КонецПроцедуры

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

&НаКлиенте
Процедура ПередЗакрытием_Завершение(Результат, ВходящийКонтекст) Экспорт
	
	Сохранить();
	
КонецПроцедуры

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

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

КонецФункции

&НаКлиенте
Процедура УточнитьРегионФСРАРИЗатемЗакрыть()
	
	РегионЮрАдреса = РегламентированнаяОтчетностьКлиентСервер.РазложитьАдрес(АдресЮридическийЗначение).Регион;
	
	СхемаСдачиОтчетности = КонтекстЭДОКлиент.СхемаСдачиОтчетностиФСРАРпоКодуРегиона(РегионЮрАдреса);
	
	Если КодРегионаФСРАР <> РегионЮрАдреса И ЗначениеЗаполнено(РегионЮрАдреса)
		И СхемаСдачиОтчетности <> ПредопределенноеЗначение("Перечисление.СхемыСдачиОтчетностиФСРАР.СдачаВручную") Тогда
		
		НаименованиеРегионаЮрАдреса = НаименованиеСубъектаРФПоКодуСубъекта(Число(РегионЮрАдреса));
		КодРегионаСНаименованием    = Формат(Число(РегионЮрАдреса), "ЧН=0; ЧГ=; ЧЦ=2; ЧВН=;") 
			+ ?(ЗначениеЗаполнено(НаименованиеРегионаЮрАдреса), " - ", "") + НаименованиеРегионаЮрАдреса;
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"ВопросРегионЗаявкиРосалькогольрегулированияЗавершение", 
			ЭтотОбъект);
		
		ТекстВопроса = "Регион для Росалкогольтабакконтроля отличается от указанного в юридическом адресе:
			|" + КодРегионаСНаименованием + " 
			|
			|Продолжить?";
		
		ПоказатьВопрос(
			ОписаниеОповещения, 
			ТекстВопроса, 
			РежимДиалогаВопрос.ДаНет, 
			0, 
			КодВозвратаДиалога.Да);
			
		Возврат;
		
	Иначе
		
		ВопросРегионЗаявкиРосалькогольрегулированияЗавершение(КодВозвратаДиалога.Да, Неопределено);
		
	КонецЕсли;
	
КонецПроцедуры

&НаСервереБезКонтекста
Функция НаименованиеСубъектаРФПоКодуСубъекта(КодРегиона)
	
	КонтекстЭДОСервер = ДокументооборотСКО.ПолучитьОбработкуЭДО();
	Возврат КонтекстЭДОСервер.НаименованиеСубъектаРФПоКодуСубъекта(КодРегиона);
	
КонецФункции

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

&НаКлиенте
Процедура ЗакрытьОкончательно() Экспорт
	
	Результат = РезультатВыбораНаправлений();
	
	ОбработкаЗаявленийАбонентаКлиентСервер.СнятьМодифицированность(ЭтотОбъект);
	Закрыть(Результат);
	
КонецПроцедуры

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

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

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

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

&НаСервере
Функция СброситьШифровальщика(Орган)

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

&НаСервере
Функция ОтключитьВсемПользователям(ТаблицаПользователей, Орган)
	
	ПрисвоитьНовоеЗначениеПользователямСДоступомКоВсемОрганам(ТаблицаПользователей, Орган, Ложь);
	
КонецФункции

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

&НаСервере
Функция ПрисвоитьНовоеЗначениеПользователямСДоступомКоВсемОрганам(ТаблицаПользователей, Орган, НовоеЗначение)

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

&НаСервере
Функция ЕстьПользователиСЭтимОрганом(Орган)

	Отбор = Новый Структура();
	Отбор.Вставить(Орган, Истина);
	Отбор.Вставить("Пометка", Истина);
	
	НайденныеСтроки = ТаблицаПользователей.НайтиСтроки(Отбор);
		
	Возврат НайденныеСтроки.Количество() > 0;
	
КонецФункции

&НаСервере
Функция ЭтоПодключениеОргана(Орган)

	Возврат ЭтотОбъект[Орган] = Истина;
	
КонецФункции

&НаСервере
Функция ЭтоОтключениеОргана(Орган)

	Возврат ЭтотОбъект[Орган] = Ложь;
	
КонецФункции

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

&НаКлиенте
Процедура ПриОткрытииЗавершение(Результат, ДополнительныеПараметры) Экспорт
	
	КонтекстЭДОКлиент = Результат.КонтекстЭДО;
	
КонецПроцедуры

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

&НаСервере
Процедура ЗапомнитьКлючПоложенияОкна()
	
	Если ЭтоГосОрганыУчетнойЗаписи Тогда
		КлючСохраненияПоложенияОкна = "ЭтоГосОрганыУчетнойЗаписи";
	Иначе
		КлючСохраненияПоложенияОкна = "ЭтоНЕГосОрганыУчетнойЗаписи";
	КонецЕсли;
	
КонецПроцедуры

&НаСервере
Процедура ИзменитьЗаголовок()
	
	Если ЗначениеЗаполнено(Пользователь) Тогда
		Заголовок = "Выбор гос. органов (" + Строка(Пользователь) + ")";
	ИначеЕсли ЭтоГосОрганыУчетнойЗаписи Тогда
		Заголовок = НСтр("ru = 'Выбор гос. органов учетной записи'");
	Иначе
		Заголовок = НСтр("ru = 'Выбор гос. органов'");
	КонецЕсли;
	
КонецПроцедуры

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

&НаСервере
Функция ПоказыватьОтбор()
	
	Показывать =
		ЭтоМультиРежим
		И ВладелецЭЦПЭтоАдмин
		И НЕ ВладелецЭЦПРасширилСебеПрава;
		
	Возврат Показывать;
	
КонецФункции

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

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

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

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

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

&НаСервере
Функция АдресПолучателей(ИмяТаблицыФормы) Экспорт

	ТаблицаПолучателей = ЭтотОбъект[ИмяТаблицыФормы].Выгрузить();
	Возврат ПоместитьВоВременноеХранилище(ТаблицаПолучателей, Новый УникальныйИдентификатор);

КонецФункции

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

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

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

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

&НаСервере
Функция ТолькоПросмотрШифровальщиков() Экспорт
	
	Возврат ЗапретитьИзменение ИЛИ НЕ СдаватьВФНС;
	
КонецФункции

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

&НаСервере
Функция ИзменитьОформлениеФормы_ФНС()
	
	// ФНС
	Включено = СдаватьВФНС И ПризнакПоддержкиФНС;
	
	Элементы.ГруппаФНС.ТолькоПросмотр 		= ЗапретитьИзменение;
	Элементы.ПолучателиФНС.ТолькоПросмотр 	= НЕ Включено;
	Элементы.ГруппаФНС.Видимость 			= ПризнакПоддержкиФНС;
	Элементы.ПолучателиФНСКПП.Видимость 	= ЭтоЮридическоеЛицо;
	Элементы.ГруппаИнформацияПроДоверенность.Доступность = Включено;
	Элементы.ПолучателиФНС.АвтоОтметкаНезаполненного     = Включено;
	Если НЕ Включено Тогда
		Элементы.ПолучателиФНС.ОтметкаНезаполненного = Ложь;
	КонецЕсли;
	
КонецФункции

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

&НаСервере
Функция ИзменитьОформлениеФормы_ПФР()
	
	// ПФР
	Включено = СдаватьВПФР И ПризнакПоддержкиПФР;

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

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

&НаСервере
Функция ИзменитьОформлениеФормы_Остальные()
	
	// ФСС
	Элементы.ГруппаФСС.Видимость      = Ложь; // В связи с СФР;
	Элементы.ГруппаФСС.ТолькоПросмотр = ЗапретитьИзменение;
	
	// РПН
	Элементы.ГруппаРПН.Видимость      = ПризнакПоддержкиРПН;
	Элементы.ГруппаРПН.ТолькоПросмотр = ЗапретитьИзменение;
	
	// ФТС
	Элементы.ГруппаФТС.Видимость 	  = ПризнакПоддержкиФТС;
	Элементы.ГруппаФТС.ТолькоПросмотр = ЗапретитьИзменение;

	// ЦБ
	Элементы.СдаватьВЦБ.Видимость 	   = ПризнакПоддержкиЦБ;
	Элементы.СдаватьВЦБ.ТолькоПросмотр = ЗапретитьИзменение;
	
КонецФункции

&НаКлиенте
Процедура КодПФРПриИзменении(Элемент)
	
	ПредупредитьОбИзмененииКодаУВсехПользователейПриНеобходимости("СдаватьВПФР");

	ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
	УправлениеФормой();
	
КонецПроцедуры


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

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

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

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

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

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

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

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

&НаКлиенте
Процедура ПодатьЗаявкуНаПодключениеФТСПослеИзменения(Результат, ВходящийКонтекст) Экспорт

	ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
	ОбновитьГосОрганыУчетнойЗаписи();
	УправлениеФормой();
	
КонецПроцедуры

&НаКлиенте
Процедура СдаватьВЦБПриИзменении(Элемент)
	
	ОписаниеОповещения = Новый ОписаниеОповещения(
		"СдаватьВЦБПриИзмененииПослеИзменения",
		ЭтотОбъект);
		
	СдаватьВГосОрганПриИзменении(ОписаниеОповещения, Элемент.Имя, НСтр("ru = 'Банк России'"));
	
КонецПроцедуры

&НаКлиенте
Процедура СдаватьВЦБПриИзмененииПослеИзменения(Результат, ВходящийКонтекст) Экспорт

	ОбработкаЗаявленийАбонентаКлиентСервер.УстановитьМодифицированность(ЭтотОбъект);
	ОбновитьГосОрганыУчетнойЗаписи();
	УправлениеФормой();
	
КонецПроцедуры

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

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

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

	ПоказатьОшибкуСменыНаправления = 
		ЗначениеЗаполнено(ТарифОператораЭДО) 
		И ЭтотОбъект[ИмяРеквизита] <> ВключенВТарифе;

	Если ПоказатьОшибкуСменыНаправления Тогда
		
		ОписаниеОповещения = Новый ОписаниеОповещения(
			"СдаватьВГосОрганПриИзменении_ПослеОтвета", 
			ЭтотОбъект,
			ДополнительныеПараметры);
			
		Если ВключенВТарифе = Истина Тогда
			Текст = НСтр("ru = 'Если вы отключите %1, то не сможете воспользоваться тарифом ""%2"".
	                      |Продолжить с отключением %1?'");
		Иначе
			Текст = НСтр("ru = 'Если вы подключите %1, то не сможете воспользоваться тарифом ""%2"".
	                      |Продолжить с подключением %1?'");
		КонецЕсли;
		
		Текст = СтрШаблон(Текст, ПредставлениеОргана, Строка(ТарифОператораЭДО));
		
		Кнопки = ОбработкаЗаявленийАбонентаКлиентСервер.КнопкиНетДа();
		
		ПоказатьВопрос(ОписаниеОповещения, Текст, Кнопки, , НСтр("ru = 'Нет'"));
		
	ИначеЕсли ХочетИзменитьОрганУВсех(ИмяРеквизита, ЭтоПринудительнаяПроверка) Тогда
		
		ПредупредитьОбИзмененииОрганаУВсехПользователей(ДополнительныеПараметры);
		
	ИначеЕсли НеАдминХочетИзменитьСебеДоступКОргану(ИмяРеквизита) Тогда 
		
		ПредупредитьОПопыткеИзмененияДоступаКОргану(ДополнительныеПараметры);
			
	Иначе
		
		ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
		
	КонецЕсли;
	
КонецПроцедуры

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

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

		ПодключитьОбработчикОжидания("Подключаемый_ПредупредитьОбИзмененииКодаУВсехПользователейПриНеобходимости", 0.3, Истина);
			
	КонецЕсли;
		
КонецПроцедуры

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

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

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

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

	ВыполняемоеОповещение = ВходящийКонтекст.ВыполняемоеОповещение;
	ВыполнитьОбработкуОповещения(ВыполняемоеОповещение);
	
КонецПроцедуры

&НаКлиенте
Процедура ВернутьПредыдущееЗначениеФлага(ВходящийКонтекст) Экспорт
	
	ИмяРеквизита = ВходящийКонтекст.ИмяРеквизита;
	ЭтотОбъект[ИмяРеквизита] = НЕ ЭтотОбъект[ИмяРеквизита];
	
КонецПроцедуры

&НаКлиенте
Функция ХочетПовыситьСебеДоступКОрганам()

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

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

&НаКлиенте
Функция НеАдминХочетИзменитьСебеДоступКОргану(ИмяРеквизита)

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

&НаКлиенте
Функция ХочетИзменитьСебеШифровальщика()

	Если ПроверятьПрава() Тогда
		
		Строка = МультирежимКлиентСервер.СтрокаТаблицыПользователей(ЭтотОбъект, ТекущийПользователь);
		ИзменилШифровальщика = Строка.ЭтоШифровальщик <> ЭтоШифровальщик;
		
		Возврат ИзменилШифровальщика;
	Иначе
		
		Возврат Ложь;
		
	КонецЕсли;
			
КонецФункции

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

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

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

&НаКлиенте
Процедура ВсеПолучателиНажатие_Завершение(Результат, ВходящийКонтекст) Экспорт
	
	ПеречитатьЭтоШифровальщикИзТаблицы();
	УправлениеФормой();
	
КонецПроцедуры

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

&НаСервере
Процедура СкопироватьШифровальщиков(АдресТаблицы) Экспорт
	
	Мультирежим.СкопироватьШифровальщиков(ЭтотОбъект, АдресТаблицы);
	
КонецПроцедуры

&НаСервере
Функция ПараметрыФормыШифровальщики() Экспорт
	
	ДополнительныеПараметры = Мультирежим.ПараметрыФормыШифровальщики(ЭтотОбъект);
	ДополнительныеПараметры.ЗапретитьИзменение = ТолькоПросмотрШифровальщиков();
	Возврат ДополнительныеПараметры;
	
КонецФункции

&НаСервере
Функция ПараметрыПредупрежденияОбратитесьКАдминистратору() Экспорт
	
	Возврат Мультирежим.ПараметрыПредупрежденияОбратитесьКАдминистратору(ЭтотОбъект);
	
КонецФункции

&НаСервере
Процедура ТаблицаИзАдреса(Адрес, Имя) Экспорт
	
	Мультирежим.ТаблицаИзАдреса(ЭтотОбъект, Адрес, Имя);
	
КонецПроцедуры

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

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

&НаСервере
Процедура СкорректироватьПризнакЕстьДоступКоВсемГосОрганам() Экспорт

	Мультирежим.СкорректироватьПризнакЕстьДоступКоВсемГосОрганам(ЭтотОбъект, ВсеГосОрганыУчетнойЗаписи);
	
КонецПроцедуры

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

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