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

файл

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

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

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

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

&НаКлиенте
Процедура СнятьФлажкиУВсех(Команда)
	УстановитьСнятьФлажки(Ложь);
КонецПроцедуры

&НаКлиенте
Процедура УстановитьФлажкиУВсех(Команда)
	УстановитьСнятьФлажки(Истина);
КонецПроцедуры

&НаКлиенте
Процедура КомандаОк(Команда)
	ЗакрытиеФормыПоОК = Истина;
	ЗаписатьПользователейУчетныхЗаписейДокументооборота();
	Закрыть();
КонецПроцедуры

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

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

&НаСервере
Процедура НастройкаПользователей()
	
	СписокПользователей.Очистить();
	
	Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
	                      |	ВЫБОР
	                      |		КОГДА Настройки.УчетнаяЗапись ЕСТЬ NULL 
	                      |			ТОГДА ЛОЖЬ
	                      |		ИНАЧЕ ИСТИНА
	                      |	КОНЕЦ КАК Пометка,
	                      |	Пользователи.Ссылка КАК Пользователь
	                      |ИЗ
	                      |	Справочник.Пользователи КАК Пользователи
	                      |		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
	                      |			ПользователиУчетныхЗаписейДокументооборота.УчетнаяЗапись КАК УчетнаяЗапись,
	                      |			ПользователиУчетныхЗаписейДокументооборота.Пользователь КАК Пользователь
	                      |		ИЗ
	                      |			РегистрСведений.ПользователиУчетныхЗаписейДокументооборота КАК ПользователиУчетныхЗаписейДокументооборота
	                      |		ГДЕ
	                      |			ПользователиУчетныхЗаписейДокументооборота.УчетнаяЗапись = &УчетнаяЗапись) КАК Настройки
	                      |		ПО Пользователи.Ссылка = Настройки.Пользователь
	                      |ГДЕ
	                      |	НЕ Пользователи.ПометкаУдаления
	                      |	И НЕ Пользователи.Недействителен
	                      |	И НЕ Пользователи.Служебный
	                      |	И Пользователи.ИдентификаторПользователяИБ <> &ПустойИдентификаторПользователяИБ
	                      |
	                      |УПОРЯДОЧИТЬ ПО
	                      |	Пользователи.Наименование");
	Запрос.УстановитьПараметр("УчетнаяЗапись", Справочники.УчетныеЗаписиДокументооборота.ПустаяСсылка());
	Запрос.УстановитьПараметр("ПустойИдентификаторПользователяИБ", Новый УникальныйИдентификатор("00000000-0000-0000-0000-000000000000"));
	Выборка = Запрос.Выполнить().Выбрать();
	ТекущийПользователь = Пользователи.ТекущийПользователь();
	Пока Выборка.Следующий() Цикл 
		Если Выборка.Пользователь = ТекущийПользователь Тогда 
			Картинка = БиблиотекаКартинок.Пользователь;
		Иначе 
			Картинка = Неопределено;
		КонецЕсли;
		СписокПользователей.Добавить(Выборка.Пользователь, Выборка.Пользователь.Наименование, Выборка.Пометка, Картинка);
	КонецЦикла;

	СтрокаПользователь = СписокПользователей.НайтиПоЗначению(ТекущийПользователь);
	Если СтрокаПользователь <> Неопределено Тогда 
		СтрокаПользователь.Пометка = Истина;
	КонецЕсли;

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

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

&НаКлиенте
Процедура УстановитьСнятьФлажки(Пометка)
	Для Каждого Пользователь Из СписокПользователей Цикл
		Пользователь.Пометка = Пометка;
	КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Отмена(Команда)
	ЗаписатьПользователейУчетныхЗаписейДокументооборота();
	Закрыть();
КонецПроцедуры

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

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