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