
Процедура КоманднаяПанельКлассыОбновить(Кнопка)
	
	ОбновитьДанные();
	
КонецПроцедуры

Процедура ДействияФормыПрименить(Кнопка)
	
	Если ВыполнитьРегистрацию() Тогда 
		ОбновитьДанные(Ложь);
	КонецЕсли; 
	
КонецПроцедуры

Процедура КомпьютерПриИзменении(Элемент)
	
	ирКлиент.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, ЭтаФорма);
	ОбновитьДанные();
	
КонецПроцедуры

Процедура КомпьютерНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)

	ирОбщий.ПолеВводаСИсториейВыбора_ОбновитьСписокЛкс(Элемент, ЭтаФорма);
	
КонецПроцедуры

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

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

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

Процедура ПриОткрытии()
	
	ирКлиент.Форма_ПриОткрытииЛкс(ЭтаФорма);
	ЭтотОбъект.ПроверочнаяСтрокаСоединения = ПроверочнаяСтрокаСоединенияПоУмолчанию();
	ЗаполнитьТипыCOMКлассов();
	КоманднаяПанельСборкиПлатформыОбновить();
	ОбновитьТаблицуКлассов();
	ЭтаФорма.ОтАдминистратора = ирОбщий.ВКОбщаяЛкс().IsAdmin();
	Если ЗначениеЗаполнено(ПараметрТипКласса) Тогда
		ТипКласса = ТипыComКлассов.Найти(ПараметрТипКласса, "Имя");
		КлючПоиска = Новый Структура;
		КлючПоиска.Вставить("ИмяКласса", "V" + ирКэш.НомерИзданияПлатформыЛкс() + ТипКласса.ИмяКлассаПослеV8);
		КлючПоиска.Вставить("x64", x64Текущая);
		Найденые = Классы.НайтиСтроки(КлючПоиска);
		Если Найденые.Количество() > 0 Тогда
			ЭлементыФормы.Классы.ТекущаяСтрока = Найденые[0];
			ЭлементыФормы.Классы.ТекущаяКолонка = ЭлементыФормы.Классы.Колонки.НовыйСборкаПлатформы;
		КонецЕсли; 
	КонецЕсли; 
	ЭлементыФормы.ПриложениеПользовательОС.СписокВыбора.Вставить(0, ирКэш.ТекущийПользовательОСЛкс());
	
КонецПроцедуры

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

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

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

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

Процедура КлассыНовыйСборкаПлатформыПриИзменении(Элемент)
	
	ЭтаФорма.Модифицированность = Истина;
	
КонецПроцедуры

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

Процедура ДействияФормыФайлВключенияОтладки(Кнопка)
	#Если Сервер И Не Сервер Тогда
		мПлатформа = Обработки.ирПлатформа.Создать();
	#КонецЕсли
	#Если Не ТонкийКлиент И Не ВебКлиент Тогда
		Каталог = ирОбщий.КаталогНастроекПриложения1СЛкс();
	#Иначе
		Каталог = "";
	#КонецЕсли 
	ИмяФайла = ирКлиент.ВыбратьФайлЛкс(Ложь, "xml",,, Каталог, "comcntrcfg.xml");
	Если Не ЗначениеЗаполнено(ИмяФайла) Тогда
		Возврат;
	КонецЕсли; 
	ИмяВременногоФайла = ПолучитьИмяВременногоФайла("xml");
	ТекстовыйДокумент = Новый ТекстовыйДокумент;
	Протокол = "";
	АдресОтладчика = мПлатформа.ПортДляПодключенияОтладчика(, Протокол);
	Если ирОбщий.СтрокиРавныЛкс(Протокол, "http") Тогда 
		ТекстовыйДокумент.УстановитьТекст("
		|<config xmlns=""http://v8.1c.ru/v8/comcntrcfg"">
		|    <debugconfig debug=""true"" protocol=""http"" debuggerURL=""" + АдресОтладчика + """/>
		|</config>"
		);
	Иначе
		ТекстовыйДокумент.УстановитьТекст("
		|<config xmlns=""http://v8.1c.ru/v8/comcntrcfg"">
		|    <debugconfig debug=""true"" protocol=""tcp""/>
		|    <debugconfig debug=""true"" protocol=""http"" debuggerURL=""http://host:port""/>
		|</config>"
		);
		Предупреждение("Сейчас откроется файл настроек. Отредактируйте его, оставив в нем только один элемент ""debugconfig"" и указав адрес сервера отладки, если протокол - http");
	КонецЕсли;
	ТекстовыйДокумент.Записать(ИмяВременногоФайла, КодировкаТекста.ANSI);
	мПлатформа.ПереместитьФайлКакАдминистратор(ИмяВременногоФайла, ИмяФайла);
	ЗапуститьПриложение(ИмяФайла);
	
