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