1
0
mirror of https://github.com/1C-Company/GitConverter.git synced 2025-03-19 21:08:00 +02:00

Исправление ошибок с каталогами

This commit is contained in:
KovAlexey 2024-12-23 14:41:38 +10:00
parent 7a9d07149a
commit 5c2b535596

View File

@ -1443,33 +1443,20 @@
КонецПроцедуры
Процедура ВыгрузитьПоместитьКореньВОсновнойКаталог(Параметры, Знач КаталогФайловКонфигурации)
Процедура ВыгрузитьПоместитьКореньВОсновнойКаталог(ПараметрыОсновнойВыгрузки, Знач КаталогОсновнойВыгрузки)
// Попробуем выгрузить корень отдельно
КаталогФайловКонфигурации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогФайловКонфигурации);
ПараметрыВыгрузкиКорня = ОбщегоНазначенияКлиентСервер.СкопироватьРекурсивно(Параметры);
// Сначала выгружаем сам корень
КаталогОсновнойВыгрузки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(ПараметрыОсновнойВыгрузки.КаталогФайловКонфигурации);
КаталогВыгрузкиКорня = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
Параметры.КаталогВременныхФайлов) + "dump_configuration\";
ИмяФайлаОбъектов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
Параметры.КаталогВременныхФайлов) + "export_object_conf.txt";
ПостфиксКаталогаВыгрузки = "configuration";
Файл = Новый Файл(КаталогВыгрузкиКорня);
Если Файл.Существует() Тогда
УдалитьФайлы(КаталогВыгрузкиКорня);
КонецЕсли;
ИменаМетаданныхКВыгрузке = Новый Массив(); // Массив Из Строка
ИменаМетаданныхКВыгрузке.Добавить("Configuration");
ПараметрыВыгрузкиКорня.КаталогФайловКонфигурации = КаталогВыгрузкиКорня;
ПараметрыВыгрузкиКорня.Вставить("ВыгружатьПоСписку", Истина);
ПараметрыВыгрузкиКорня.Вставить("ФайлСпискаВыгрузки", ИмяФайлаОбъектов);
ПараметрыВыгрузкиКорня.ВыгружатьИзменения = Ложь;
ЗаписьФайла = Новый ЗаписьТекста(ИмяФайлаОбъектов);
ЗаписьФайла.Записать("Configuration");
ЗаписьФайла.Закрыть();
СоздатьКаталог(КаталогВыгрузкиКорня);
ВыгрузитьКонфигурациюВФайлы(ПараметрыВыгрузкиКорня);
КаталогВыгрузкиКорня = ВыгрузитьОбъектыВКаталог(ПараметрыОсновнойВыгрузки,
ИменаМетаданныхКВыгрузке,
ПостфиксКаталогаВыгрузки);
ФайлыКорняККопированию = НайтиФайлы(КаталогВыгрузкиКорня, "*.*", Ложь);
Для Каждого ФайлКорняККопированию Из ФайлыКорняККопированию Цикл
@ -1478,33 +1465,36 @@
Продолжить;
КонецЕсли;
ИтоговыйПуть = КаталогФайловКонфигурации + ФайлКорняККопированию.Имя;
ИтоговыйПуть = КаталогОсновнойВыгрузки + ФайлКорняККопированию.Имя;
КопироватьФайл(ФайлКорняККопированию.ПолноеИмя, ИтоговыйПуть);
КонецЦикла;
КаталогРасширенныхДанныхКорня = КаталогВыгрузкиКорня + "Ext";
ФайлКаталогРасширенныхДанныхКорня = Новый Файл(КаталогРасширенныхДанныхКорня);
КаталогРасширенныхДанныхКорняИсточник = КаталогВыгрузкиКорня + "Ext";
КаталогРасширенныхДанныхКорняПриемник = КаталогОсновнойВыгрузки + "Ext";
ФайлКаталогРасширенныхДанныхКорня = Новый Файл(КаталогРасширенныхДанныхКорняИсточник);
Если ФайлКаталогРасширенныхДанныхКорня.Существует() Тогда
КаталогВыгруженныхРасширенныхФайловВыгрузки = КаталогВыгрузкиКорня + "Ext\";
ПозицияВСтрокеРабочегоКаталога = СтрДлина(КаталогВыгруженныхРасширенныхФайловВыгрузки) + 1;
СоздатьКаталог(КаталогВыгруженныхРасширенныхФайловВыгрузки);
КаталогРасширенныхФайловВыгрузки = КаталогФайловКонфигурации + "Ext\";
НайденныеРасширенныеФайлыКорня = НайтиФайлы(КаталогВыгруженныхРасширенныхФайловВыгрузки, "*.*", Истина);
Для Каждого РасширенныйФайлКорняИсточник Из НайденныеРасширенныеФайлыКорня Цикл
ИтоговоеИмя = КаталогФайловКонфигурации + Сред(РасширенныйФайлКорняИсточник.ПолноеИмя,
ПозицияВСтрокеРабочегоКаталога);
Если РасширенныйФайлКорняИсточник.ЭтоКаталог() Тогда
СоздатьКаталог(ИтоговоеИмя);
Иначе
КопироватьФайл(РасширенныйФайлКорняИсточник.ПолноеИмя, ИтоговоеИмя);
КонецЕсли;
КонецЦикла;
СкопироватьКаталогЦеликом(КаталогРасширенныхДанныхКорняПриемник, КаталогРасширенныхДанныхКорняИсточник);
КонецЕсли;
// Теперь считываем из этого корня языки
// Если есть языки, выгружаем их и подкидываем туда в корень
ЯзыкиИзКорня = ЯзыкиИзКорняКонфигурации(КаталогВыгрузкиКорня + "Configuration.xml");
Если ЯзыкиИзКорня.Количество() > 0 Тогда
ПостфиксКаталогаВыгрузки = "language";
ИменаМетаданныхКВыгрузке = Новый Массив(); // Массив Из Строка
ИменаМетаданныхКВыгрузке.Добавить("Configuration");
КаталогВыгрузкиЯзыков = ВыгрузитьОбъектыВКаталог(ПараметрыОсновнойВыгрузки,
ЯзыкиИзКорня,
ПостфиксКаталогаВыгрузки);
КаталогИсточник = КаталогВыгрузкиЯзыков + "Languages";
КаталогПриемник = КаталогОсновнойВыгрузки + "Languages";
СкопироватьКаталогЦеликом(КаталогПриемник, КаталогИсточник);
КонецЕсли;
КонецПроцедуры
// Загружает файлы конфигурации версии в проект EDT и составляет индекс
@ -4503,4 +4493,128 @@
КонецПроцедуры
Процедура СкопироватьКаталогЦеликом(Знач КаталогПриемник, Знач КаталогИсточник)
КаталогВыгруженныхРасширенныхФайловВыгрузки = КаталогИсточник;
ПозицияВСтрокеРабочегоКаталога = СтрДлина(КаталогВыгруженныхРасширенныхФайловВыгрузки) + 1;
КаталогРасширенныхФайловВыгрузки = КаталогПриемник;
СоздатьКаталог(КаталогРасширенныхФайловВыгрузки);
НайденныеРасширенныеФайлыКорня = НайтиФайлы(КаталогВыгруженныхРасширенныхФайловВыгрузки, "*.*", Истина);
Для Каждого РасширенныйФайлКорняИсточник Из НайденныеРасширенныеФайлыКорня Цикл
ИтоговоеИмя = КаталогРасширенныхФайловВыгрузки + Сред(РасширенныйФайлКорняИсточник.ПолноеИмя,
ПозицияВСтрокеРабочегоКаталога);
Если РасширенныйФайлКорняИсточник.ЭтоКаталог() Тогда
СоздатьКаталог(ИтоговоеИмя);
Иначе
КопироватьФайл(РасширенныйФайлКорняИсточник.ПолноеИмя, ИтоговоеИмя);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
// Выгрузить объекты.
//
// Параметры:
// Параметры - см. ПолучитьПараметрыОбработкиВерсии
// МассивИменОбъектовМетаданных - Массив Из Строка -
// ПостфиксКаталога - Строка - Постфикс каталога. Не должен содержать запрещенных для файлов символов
//
// Возвращаемое значение:
// * Строка - Каталог выгрузки
Функция ВыгрузитьОбъектыВКаталог(ПараметрыОсновнойВыгрузки, МассивИменОбъектовМетаданных, ПостфиксКаталога)
// Попробуем выгрузить корень отдельно
КаталогФайловКонфигурации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(КаталогФайловКонфигурации);
ПараметрыВыгрузкиКорня = ОбщегоНазначенияКлиентСервер.СкопироватьРекурсивно(ПараметрыОсновнойВыгрузки);
КаталогВыгрузки = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
ПараметрыОсновнойВыгрузки.КаталогВременныхФайлов) + "dump_" + ПостфиксКаталога + "\";
ИмяФайлаОбъектов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
ПараметрыОсновнойВыгрузки.КаталогВременныхФайлов) + "export_object_" + ПостфиксКаталога + ".txt";
Файл = Новый Файл(КаталогВыгрузки);
Если Файл.Существует() Тогда
УдалитьФайлы(КаталогВыгрузки);
КонецЕсли;
ПараметрыВыгрузкиКорня.КаталогФайловКонфигурации = КаталогВыгрузки;
ПараметрыВыгрузкиКорня.Вставить("ВыгружатьПоСписку", Истина);
ПараметрыВыгрузкиКорня.Вставить("ФайлСпискаВыгрузки", ИмяФайлаОбъектов);
ПараметрыВыгрузкиКорня.ВыгружатьИзменения = Ложь;
ЗаписьФайла = Новый ЗаписьТекста(ИмяФайлаОбъектов);
Для Каждого ИмяМетаданных Из МассивИменОбъектовМетаданных Цикл
ЗаписьФайла.Записать(ИмяМетаданных);
КонецЦикла;
ЗаписьФайла.Закрыть();
СоздатьКаталог(КаталогВыгрузки);
ВыгрузитьКонфигурациюВФайлы(ПараметрыВыгрузкиКорня);
Возврат КаталогВыгрузки;
КонецФункции
// Языки из корня конфигурации.
//
// Параметры:
// ПутьККорню - Строка -
//
// Возвращаемое значение:
// Массив Из Строка - Языки из корня конфигурации
Функция ЯзыкиИзКорняКонфигурации(ПутьККорню)
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл(ПутьККорню);
МассивЯзыков = Новый Массив;
Если СпозиционироватьсяНаПодчиненныхОбъектах(ЧтениеXML) Тогда
ЗаполнитьПодчиненныеЯзыкиИзПодчиненныхОбъектов(ЧтениеXML, МассивЯзыков);
КонецЕсли;
ЧтениеXML.Закрыть();
Возврат МассивЯзыков;
КонецФункции
// Спозиционироваться на подчиненных объектах.
//
// Параметры:
// ЧтениеXML - ЧтениеXML - Чтение XML
//
// Возвращаемое значение:
// Булево - Спозиционироваться на подчиненных объектах
Функция СпозиционироватьсяНаПодчиненныхОбъектах(ЧтениеXML)
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.Имя = "ChildObjects" Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
// Заполнить подчиненные языки из подчиненных объектов.
//
// Параметры:
// ЧтениеXML - ЧтениеXML - Чтение XML
// МассивЯзыков - Массив из Строка - Массив языков
Процедура ЗаполнитьПодчиненныеЯзыкиИзПодчиненныхОбъектов(ЧтениеXML, МассивЯзыков)
Пока ЧтениеXML.Прочитать() Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.КонецЭлемента
И ЧтениеXML.Имя = "ChildObjects" Тогда
Возврат;
ИначеЕсли ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента
И ЧтениеXML.Имя = "Language" Тогда
ЧтениеXML.Прочитать();
МассивЯзыков.Добавить(СтрШаблон("Language.%1", ЧтениеXML.Значение));
КонецЕсли;
КонецЦикла;
КонецПроцедуры
#КонецОбласти