Перем ирПлатформа; Процедура ОсновныеДействияФормыВыполнить(Кнопка) ИмяРасширения = "Расширение1"; ТекстЛога = ""; ВерсияРасширения = Метаданные.Версия + "e"; ИмяВременногоФайла = ПолучитьИмяВременногоФайла("cfe"); ПолучитьОбщийМакет("ирШаблонРасширения").Записать(ИмяВременногоФайла); Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/LoadCfg """ + ИмяВременногоФайла + """ -Extension """ + ИмяРасширения + """", , ТекстЛога); Если Не Успех Тогда УдалитьФайлы(ИмяВременногоФайла); Сообщить(ТекстЛога); Возврат; КонецЕсли; УдалитьФайлы(ИмяВременногоФайла); КаталогВыгрузкиРасширения = ПолучитьИмяВременногоФайла(); СоздатьКаталог(КаталогВыгрузкиРасширения); // Выгрузка расширения в файлы Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpConfigToFiles """ + КаталогВыгрузкиРасширения + """ -Extension """ + ИмяРасширения + """ -Format Hierarchical", , ТекстЛога,, "Выгрузка расширения в файлы"); Если Не Успех Тогда УдалитьФайлы(КаталогВыгрузкиРасширения); Сообщить(ТекстЛога); Возврат; КонецЕсли; КаталогВыгрузкиКонфигурации = ПолучитьИмяВременногоФайла(); СоздатьКаталог(КаталогВыгрузкиКонфигурации); ТекстЛога = ""; // Выгружаем конфигурацию в файлы Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpConfigToFiles """ + КаталогВыгрузкиКонфигурации + """ -Format Hierarchical", СтрокаСоединенияИнформационнойБазы(), ТекстЛога,, "Выгрузка конфигурации в файлы"); Если Не Успех Тогда УдалитьФайлы(КаталогВыгрузкиКонфигурации); Сообщить(ТекстЛога); Возврат; КонецЕсли; //КаталогВыгрузкиКонфигурации = "Z:\Ир"; // Для отладки // Скопируем все папки кроме Catalogs и Ext и файла ConfigDumpInfo.xml Файлы = НайтиФайлы(КаталогВыгрузкиКонфигурации, "*"); Для Каждого Файл Из Файлы Цикл Если Ложь Или Файл.Имя = "Catalogs" Или Файл.Имя = "Ext" Или Не Файл.ЭтоКаталог() Тогда Продолжить; КонецЕсли; ФайлПриемник = Новый Файл(КаталогВыгрузкиРасширения + "\" + Файл.Имя); Если Не ФайлПриемник.Существует() Тогда СоздатьКаталог(ФайлПриемник.ПолноеИмя); КонецЕсли; ирОбщий.СкопироватьФайлыЛкс(КаталогВыгрузкиКонфигурации + "\" + Файл.Имя, КаталогВыгрузкиРасширения + "\" + Файл.Имя); КонецЦикла; // Переименуем язык Русский->ирРусский ИмяФайла = КаталогВыгрузкиРасширения + "\Languages\Русский.xml"; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяФайла); ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); ТекстФайла = СтрЗаменить(ТекстФайла, "Русский", "ирРусский"); ТекстовыйДокумент.УстановитьТекст(ТекстФайла); ТекстовыйДокумент.Записать(ИмяФайла); // Во всех CommonCommands удалить ... Файлы = НайтиФайлы(КаталогВыгрузкиРасширения + "\CommonCommands", "*.xml"); Для Каждого Файл Из Файлы Цикл ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя); ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); ЧтоЗаменить = ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(ТекстФайла, "", "", Ложь, Истина); ТекстФайла = СтрЗаменить(ТекстФайла, ЧтоЗаменить, ""); ТекстовыйДокумент.УстановитьТекст(ТекстФайла); ТекстовыйДокумент.Записать(Файл.ПолноеИмя); КонецЦикла; // Из SubSystems вырезаем фрагменты Catalog.ирОбъектыДляОтладки Файлы = НайтиФайлы(КаталогВыгрузкиРасширения + "\SubSystems", "*.xml"); Для Каждого Файл Из Файлы Цикл ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(Файл.ПолноеИмя); ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); ТекстФайла = СтрЗаменить(ТекстФайла, "Catalog.ирАлгоритмы", ""); ТекстФайла = СтрЗаменить(ТекстФайла, "Catalog.ирКомандаРедактироватьОбъект", ""); ТекстФайла = СтрЗаменить(ТекстФайла, "Catalog.ирОбъектыДляОтладки", ""); ТекстовыйДокумент.УстановитьТекст(ТекстФайла); ТекстовыйДокумент.Записать(Файл.ПолноеИмя); КонецЦикла; // У общего модуля ирГлобальный убираем флажок Сервер ИмяФайла = КаталогВыгрузкиРасширения + "\CommonModules\ирГлобальный.xml"; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяФайла); ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); ТекстФайла = СтрЗаменить(ТекстФайла, "true", "false"); ТекстовыйДокумент.УстановитьТекст(ТекстФайла); ТекстовыйДокумент.Записать(ИмяФайла); //// Скопируем глобальные методы в общий модуль ирОтладка //ИмяФайла = КаталогВыгрузкиРасширения + "\CommonModules\ирГлобальный\Ext\Module.bsl"; //ТекстовыйДокумент = Новый ТекстовыйДокумент; //ТекстовыйДокумент.Прочитать(ИмяФайла); //ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); //ТекстМетодов = ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(ТекстФайла, "#Область ГлобальныеПортативныеМетоды", "#КонецОбласти", Ложь, Истина); //ИмяФайла = КаталогВыгрузкиРасширения + "\CommonModules\ирОтладка\Ext\Module.bsl"; //ТекстовыйДокумент = Новый ТекстовыйДокумент; //ТекстовыйДокумент.Прочитать(ИмяФайла); //ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); //ТекстФайла = ТекстФайла + ТекстМетодов; //ТекстовыйДокумент.УстановитьТекст(ТекстФайла); //ТекстовыйДокумент.Записать(ИмяФайла); // У общего модуля ирПривилегированный убираем флажок Привилегированный ИмяФайла = КаталогВыгрузкиРасширения + "\CommonModules\ирПривилегированный.xml"; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяФайла); ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); ТекстФайла = СтрЗаменить(ТекстФайла, "true", "false"); ТекстовыйДокумент.УстановитьТекст(ТекстФайла); ТекстовыйДокумент.Записать(ИмяФайла); // У подсистемы ИнструментыРазработчикаTormozit обновим версию ИмяФайла = КаталогВыгрузкиРасширения + "\SubSystems\ИнструментыРазработчикаTormozit.xml"; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ИмяФайла); ТекстФайла = ТекстовыйДокумент.ПолучитьТекст(); ЧтоЗаменить = ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(ТекстФайла, "", "", Ложь, Истина); ТекстФайла = СтрЗаменить(ТекстФайла, ЧтоЗаменить, "" + ВерсияРасширения + ""); ЧтоЗаменить = ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(ТекстФайла, "Инструменты разработчика ", "", Ложь, Истина); ТекстФайла = СтрЗаменить(ТекстФайла, ЧтоЗаменить, "Инструменты разработчика " + ВерсияРасширения + ""); ТекстовыйДокумент.УстановитьТекст(ТекстФайла); ТекстовыйДокумент.Записать(ИмяФайла); // Заменим элемент в файле Configuration.xml ФайлКонфигурацииИсточника = КаталогВыгрузкиКонфигурации + "\Configuration.xml"; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ФайлКонфигурацииИсточника); ТекстФайлаИсточника = ТекстовыйДокумент.ПолучитьТекст(); ФайлКонфигурацииПриемника = КаталогВыгрузкиРасширения + "\Configuration.xml"; ТекстовыйДокумент = Новый ТекстовыйДокумент; ТекстовыйДокумент.Прочитать(ФайлКонфигурацииПриемника); ТекстФайлаПриемника = ТекстовыйДокумент.ПолучитьТекст(); ЧтоЗаменить = ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(ТекстФайлаПриемника, "", "", Ложь, Истина); НаЧтоЗаменить = ирОбщий.ПолучитьСтрокуМеждуМаркерамиЛкс(ТекстФайлаИсточника, "", "", Ложь, Истина); ТекстФайлаПриемника = СтрЗаменить(ТекстФайлаПриемника, ЧтоЗаменить, НаЧтоЗаменить); ТекстФайлаПриемника = СтрЗаменить(ТекстФайлаПриемника, "4.00", "" + ВерсияРасширения + ""); ТекстФайлаПриемника = СтрЗаменить(ТекстФайлаПриемника, "Russian", "RussianLanguage.Русский"); // Без этого многоязычные строки все будут пустыми ТекстовыйДокумент.УстановитьТекст(ТекстФайлаПриемника); ТекстовыйДокумент.Записать(ФайлКонфигурацииПриемника); // Загрузка расширения из файлов Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/LoadConfigFromFiles """ + КаталогВыгрузкиРасширения + """ -Extension """ + ИмяРасширения + """ -Format Hierarchical", , ТекстЛога,, "Загрузка расширения из файлов"); УдалитьФайлы(КаталогВыгрузкиРасширения); Если Не Успех Тогда Сообщить(ТекстЛога); Возврат; КонецЕсли; //// Выгружаем расширение в файлы //Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpConfigToFiles """ + КаталогВыгрузкиРасширения + """ -Extension """ + ИмяРасширения + """ -Format Hierarchical", , ТекстЛога); //Если Не Успех Тогда // УдалитьФайлы(КаталогВыгрузкиРасширения); // Сообщить(ТекстЛога); // Возврат; //КонецЕсли; //ФайлКонфигурацииИсточника = КаталогВыгрузкиРасширения + "\Configuration.xml"; //ТекстовыйДокумент = Новый ТекстовыйДокумент; //ТекстовыйДокумент.Прочитать(ФайлКонфигурацииИсточника); //ТекстФайлаИсточника = ТекстовыйДокумент.ПолучитьТекст(); //Предупреждение(1); //ТекстФайлаИсточника = СтрЗаменить(ТекстФайлаИсточника, "Language.ирРусский", ""); // На первом проходе в 8.3.10 невозможно сделать //ТекстовыйДокумент.УстановитьТекст(ТекстФайлаИсточника); //ТекстовыйДокумент.Записать(ФайлКонфигурацииИсточника); // //// Загружаем расширение из файлов //Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/LoadConfigFromFiles """ + КаталогВыгрузкиРасширения + """ -Extension """ + ИмяРасширения + """ -Format Hierarchical", , ТекстЛога); //Если Не Успех Тогда // УдалитьФайлы(КаталогВыгрузкиРасширения); // Сообщить(ТекстЛога); // Возврат; //КонецЕсли; // Выгружаем расширение КонечныйФайл = Каталог + "\ИР " + Метаданные.Версия + ".cfe"; Успех = ирОбщий.ВыполнитьКомандуКонфигуратораЛкс("/DumpCfg """ + КонечныйФайл + """ -Extension """ + ИмяРасширения + """", , ТекстЛога); Если Не Успех Тогда Сообщить(ТекстЛога); Возврат; КонецЕсли; УдалитьФайлы(КаталогВыгрузкиКонфигурации); УдалитьФайлы(КаталогВыгрузкиРасширения); Предупреждение("Не забудь вручную убрать флажок ""Проверять значения языка"" у расширения!"); КонецПроцедуры Процедура КаталогНачалоВыбора(Элемент, СтандартнаяОбработка) ирОбщий.ВыбратьКаталогВФормеЛкс(Каталог); КонецПроцедуры Процедура ПриЗакрытии() СохранитьЗначение("ирВыпускВариантаРасширение.Каталог", Каталог); КонецПроцедуры Процедура ПриОткрытии() Каталог = ВосстановитьЗначение("ирВыпускВариантаРасширение.Каталог"); КонецПроцедуры Процедура ПередОткрытием(Отказ, СтандартнаяОбработка) ВерсияПлатформы = ирПлатформа.ВерсияПлатформы; Если ВерсияПлатформы < 803010 Тогда Сообщить("Поддерживается только платформа 8.3.10 и выше"); Отказ = Истина; КонецЕсли; КонецПроцедуры ирПлатформа = ирКэш.Получить();