//ирПортативный Перем ирПортативный Экспорт;
//ирПортативный Перем ирОбщий Экспорт;
//ирПортативный Перем ирСервер Экспорт;
//ирПортативный Перем ирКэш Экспорт;
//ирПортативный Перем ирКлиент Экспорт;

#Если Клиент Тогда
	
Перем мПлатформа Экспорт;
Перем мРежимыЗапускаПриложения;
Перем мРазрядностиПриложения;

Функция ОткрытьВыборВерсииПлатформы(Знач НачальноеЗначение = "", Знач ИмяКлюча = "СборкаПлатформы") Экспорт
	ОбновитьДоступныеПлатформы();
	//! СборкиПлатформы.ВыгрузитьКолонку(ИмяКлюча);
	ТаблицаВерсий = СборкиПлатформы.Выгрузить(, ИмяКлюча + ", Application, CApplication, Каталог");
	ТекущаяСтрока = ТаблицаВерсий.Найти(НачальноеЗначение, ИмяКлюча);
	Заголовок = "Версии платформы";
	РезультатВыбора = ирКлиент.ОткрытьТаблицуЗначенийЛкс(ТаблицаВерсий, ТекущаяСтрока,, Заголовок, Истина,,, Заголовок, ИмяКлюча);
	Возврат РезультатВыбора; // см. ТекущаяСтрока
КонецФункции

Процедура ОбновитьДоступныеПлатформы(Знач Принудительно = Ложь) Экспорт
	Если Не Принудительно И СборкиПлатформы.Количество() Тогда
		Возврат;
	КонецЕсли;
	ОбработкаРегистрации = ирОбщий.СоздатьОбъектПоИмениМетаданныхЛкс("Обработка.ирУправлениеCOMКлассами1С");
	ТипыCOMКлассов = ОбработкаРегистрации.ЗаполнитьТипыCOMКлассов();
	ТипыКомпонент = ТипыCOMКлассов.Скопировать(Новый Структура("Имя", "Application"));
	ирОбщий.ЗагрузитьВТаблицуЗначенийЛкс(ТипыCOMКлассов.Скопировать(Новый Структура("Имя", "CApplication")), ТипыКомпонент);
	ирОбщий.ЗаполнитьДоступныеСборкиПлатформыЛкс(ЭтотОбъект.СборкиПлатформы, ТипыКомпонент,, КаталогиПоискаПлатформы.ВыгрузитьКолонку("Каталог"));
КонецПроцедуры

Функция РежимыЗапускаПриложения() Экспорт
	Если мРежимыЗапускаПриложения = Неопределено Тогда
		мРежимыЗапускаПриложения = ирОбщий.ТаблицаЗначенийИзТабличногоДокументаЛкс(ПолучитьМакет("РежимыЗапускаПриложения"));
		мРежимыЗапускаПриложения.Колонки.Добавить("НВнутр");
		ирОбщий.ОбновитьКопиюКолонкиВНижнемРегистреЛкс(мРежимыЗапускаПриложения, "Внутр");
	КонецЕсли;
	Возврат мРежимыЗапускаПриложения;
КонецФункции

Функция РазрядностиПриложения() Экспорт
	Если мРазрядностиПриложения = Неопределено Тогда
		мРазрядностиПриложения = ирОбщий.ТаблицаЗначенийИзТабличногоДокументаЛкс(ПолучитьМакет("РазрядностиПриложения"));
		//мРазрядностиПриложения.Колонки.Добавить("НВнутр");
		//ирОбщий.ОбновитьКопиюКолонкиВНижнемРегистреЛкс(мРазрядностиПриложения, "Внутр");
	КонецЕсли;
	Возврат мРазрядностиПриложения;
КонецФункции 

Функция ИмяБазовогоФайлаПортативного(Знач ВыбранныйКаталог = "") Экспорт
	Если ПустаяСтрока(ВыбранныйКаталог) Тогда
		ВыбранныйКаталог = КаталогПортативныхИнструментов;
	КонецЕсли;
	Файл = Новый Файл(ВыбранныйКаталог + ирОбщий.РазделительПутиКФайлуЛкс() + "ирПортативный.epf");
	Возврат Файл;
КонецФункции

#КонецЕсли

//ирПортативный лФайл = Новый Файл(ИспользуемоеИмяФайла);
//ирПортативный ПолноеИмяФайлаБазовогоМодуля = Лев(лФайл.Путь, СтрДлина(лФайл.Путь) - СтрДлина("Модули\")) + "ирПортативный.epf";
//ирПортативный #Если Клиент Тогда
//ирПортативный 	Контейнер = Новый Структура();
//ирПортативный 	Оповестить("ирПолучитьБазовуюФорму", Контейнер);
//ирПортативный 	Если Не Контейнер.Свойство("ирПортативный", ирПортативный) Тогда
//ирПортативный 		ирПортативный = ВнешниеОбработки.ПолучитьФорму(ПолноеИмяФайлаБазовогоМодуля);
//ирПортативный 		ирПортативный.Открыть();
//ирПортативный 	КонецЕсли; 
//ирПортативный #Иначе
//ирПортативный 	ирПортативный = ВнешниеОбработки.Создать(ПолноеИмяФайлаБазовогоМодуля, Ложь); // Это будет второй экземпляр объекта
//ирПортативный #КонецЕсли
//ирПортативный ирОбщий = ирПортативный.ОбщийМодульЛкс("ирОбщий");
//ирПортативный ирКэш = ирПортативный.ОбщийМодульЛкс("ирКэш");
//ирПортативный ирСервер = ирПортативный.ОбщийМодульЛкс("ирСервер");
//ирПортативный ирКлиент = ирПортативный.ОбщийМодульЛкс("ирКлиент");

мПлатформа = ирКэш.Получить();