КонецПроцедуры

Процедура КоманднаяПанельСборкиПлатформыЗапуститьТолстый(Кнопка)
	
	ТекущаяСтрока = ЭлементыФормы.СборкиПлатформы.ТекущаяСтрока;
	#Если Сервер И Не Сервер Тогда
	    ТекущаяСтрока = СборкиПлатформы.Добавить();
	#КонецЕсли
	Если ТекущаяСтрока = Неопределено Или Не ТекущаяСтрока.Application Тогда
		Возврат;
	КонецЕсли; 
	ЗапуститьПриложение(ТекущаяСтрока.Каталог + "bin\1cv8.exe");
	
КонецПроцедуры

Процедура КоманднаяПанельСборкиПлатформыЗапуститьТонкий(Кнопка)
	
	ТекущаяСтрока = ЭлементыФормы.СборкиПлатформы.ТекущаяСтрока;
	#Если Сервер И Не Сервер Тогда
	    ТекущаяСтрока = СборкиПлатформы.Добавить();
	#КонецЕсли
	Если ТекущаяСтрока = Неопределено Или Не ТекущаяСтрока.CApplication Тогда
		Возврат;
	КонецЕсли; 
	ЗапуститьПриложение(ТекущаяСтрока.Каталог + "bin\1cv8c.exe");

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

Процедура КоманднаяПанельКлассыЗапуститьОтАдминистратора(Кнопка)
	
	ирОбщий.ПерезапуститьСеансОтИмениАдминистратораОСЛкс(ЭтаФорма);
	
КонецПроцедуры

Процедура КоманднаяПанельСборкиПлатформыОбновить(Кнопка = Неопределено)
	
	ирОбщий.ЗаполнитьДоступныеСборкиПлатформыЛкс(СборкиПлатформы,, ТипыComКлассов, ЭлементыФормы.СборкиПлатформы);
	
КонецПроцедуры

Процедура КоманднаяПанельКлассыПроверитьРаботуОбъектов(Кнопка)
	
	ИменаКлассов = ирОбщий.РазличныеЗначенияКолонкиТаблицыЛкс(Классы, "ИмяКласса", Новый Структура("Зарегистрирован", Истина));
	Индикатор = ирОбщий.ПолучитьИндикаторПроцессаЛкс(ИменаКлассов.Количество());
	Для Каждого ИмяКласса Из ИменаКлассов Цикл
		ирОбщий.ОбработатьИндикаторЛкс(Индикатор);
		ОтборКлассов = Новый Структура("ИмяКласса, x64", ИмяКласса, x64Текущая);
		СтрокаПриложения = Приложения.Найти(ИмяКласса, "ИмяКласса");
		Если СтрокаПриложения <> Неопределено Тогда
			ОтборКлассов.x64 = СтрокаПриложения.x64;
		КонецЕсли; 
		СтрокиКлассов = Классы.НайтиСтроки(ОтборКлассов);
		СтрокаКласса = СтрокиКлассов[0];
		Если СтрокаКласса.ТипКласса = "ServerAdminScope" Тогда
			// Антибаг платформы 8.3 https://www.hostedredmine.com/issues/931401
			Продолжить;
		КонецЕсли; 
		СтрокаКласса.ПроверкаСоздания = "";
		СтрокаКласса.ПроверкаПодключения = "";
		ТипКласса = ТипыComКлассов.Найти(СтрокаКласса.ТипКласса, "Имя");
		Попытка
			ПроверочныйОбъект = Новый COMОбъект(СтрокаКласса.ИмяКласса);
			СтрокаКласса.ПроверкаСоздания = "ОК";
			Если СтрЗаменить(СтрокаКласса.ИзданиеПлатформы, ".", "") <> ирКэш.НомерИзданияПлатформыЛкс() Тогда
				Продолжить;
			КонецЕсли; 
			//Если СтрокаКласса.СборкаПлатформы <> ТекущаяСборкаПлатформы Тогда
			//	ВызватьИсключение "Ошибка. Зарегистрированная в COM сборка платформы отличается от текущей";
			//КонецЕсли;
			
			// https://www.hostedredmine.com/issues/908123
			ПроверочныйОбъект.Connect(ПроверочнаяСтрокаСоединения);
			СтрокаКласса.ПроверкаПодключения = "ОК";
			Если Не ТипКласса.Внутрипроцессный Тогда
				Попытка
					ПроверочныйОбъект.ЗавершитьРаботуСистемы(Ложь, Ложь);
				Исключение
				КонецПопытки;
			КонецЕсли; 
		Исключение
			ОписаниеОшибки = ОписаниеОшибки();
			Если Не ЗначениеЗаполнено(СтрокаКласса.ПроверкаСоздания) Тогда
				СтрокаКласса.ПроверкаСоздания = Сред(ОписаниеОшибки, Найти(ОписаниеОшибки, "}:") + 3);
			ИначеЕсли Не ЗначениеЗаполнено(СтрокаКласса.ПроверкаПодключения) Тогда
				СтрокаКласса.ПроверкаПодключения = Сред(ОписаниеОшибки, Найти(ОписаниеОшибки, "}:") + 3);
			КонецЕсли; 
		КонецПопытки; 
		ЭлементыФормы.Классы.ОбновитьСтроки(СтрокаКласса);
	КонецЦикла;
	ирОбщий.ОсвободитьИндикаторПроцессаЛкс();
	
