Документооборот с контролирующими органами / Мастер ФТС может быть только у одного / Модуль формы

файл

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

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

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

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

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

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

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

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

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

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

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

&НаКлиенте
Процедура УдалитьВсех(Команда)

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

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

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


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

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

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

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

&НаСервере
Процедура УправлениеФормойПриОткрытии()

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

&НаСервере
Процедура УправлениеФормой()

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

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

	// Выбрано 2 пользователя, можно еще выбрать 1
	
	ШаблонВсего = ";%1 пользователя;;%1 пользователей;%1 пользователей;%1 пользователей";
	ПредставлениеВсего = СтроковыеФункцииКлиентСервер.СтрокаСЧисломДляЛюбогоЯзыка(ШаблонВсего, ТаблицаПользователей.Количество());
	
	Выбрано = МультирежимКлиентСервер.КоличествоШифровальщиков(ТаблицаПользователей);
	Если Выбрано = 0 Тогда
		Представление = НСтр("ru = 'Выбрано 0, выберите хотя бы одного'");
	ИначеЕсли Выбрано > 3 Тогда
		ШаблонОбщий = НСтр("ru = 'Выбрано %1, выбрано лишних %2'");
		Представление = СтрШаблон(ШаблонОбщий, Выбрано, Выбрано - 3);
	ИначеЕсли Выбрано = 3 Тогда
		ШаблонОбщий = НСтр("ru = 'Выбрано %1 (это максимум)'");
		Представление = СтрШаблон(ШаблонОбщий, Выбрано);
	Иначе
		ШаблонОбщий = НСтр("ru = 'Выбрано %1, можно еще выбрать %2'");
		Представление = СтрШаблон(ШаблонОбщий, Выбрано, 3 - Выбрано);
	КонецЕсли;
	
	Элементы.ИтогПоТаблице.Заголовок = Представление;
		
КонецПроцедуры

&НаСервере
Процедура УправлениеФормойПриЗапретеИзменения()

	Элементы.КнопкиТаблицы.Видимость = НЕ ЗапретитьИзменение;
	Элементы.ТаблицаПользователейЭтоШифровальщик.ТолькоПросмотр = ЗапретитьИзменение;
	
	КоманднаяПанель.Видимость = НЕ ЗапретитьИзменение;
	
КонецПроцедуры

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


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