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

Процедура ЗаполнитьСписокПользователей() Экспорт

	ПользователиИБ.Очистить();
	СписокПользователей = ПользователиИнформационнойБазы.ПолучитьПользователей();
	Для Каждого ТекПользователь Из СписокПользователей Цикл
		СтрокаПользователя = ПользователиИБ.Добавить();
		СтрокаПользователя.ИмяПользователя = ТекПользователь.Имя;
	КонецЦикла;
	ПользователиИБ.Сортировать("ИмяПользователя");
	
КонецПроцедуры

//////////////
//Талица форм

Процедура ДобавитьФормуВТаблицу(ПолноеИмяОбъекта, ПредставлениеОбъекта, ТипОбъекта, ВидОбъекта, КартинкаОбъекта)

	СтрокаФ = ФормыИБ.Добавить();
	СтрокаФ.ПолноеИмяОбъекта = ПолноеИмяОбъекта;
	СтрокаФ.ИмяОбъекта 	= ирОбщий.ПолучитьПоследнийФрагментЛкс(ПолноеИмяОбъекта); // Неоптимально
	СтрокаФ.ТипОбъекта	= ТипОбъекта;
	СтрокаФ.ВидОбъекта	= ВидОбъекта;
	СтрокаФ.ПредставлениеОбъекта = ПредставлениеОбъекта;

КонецПроцедуры

Функция КартинкаПоТипуОбъекта(ТипОбъекта) Экспорт

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

	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаГруппы", "Форма группы");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбораГруппы", "Форма выбора группы");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.Справочники, "Справочник", "Справочник", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("Форма", "Форма");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.КритерииОтбора, "КритерийОтбора", "Критерий отбора", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаСохранения", "Форма сохранения");
	ИменаСтандартныхФорм.Добавить("ФормаЗагрузки", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.ХранилищаНастроек, "ХранилищеНастроек", "Хранилище настроек", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.Документы, "Документ", "Документ", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("Форма", "Форма");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.ЖурналыДокументов, "ЖурналДокументов", "Журнал документов", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.Перечисления, "Перечисление", "Перечисление", ИменаСтандартныхФорм);

	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("Форма", "Форма");
	ИменаСтандартныхФорм.Добавить("ФормаНастроек", "Форма настроек");
	ИменаСтандартныхФорм.Добавить("ФормаВарианта", "Форма варианта");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.Отчеты, "Отчет", "Отчет", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("Форма", "Форма");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.Обработки, "Обработка", "Обработка", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаЗаписи", "Форма записи");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыСведений, "РегистрСведений", "Регистр сведений", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыНакопления, "РегистрНакопления", "Регистр накопления", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаГруппы", "Форма группы");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбораГруппы", "Форма выбора группы");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.ПланыВидовХарактеристик, "ПланВидовХарактеристик", "План видов характеристик", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.ПланыСчетов, "ПланСчетов", "План счетов", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыБухгалтерии, "РегистрБухгалтерии", "Регистр бухгалтерии", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.ПланыВидовРасчета, "ПланВидовРасчета", "План видов расчета", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.РегистрыРасчета, "РегистрРасчета", "Регистр расчета", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.БизнесПроцессы, "БизнесПроцесс", "Бизнес процесс", ИменаСтандартныхФорм);
	
	ИменаСтандартныхФорм = Новый СписокЗначений;
	ИменаСтандартныхФорм.Добавить("ФормаОбъекта", "Форма объекта");
	ИменаСтандартныхФорм.Добавить("ФормаСписка", "Форма списка");
	ИменаСтандартныхФорм.Добавить("ФормаДляВыбора", "Форма выбора");
	ПолучитьСписокФормОбъектаМетаданных(Метаданные.Задачи, "Задача", "Задача", ИменаСтандартныхФорм);
	
КонецПроцедуры

