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