КонецПроцедуры

Процедура СборкиПлатформыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	
	ОткрытьСборкуПлатформыВПроводнике();

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

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

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

Процедура КлассыВыбор(Элемент, ВыбраннаяСтрока, Колонка, СтандартнаяОбработка)
	
	Если Колонка = Элемент.Колонки.ИмяФайла Тогда
		ирКлиент.ОткрытьФайлВПроводникеЛкс(ВыбраннаяСтрока.ИмяФайла);
	ИначеЕсли Колонка = Элемент.Колонки.ИмяКласса Тогда
		СтрокаПриложения = Приложения.НайтиСтроки(Новый Структура("ИмяКласса, x64", ВыбраннаяСтрока.ИмяКласса, ВыбраннаяСтрока.x64));
		Если СтрокаПриложения.Количество() > 0 Тогда
			ЭлементыФормы.Приложения.ТекущаяСтрока = СтрокаПриложения[0];
		КонецЕсли; 
	КонецЕсли;
	
КонецПроцедуры

Процедура ОбработкаОповещения(ИмяСобытия, Параметр, Источник) Экспорт
	
	ирКлиент.Форма_ОбработкаОповещенияЛкс(ЭтаФорма, ИмяСобытия, Параметр, Источник); 
	
КонецПроцедуры

Процедура КлассыПриАктивизацииСтроки(Элемент)
	
	ирКлиент.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
	ЭтаФорма.ОписаниеКласса = "";
	Если Элемент.ТекущаяСтрока = Неопределено Тогда
		Возврат;
	КонецЕсли; 
	ЭтаФорма.ОписаниеКласса = ТипыComКлассов.Найти(Элемент.ТекущаяСтрока.ТипКласса, "Имя").Описание;
	ЭлементыФормы.Классы.Колонки.НовыйСборкаПлатформыПользователь.ТолькоПросмотр = Истина
		И Элемент.ТекущаяСтрока.ТипКласса <> "ServerAdminScope"
		И Элемент.ТекущаяСтрока.ТипКласса <> "Application"
		И Элемент.ТекущаяСтрока.ТипКласса <> "CApplication";
	
КонецПроцедуры

Процедура СборкиПлатформыПриАктивизацииСтроки(Элемент)
	
	ирКлиент.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);

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

Процедура СборкиПлатформыПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Экспорт
	
	ирКлиент.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
	Если ДанныеСтроки.СборкаПлатформы = ТекущаяСборкаПлатформы Тогда
		ОформлениеСтроки.ЦветТекста = WebЦвета.Синий;
	КонецЕсли; 

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

Процедура КлсКомандаНажатие(Кнопка) Экспорт 
	
	ирКлиент.УниверсальнаяКомандаФормыЛкс(ЭтаФорма, Кнопка);
	
КонецПроцедуры

Процедура ВнешнееСобытие(Источник, Событие, Данные) Экспорт
	
	ирКлиент.Форма_ВнешнееСобытиеЛкс(ЭтаФорма, Источник, Событие, Данные);

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

Процедура ТабличноеПолеПриПолученииДанных(Элемент, ОформленияСтрок) Экспорт 
	
	ирКлиент.ТабличноеПолеПриПолученииДанныхЛкс(ЭтаФорма, Элемент, ОформленияСтрок);

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

Процедура ПриЗакрытии()
	
	ирКлиент.Форма_ПриЗакрытииЛкс(ЭтаФорма);

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