Процедура ПолучитьСписокФормОбъектаМетаданных(СписокОбъектовМетаданных, ИмяОбъектаМетаданных, ПредставлениеОбъектаМетаданных, ИменаСтандартныхФорм)
	
	Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(СписокОбъектовМетаданных.Количество(), ПредставлениеОбъектаМетаданных + ".Формы");
	Для Каждого Объект Из СписокОбъектовМетаданных Цикл
		ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
		Префикс = ИмяОбъектаМетаданных + "." + Объект.Имя;
		ПрефиксПредставления = ПредставлениеОбъектаМетаданных + "." + Объект.Синоним;
		ПолучитьСписокФормИзСпискаМетаданныхФорм(Префикс, ПрефиксПредставления, Объект.Формы, ИмяОбъектаМетаданных, Объект.Имя);
		Для Каждого ИмяСтандартнойФормы Из ИменаСтандартныхФорм Цикл
			ДобавитьСтандартнуюФорму(Префикс, ПрефиксПредставления, Объект, ИмяСтандартнойФормы.Значение, ИмяСтандартнойФормы.Представление, ИмяОбъектаМетаданных, Объект.Имя);
		КонецЦикла;
	КонецЦикла;
	ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
	
КонецПроцедуры

Процедура ПолучитьСписокФормИзСпискаМетаданныхФорм(Префикс, ПрефиксПредставления, МетаданныеФорм, ИмяОбъектаМетаданных, ИмяВидаОбъекта)
	
	Для Каждого Форма Из МетаданныеФорм Цикл
		ДобавитьФормуВТаблицу(Префикс + ".Форма." + Форма.Имя, ПрефиксПредставления + "." + Форма.Синоним, ИмяОбъектаМетаданных, ИмяВидаОбъекта, КартинкаПоТипуОбъекта(ИмяОбъектаМетаданных));
	КонецЦикла;
	
КонецПроцедуры

Процедура ДобавитьСтандартнуюФорму(Префикс, ПрефиксПредставления, ОбъектМетаданных, ИмяОбъекта, ПредставлениеОбъекта, ИмяОбъектаМетаданных, ИмяВидаОбъекта)
	
	Если ОбъектМетаданных["Основная" + ИмяОбъекта] = Неопределено Тогда
		ДобавитьФормуВТаблицу(Префикс + "." + ИмяОбъекта, ПрефиксПредставления + "." + ПредставлениеОбъекта, ИмяОбъектаМетаданных, ИмяВидаОбъекта, КартинкаПоТипуОбъекта(ИмяОбъектаМетаданных));
	КонецЕсли;
	
КонецПроцедуры


//////////////

Функция ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела) Экспорт 

	Если ИмяРаздела = "ХранилищеСистемныхНастроек" Тогда
		Возврат ХранилищеСистемныхНастроек;
	ИначеЕсли ИмяРаздела = "ХранилищеОбщихНастроек" Тогда
		Возврат ХранилищеОбщихНастроек;
	ИначеЕсли ИмяРаздела = "ХранилищеНастроекДанныхФорм" Тогда
		Возврат ХранилищеНастроекДанныхФорм;
	ИначеЕсли ИмяРаздела = "ХранилищеВариантовОтчетов" Тогда
		Возврат ХранилищеВариантовОтчетов;
	ИначеЕсли ИмяРаздела = "ХранилищеПользовательскихНастроекОтчетов" Тогда
		Возврат ХранилищеПользовательскихНастроекОтчетов;
	Иначе
	    Возврат ХранилищаНастроек[ИмяРаздела];
	КонецЕсли;	

КонецФункции // ()

Процедура ПолучитьОписаниеНастроек(ПользователиНазначения, ФормыНазначения, ИмяРаздела) Экспорт

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

Функция ЗагрузитьНастройкиИзХранилища(Отбор, ФормыНазначения, ИмяРаздела)

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

КонецФункции

