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

#Область СлужебныеПроцедурыИФункции

// Возвращает варианты типов домов (по признаку владения).
Функция ВариантыДанныхДом() Экспорт
	
	Результат = Обработки.РасширенныйВводКонтактнойИнформации.ВариантыДанныхДом();
	
	Возврат Новый ФиксированнаяСтруктура(Результат);
	
КонецФункции

// Возвращает варианты типов домов (по признаку строения).
Функция ВариантыДанныхСтроение() Экспорт
	
	Результат = Обработки.РасширенныйВводКонтактнойИнформации.ВариантыДанныхСтроение();
	
	Возврат Новый ФиксированнаяСтруктура(Результат);
		
КонецФункции

// Возвращает варианты типов помещений.
Функция ВариантыДанныхПомещение() Экспорт
	
	Результат = Обработки.РасширенныйВводКонтактнойИнформации.ВариантыДанныхПомещение();
	
	Возврат Новый ФиксированнаяСтруктура(Результат);
	
КонецФункции

// Общероссийский классификатор стран мира

// Возвращает полные данные ОКСМ классификатора.
// Таблица значений в макете проиндексирована по полям "Код", "Наименование".
//
// Возвращаемое значение:
//     ТаблицаЗначений - данные классификатора с колонками:
//         * Код                - Строка - данные страны.
//         * Наименование       - Строка - данные страны.
//         * НаименованиеПолное - Строка - данные страны.
//         * КодАльфа2          - Строка - данные страны.
//         * КодАльфа3          - Строка - данные страны.
//
Функция СтраныМира() Экспорт
	
	Классификатор = Неопределено;
	
	Если ОбщегоНазначения.ПодсистемаСуществует("ИнтернетПоддержкаПользователей.РаботаСКлассификаторами") Тогда
		
		ИдентификаторКлассификатора = РаботаСАдресами.ИдентификаторКлассификатора();
		
		МодульРаботаСКлассификаторами = ОбщегоНазначения.ОбщийМодуль("РаботаСКлассификаторами");
		Идентификаторы = ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве(ИдентификаторКлассификатора);
		Результат = МодульРаботаСКлассификаторами.ПолучитьФайлыКлассификаторов(Идентификаторы);
		
		Если ПустаяСтрока(Результат.КодОшибки) И Результат.ДанныеКлассификаторов <> Неопределено Тогда
			
			ОписаниеКлассификатора = Результат.ДанныеКлассификаторов.Найти(ИдентификаторКлассификатора, "Идентификатор");
			Если ОписаниеКлассификатора <> Неопределено Тогда
				Классификатор = ПолучитьИзВременногоХранилища(ОписаниеКлассификатора.АдресФайла);
			КонецЕсли;
			
		КонецЕсли;
	КонецЕсли;
	
	Если Классификатор = Неопределено Тогда
		
		Макет = Справочники.СтраныМира.ПолучитьМакет("Классификатор");
		КлассификаторXML = Макет.ПолучитьТекст();
		
	Иначе
		
		НаборСтрок = Новый Массив;
		ЧтениеЧасти = Новый ЧтениеДанных(Классификатор.ОткрытьПотокДляЧтения());
		
		Пока Не ЧтениеЧасти.ЧтениеЗавершено Цикл
			НаборСтрок.Добавить(ЧтениеЧасти.ПрочитатьСтроку());
		КонецЦикла;
		
		КлассификаторXML = СтрСоединить(НаборСтрок, ЧтениеЧасти.РазделительСтрок);
	КонецЕсли;
	
	Чтение = Новый ЧтениеXML;
	Чтение.УстановитьСтроку(КлассификаторXML);
	ТаблицаСтран = СериализаторXDTO.ПрочитатьXML(Чтение); // ТаблицаЗначений
	
	// Старые версии классификаторов не содержат колонку МеждународноеНаименование
	Если ТаблицаСтран.Колонки.Найти("МеждународноеНаименование") = Неопределено Тогда
		ТаблицаСтран.Колонки.Добавить("МеждународноеНаименование", ОбщегоНазначения.ОписаниеТипаСтрока(100));
	КонецЕсли;
	
	Возврат Новый ФиксированнаяСтруктура("СтраныМира", ТаблицаСтран);
	
КонецФункции


#КонецОбласти