СокращенияАдресныхОбъектов (БСП)

Автор: 1С
ОбщийМодуль.АдресныйКлассификаторСлужебный
БСП

Сокращения адресных объектов. Возвращает соответствие полных наименований адресных объектов и их сокращения.

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

///////////////////////////////////////////////////////////////////////////////////////////////////////
// Copyright (c) 2019, ООО 1С-Софт
// Все права защищены. Эта программа и сопроводительные материалы предоставляются 
// в соответствии с условиями лицензии Attribution 4.0 International (CC BY 4.0)
// Текст лицензии доступен по ссылке:
// https://creativecommons.org/licenses/by/4.0/legalcode
///////////////////////////////////////////////////////////////////////////////////////////////////////

Рекомендации

Похожие публикации

ПолноеНаименованиеАдресногоСокращения (БСП)

СокращенияОбъектовАдресацииАдресаРФ (БСП)

АктуальныеАдресныеСведения (БСП)

АдресныеОбъектыУровня (БСП)

СписокДомов (БСП)

ЕстьСписокДомов (БСП)

ПредставлениеУровняБезСокращения (БСП)

ИдентификаторыАдреса (БСП)

Обновлятор-1С: групповое (пакетное) обновление и обслуживание всех баз за один раз