Процедура УдалитьНастройкиПользователей(ТабКУдалению, ИмяРаздела) Экспорт

	МенеджерХранилища = ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела);
	
	Для каждого Строка Из ТабКУдалению Цикл
		МенеджерХранилища.Удалить(Строка.КлючОбъекта, Строка.КлючНастроек, Строка.Пользователь);	
	КонецЦикла; 

КонецПроцедуры

Процедура СкопироватьНастройкиПользователей(ТабОписаний, ПользователиНазначения, ИмяРаздела) Экспорт

	МенеджерХранилища = ПолучитьМенеджерХранилищаПоИмени(ИмяРаздела);
	Для Каждого Строка Из ТабОписаний Цикл
		лОписаниеНастроек = Новый ОписаниеНастроек;
		Настройка = МенеджерХранилища.Загрузить(Строка.КлючОбъекта, Строка.КлючНастроек, лОписаниеНастроек, Строка.Пользователь);
		Если Настройка <> Неопределено Тогда
			Для Каждого ПользовательПриемник Из ПользователиНазначения Цикл
				МенеджерХранилища.Сохранить(Строка.КлючОбъекта, Строка.КлючНастроек, Настройка, лОписаниеНастроек, ПользовательПриемник);
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;	

КонецПроцедуры

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

КонецПроцедуры

Процедура ОткрытьЗнач(текЗначениеНастройки) Экспорт

	ТипЗначенияНастройки = ТипЗнч(текЗначениеНастройки);
	Если ТипЗначенияНастройки = Тип("Строка") Тогда
		ФормаПросмотраСтрок = ПолучитьФорму("СериализацияЗначения");
		ФормаПросмотраСтрок.ЗначениеНастройки = текЗначениеНастройки;
		ФормаПросмотраСтрок.НадписьТипНастройки = ТипЗначенияНастройки;
		ФормаПросмотраСтрок.Открыть();
	ИначеЕсли Ложь
		Или ТипЗначенияНастройки = Тип("Структура")
		Или ТипЗначенияНастройки = Тип("ФиксированнаяСтруктура")
		Или ТипЗначенияНастройки = Тип("Массив")
		Или ТипЗначенияНастройки = Тип("ФиксированныйМассив")
		Или ТипЗначенияНастройки = Тип("Соответствие")
		Или ТипЗначенияНастройки = Тип("СписокЗначений")
		Или ТипЗначенияНастройки = Тип("ТаблицаЗначений")
	Тогда
		ирОбщий.ИсследоватьЛкс(текЗначениеНастройки,, Истина);
	Иначе	
		ОткрытьАвто = Ложь;
		XMLТип = XMLТипЗнч(ТипЗначенияНастройки);
		Если Истина
			И XMLТип <> Неопределено
			И Найти(XMLТип.ИмяТипа, "Ref.") > 0
		Тогда
			ОткрытьЗначение(текЗначениеНастройки);
		Иначе
			ЗаписьXML = Новый ЗаписьXML();
			ЗаписьXML.УстановитьСтроку();
			ЗаписьXML.ЗаписатьНачалоЭлемента("details");
			Попытка
				СериализаторXDTO.ЗаписатьXML(ЗаписьXML, текЗначениеНастройки, "item");
			Исключение
				ирОбщий.ИсследоватьЛкс(текЗначениеНастройки);
				Возврат;
			КонецПопытки; 
			ЗаписьXML.ЗаписатьКонецЭлемента();
			XMLЗначНастройки = ЗаписьXML.Закрыть();
			ФормаПросмотраСтрок = ПолучитьФорму("СериализацияЗначения");
			ФормаПросмотраСтрок.XMLНастройки = XMLЗначНастройки;
			ФормаПросмотраСтрок.ЗначениеНастройки = текЗначениеНастройки;
			ФормаПросмотраСтрок.НадписьТипНастройки = ТипЗначенияНастройки;
			ФормаПросмотраСтрок.Открыть();
		КонецЕсли;
	КонецЕсли;

КонецПроцедуры

#КонецЕсли

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