Документооборот с контролирующими органами / Выбор организации обмена / Модуль формы

файл

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

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

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

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

&НаКлиенте
Процедура ОрганизацииВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
	
	ПроизвестиВыбор(ВыбраннаяСтрока);
	
КонецПроцедуры

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

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

&НаКлиенте
Процедура Выбрать(Команда)
	
	ПроизвестиВыбор();
	
КонецПроцедуры

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

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

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

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

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

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

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

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

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

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