Процедура КоманднаяПанельСборкиПлатформыУстановитьВНовую(Кнопка)
	
	ТекущаяСтрока = ЭлементыФормы.СборкиПлатформы.ТекущаяСтрока;
	Если ТекущаяСтрока = Неопределено Или Не ТекущаяСтрока.ФайлыСуществуют Тогда
		Возврат;
	КонецЕсли; 
	УстановитьНовыеСборкиПоСтрокеДоступнойСборки(ТекущаяСтрока);
	
КонецПроцедуры

Процедура УстановитьНовыеСборкиПоСтрокеДоступнойСборки(Знач ТекущаяСтрока)
	
	Для Каждого ТипКласса Из ТипыComКлассов Цикл
		Если ТекущаяСтрока[ТипКласса.Имя] Тогда
			Отбор = Новый Структура("ИзданиеПлатформы, X64, ТипКласса");
			ЗаполнитьЗначенияСвойств(Отбор, ТекущаяСтрока);
			Отбор.ТипКласса = ТипКласса.Имя;
			Классы.НайтиСтроки(Отбор)[0].НовыйСборкаПлатформы = ТекущаяСтрока.СборкаПлатформы;
		КонецЕсли; 
	КонецЦикла;

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

Процедура КоманднаяПанельСборкиПлатформыОткрытьКаталогВПроводнике(Кнопка)
	
	ОткрытьСборкуПлатформыВПроводнике();

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

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

Процедура ДействияФормыОткрытьСтатью(Кнопка)
	ЗапуститьПриложение("https://infostart.ru/1c/articles/387577/");
КонецПроцедуры

Процедура ДействияФормыКодыОшибок(Кнопка)
	
	ЗапуститьПриложение("http://msdn.microsoft.com/en-us/library/windows/desktop/dd542647%28v=vs.85%29.aspx");
	
КонецПроцедуры

Процедура ПроверочнаяСтрокаСоединенияПриИзменении(Элемент)
	СтрокаСоедиенияСохраняемая = ПроверочнаяСтрокаСоединения;
	Пароль = ирОбщий.ТекстМеждуМаркерамиЛкс(СтрокаСоедиенияСохраняемая, "Pwd=", ";", Ложь, Истина);
	СтрокаСоедиенияСохраняемая = СтрЗаменить(СтрокаСоедиенияСохраняемая, Пароль, "Pwd=;");
	ирКлиент.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, ЭтаФорма,,,, СтрокаСоедиенияСохраняемая);
КонецПроцедуры

Процедура ПроверочнаяСтрокаСоединенияНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
	ирОбщий.ПолеВводаСИсториейВыбора_ОбновитьСписокЛкс(Элемент, ЭтаФорма);
КонецПроцедуры

Процедура ПроверочнаяСтрокаСоединенияОчистка(Элемент, СтандартнаяОбработка)
	СтандартнаяОбработка = Ложь;
	ЭтаФорма.ПроверочнаяСтрокаСоединения = ПроверочнаяСтрокаСоединенияПоУмолчанию();
КонецПроцедуры

Функция ПроверочнаяСтрокаСоединенияПоУмолчанию()
	
	Возврат СтрокаСоединенияИнформационнойБазы() + "Usr=""" + ИмяПользователя() + """;Pwd="""";";

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

