Варианты автоподбора. Возвращает список для автоподбора элемента адреса, поиск по подобию.
// Возвращает список для автоподбора элемента адреса, поиск по подобию.
//
// Параметры:
// Текст - Строка - Текст, введенный в поле.
// Родитель - УникальныйИдентификатор - Родительский объект.
// Уровни - Массив, ФиксированныйМассив - Набор требуемых уровней данных. 1-7, 90, 91 - адресные
// объекты, -1 - ориентиры.
// ДополнительныеПараметры - Структура - Описание настройке поиска. Поля:
// * ТолькоВебСервис - Булево - Автоподбор только через веб-сервис.
// * ТипАдреса - Строка - Тип используемого классификатора.
//
// Возвращаемое значение:
// Структура - найденные варианты. Содержит поля:
// * Отказ - Булево - Поставщик не доступен.
// * ПодробноеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ
// = Ложь.
// * КраткоеПредставлениеОшибки - Строка - Описание ошибки, если поставщик недоступен. Неопределено, если Отказ
// = Ложь.
// * Данные - СписокЗначение - Содержит данные для выбора. Колонки:
// ** Представление - Строка - Представление варианта.
// ** Значение - Структура - с полями Идентификатор, Муниципальный, ЗагруженныеДанные.
//
Функция ВариантыАвтоподбора(Текст, ДополнительныеПараметры) Экспорт
Результат = Новый СписокЗначений;
КешПредставлений = Новый Соответствие;
ТолькоВебСервис = ДополнительныеПараметры.Свойство("ТолькоВебСервис") И ДополнительныеПараметры.ТолькоВебСервис;
ЗагруженныеАдресныеСведения = АдресныйКлассификаторПовтИсп.СведенияОЗагрузкеСубъектовРФ();
Если Не ТолькоВебСервис Тогда
ЗаполнитьСписокАвтоподбораЧастиАдресаВнутр(Результат, КешПредставлений, Текст, ДополнительныеПараметры, ЗагруженныеАдресныеСведения);
Если Результат.Количество() >= 20 Тогда
Возврат Результат;
КонецЕсли;
КонецЕсли;
// Веб сервис 1С
Если ЗагруженныеАдресныеСведения["КлассификаторДоступен"] = Истина Тогда
Родитель = Неопределено;
Если ДополнительныеПараметры.Свойство("Уровень") Тогда
Если ДополнительныеПараметры.Уровень > 1 Тогда
Родитель = ДополнительныеПараметры.Идентификатор;
КонецЕсли;
КонецЕсли;
// Адаптация текста под поиск
ЧастиАдреса = СтрРазделить(Текст, ",");
Если ЧастиАдреса.Количество() > 0 Тогда
Если СтроковыеФункцииКлиентСервер.ТолькоЦифрыВСтроке(СокрЛП(ЧастиАдреса[0])) Тогда
ЧастиАдреса.Удалить(0);
КонецЕсли;
ТекстПоиска = СокрЛП(СтрСоединить(ЧастиАдреса, ","));
ЗаполнитьСписокАвтоподбораЧастиАдресаСервис1С(Результат, КешПредставлений, ТекстПоиска, Родитель, 20, ДополнительныеПараметры);
КонецЕсли;
КонецЕсли;
Возврат Результат;
КонецФункции
///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////
ФорматированиеРезультатовАвтоподбора (БСП)
ЗаполнитьДанныеВыбораАвтоподбораПоСтранам (БСП)
ОбработкаПолученияДанныхВыбора (БСП)