Процедура КнопкаВыполнитьНажатие(Кнопка) Для Каждого Строка Из ТаблицаCOMКомпонент Цикл Если Не Строка.Установить Тогда Продолжить; КонецЕсли; ИмяКомпоненты = Строка.Идентификатор; ФайлКомпоненты = Новый Файл(КаталогУстановки + "\" + ИмяКомпоненты + ".dll"); ДвоичныеДанные = ирКэш.Получить().ПолучитьМакет(ИмяКомпоненты); Если ТипЗнч(ДвоичныеДанные) = Тип("ДвоичныеДанные") Тогда Попытка ДвоичныеДанные.Записать(ФайлКомпоненты.ПолноеИмя); Исключение Сообщить("Файл """ + ФайлКомпоненты.ПолноеИмя + """ недоступен для изменения и не был перезаписан.""", СтатусСообщения.Внимание); Продолжить; КонецПопытки; КонецЕсли; Если Не ФайлКомпоненты.Существует() Тогда Сообщить("Для компоненты " + ИмяКомпоненты + " не обнаружен файл """ + ФайлКомпоненты.ПолноеИмя + """. ", СтатусСообщения.Внимание); Продолжить; КонецЕсли; Если Не Строка.ВспомогательныйФайл Тогда Результат = ирКэш.Получить().ЗарегистрироватьПолучитьCOMОбъект(Строка.ProgID, ФайлКомпоненты.ПолноеИмя, Истина, Строка.ИмяТипаВК); КонецЕсли; КонецЦикла; ОбновитьТаблицу(); КонецПроцедуры Процедура ОбновитьТаблицу() ТаблицаCOMКомпонент.Очистить(); СтрокаКомпоненты = ТаблицаCOMКомпонент.Добавить(); СтрокаКомпоненты.Идентификатор = "FM20ENU"; СтрокаКомпоненты.ProgID = "Forms.TextBox.1"; СтрокаКомпоненты.ЗависящаяФункцияПодсистемы = "Форма списка слов контекстной подсказки и форма индекса синтакс-помощника"; СтрокаКомпоненты.ВспомогательныйФайл = Истина; СтрокаКомпоненты = ТаблицаCOMКомпонент.Добавить(); СтрокаКомпоненты.Идентификатор = "FM20"; СтрокаКомпоненты.ProgID = "Forms.TextBox.1"; СтрокаКомпоненты.ЗависящаяФункцияПодсистемы = "Форма списка слов контекстной подсказки и форма индекса синтакс-помощника"; СтрокаКомпоненты = ТаблицаCOMКомпонент.Добавить(); СтрокаКомпоненты.Идентификатор = "TLBINF32"; СтрокаКомпоненты.ProgID = "TLI.TLIApplication"; СтрокаКомпоненты.ЗависящаяФункцияПодсистемы = "Вычисление контекста COM объектов"; СтрокаКомпоненты = ТаблицаCOMКомпонент.Добавить(); СтрокаКомпоненты.Идентификатор = "GoldParser"; СтрокаКомпоненты.ProgID = "GOLDParserEngine.GOLDParser"; СтрокаКомпоненты.ЗависящаяФункцияПодсистемы = "Режим дерева запроса в консоли запросов и шаблоны текста"; СтрокаКомпоненты = ТаблицаCOMКомпонент.Добавить(); СтрокаКомпоненты.Идентификатор = "Zlib1"; СтрокаКомпоненты.ProgID = "GameWithFire.ADOUtils"; СтрокаКомпоненты.ЗависящаяФункцияПодсистемы = "Преобразование ADODB.RecordSet в результата запроса и быстрая выгрузка ADODB.RecordSet в таблицу значений"; СтрокаКомпоненты.ИмяТипаВК = "ADOUtils"; СтрокаКомпоненты.ВспомогательныйФайл = Истина; СтрокаКомпоненты = ТаблицаCOMКомпонент.Добавить(); СтрокаКомпоненты.Идентификатор = "GameWithFire"; СтрокаКомпоненты.ProgID = "GameWithFire.ADOUtils"; СтрокаКомпоненты.ЗависящаяФункцияПодсистемы = "Преобразование ADODB.RecordSet в результата запроса и быстрая выгрузка ADODB.RecordSet в таблицу значений"; СтрокаКомпоненты.ИмяТипаВК = "ADOUtils"; Для Каждого Строка Из ТаблицаCOMКомпонент Цикл Макет = ирКэш.Получить().ПолучитьМакет(Строка.Идентификатор); МетаМакет = ирКэш.Получить().Метаданные().Макеты.Найти(Строка.Идентификатор); Строка.Описание = МетаМакет.Комментарий; Строка.ИмяФайла = Строка.Идентификатор + ".dll"; Если ЗначениеЗаполнено(Строка.ProgID) Тогда Пустышка = ирКэш.Получить().ПолучитьПроверитьCOMОбъект(Строка.ProgID, Строка.ИмяТипаВК); Строка.Установлена = (Пустышка <> Неопределено); КонецЕсли; Файл = Новый Файл(КаталогУстановки + "\" + Строка.ИмяФайла); Строка.ФайлОбнаружен = Ложь Или ТипЗнч(ирКэш.Получить().ПолучитьМакет(Строка.Идентификатор)) = Тип("ДвоичныеДанные") Или Файл.Существует() ; Строка.Установить = Истина И Не Строка.Установлена //И Строка.ФайлОбнаружен ; Пустышка = Неопределено; КонецЦикла; КонецПроцедуры Процедура ПутьУстановкиНачалоВыбора(Элемент, СтандартнаяОбработка) ВыборФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); ВыборФайла.Каталог = Элемент.Значение; Если Не ВыборФайла.Выбрать() Тогда Возврат; КонецЕсли; Элемент.Значение = ВыборФайла.Каталог; КаталогУстановкиПриИзменении(Элемент); КонецПроцедуры Процедура ПриОткрытии() КаталогУстановки = КаталогПрограммы(); ОбновитьТаблицу(); КонецПроцедуры Процедура ПутьУстановкиОткрытие(Элемент, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; ЗапуститьПриложение(Элемент.Значение); КонецПроцедуры Процедура ТаблицаCOMКомпонентПриВыводеСтроки(Элемент, ОформлениеСтроки, ДанныеСтроки) Если Не ДанныеСтроки.Установлена Тогда ОформлениеСтроки.ЦветФона = WebЦвета.СветлоРозовый; КонецЕсли; КонецПроцедуры Процедура КаталогУстановкиПриИзменении(Элемент) ирНеглобальный.ПолеВводаСИсториейВыбора_ПриИзмененииЛкс(Элемент, "ирАдминистративнаяРегистрацияCOM"); ОбновитьТаблицу(); КонецПроцедуры Процедура КаталогУстановкиНачалоВыбораИзСписка(Элемент, СтандартнаяОбработка) ирНеглобальный.ПолеВводаСИсториейВыбора_НачалоВыбораИзСпискаЛкс(Элемент, "ирАдминистративнаяРегистрацияCOM"); КонецПроцедуры