Процедура КоманднаяПанельКлассыКонсольКода(Кнопка)
	Текст = 
	"ПроверочныйОбъект = Новый COMОбъект(""" + ЭлементыФормы.Классы.ТекущаяСтрока.ИмяКласса + """);
	|Результат = ПроверочныйОбъект.Connect(ПроверочнаяСтрокаСоединения);";
	ПараметрыКода = Новый Структура("ПроверочнаяСтрокаСоединения", ПроверочнаяСтрокаСоединения);
	ирОбщий.ОперироватьСтруктуройЛкс(Текст,, ПараметрыКода);

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

Процедура КоманднаяПанельКлассыУстановитьНовойИспользуемую(Кнопка)
	
	Отбор = Новый Структура("СборкаПлатформы, X64");
	Отбор.x64 = x64Текущая;
	Отбор.СборкаПлатформы = ТекущаяСборкаПлатформы;
	УстановитьНовыеСборкиПоСтрокеДоступнойСборки(СборкиПлатформы.НайтиСтроки(Отбор)[0]);
	
КонецПроцедуры

Функция ТекущееИзданиеПлатформы()
	
	Возврат Лев(ирКэш.НомерИзданияПлатформыЛкс(), 1) + "." + Сред(ирКэш.НомерИзданияПлатформыЛкс(), 2);

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

Процедура ПриложенияПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Экспорт
	
	ОформлениеСтроки.Ячейки.ГруппаCOMПлюс.Видимость = Ложь;
	Если Истина
		И ДанныеСтроки.ОтдельнаяАктивация
		И ДанныеСтроки.ИмяПользователя = "Interactive User"
	Тогда
		ОформлениеСтроки.Ячейки.ИмяПользователя.ЦветФона = ирОбщий.ЦветФонаОшибкиЛкс();
	КонецЕсли; 
	Если СтрЗаменить(ДанныеСтроки.ИзданиеПлатформы, ".", "") = ирКэш.НомерИзданияПлатформыЛкс() Тогда 
		Если ДанныеСтроки.СборкаПлатформы = ТекущаяСборкаПлатформы Тогда
			ОформлениеСтроки.Ячейки.СборкаПлатформы.ЦветТекста = WebЦвета.Синий;
		Иначе
			ОформлениеСтроки.Ячейки.СборкаПлатформы.ЦветТекста = WebЦвета.Красный;
		КонецЕсли; 
	КонецЕсли; 
	ОформлениеСтроки.Ячейки.ИзданиеПлатформы.ТолькоПросмотр = Не ДанныеСтроки.Добавленный;
	ОформлениеСтроки.Ячейки.ИмяКласса.ТолькоПросмотр = Не ДанныеСтроки.Добавленный;
	ОформлениеСтроки.Ячейки.СборкаПлатформы.ТолькоПросмотр = Не ДанныеСтроки.Добавленный;
	ОформлениеСтроки.Ячейки.ОтдельнаяАктивация.ТолькоПросмотр = ДанныеСтроки.Добавленный;
	ОформлениеСтроки.Ячейки.СборкаПлатформы.ОтметкаНезаполненного = ДанныеСтроки.Добавленный И Не ЗначениеЗаполнено(ДанныеСтроки.СборкаПлатформы);
	ирКлиент.ТабличноеПолеПриВыводеСтрокиЛкс(ЭтаФорма, Элемент, ОформлениеСтроки, ДанныеСтроки);
	
КонецПроцедуры

Процедура ПриложенияПриАктивизацииСтроки(Элемент)
	
	ирКлиент.ТабличноеПолеПриАктивизацииСтрокиЛкс(ЭтаФорма, Элемент);
	
КонецПроцедуры

Процедура ПриложениеПользовательОСНачалоВыбора(Элемент, СтандартнаяОбработка)
	
	ирКлиент.ПолеВводаПользователяОСНачалоВыбораЛкс(Элемент, СтандартнаяОбработка, Ложь);

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

Процедура ПриложенияПриИзмененииФлажка(Элемент, Колонка)
	
	ирКлиент.ТабличноеПолеПриИзмененииФлажкаЛкс(ЭтаФорма, Элемент, Колонка);
	ЭтаФорма.Модифицированность = Истина;
	
КонецПроцедуры

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

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

Процедура ПриложенияСоздатьПриИзменении(Элемент)
	
	Если Элемент.Значение Тогда
		ЭлементыФормы.Приложения.ТекущаяСтрока.ОтдельнаяАктивация = Истина;
	КонецЕсли; 
	
КонецПроцедуры

Процедура ДействияФормыДействие(Кнопка)
	
	ирОбщий.ВыполнитьКомандуОСЛкс("comexp.msc",,, Истина);
	
КонецПроцедуры

Процедура ПриложенияСборкаПлатформыНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка)
	
	ТекущаяСтрока = ЭлементыФормы.Приложения.ТекущаяСтрока;
	ЭлементыФормы.Приложения.Колонки.СборкаПлатформы.ЭлементУправления.СписокВыбора = СписокВыбораСборкиПлатформы(Истина, ТекущаяСтрока.ИзданиеПлатформы, "ComConnector", ТекущаяСтрока.x64);

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

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

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

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

Процедура ПриложенияПередУдалением(Элемент, Отказ)
	Отказ = Истина;
КонецПроцедуры

Процедура ПриложенияПередНачаломДобавления(Элемент, Отказ, Копирование)
	Если Не Копирование Тогда
		Отказ = Истина;
	КонецЕсли; 
КонецПроцедуры

Процедура ПередОткрытием(Отказ, СтандартнаяОбработка)
	
	ирОбщий.ПроверитьПлатформаНеWindowsЛкс(Отказ);

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

ирКлиент.ИнициироватьФормуЛкс(ЭтаФорма, "Обработка.ирУправлениеCOMКлассами1С.Форма.Форма");
