mirror of
https://github.com/1C-Company/GitConverter.git
synced 2025-03-19 21:08:00 +02:00
Поддержка дискретной выгрузки через CLI
This commit is contained in:
parent
29a17f3d08
commit
5d0c735618
@ -761,7 +761,9 @@
|
||||
РезультатОперации.Вставить("ВерсииEDT", Новый Массив());
|
||||
|
||||
ИспользоватьНесколькоВерсийEDT = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВерсийEDT");
|
||||
Если Не ЗначениеЗаполнено(Объект.ВерсияEDT) И ИспользоватьНесколькоВерсийEDT Тогда
|
||||
Если НЕ Объект.ИспользуетсяCLI
|
||||
И Не ЗначениеЗаполнено(Объект.ВерсияEDT)
|
||||
И ИспользоватьНесколькоВерсийEDT Тогда
|
||||
|
||||
Сообщение = Новый СообщениеПользователю();
|
||||
Сообщение.Текст = НСтр("ru = 'Поле Версия EDT не заполнено.'");
|
||||
@ -774,12 +776,18 @@
|
||||
Возврат РезультатОперации;
|
||||
КонецЕсли;
|
||||
|
||||
Если Не ИспользоватьНесколькоВерсийEDT И КонвертацияХранилища.НеобходимоЗаполнитьВерсиюEDT() Тогда
|
||||
Если Объект.ИспользуетсяCLI
|
||||
И Не ИспользоватьНесколькоВерсийEDT
|
||||
И КонвертацияХранилища.НеобходимоЗаполнитьВерсиюEDT() Тогда
|
||||
РезультатОперации.КодОшибки = "ВключитьИспользованиеВерсийEDT";
|
||||
Возврат РезультатОперации;
|
||||
КонецЕсли;
|
||||
|
||||
РезультатОперации.ВерсииEDT = КонвертацияХранилища.ПолучитьСписокВерсийПлатформыEDT(Объект.ВерсияEDT);
|
||||
Если Не Объект.ИспользуетсяCLI Тогда
|
||||
РезультатОперации.ВерсииEDT = КонвертацияХранилища.ПолучитьСписокВерсийПлатформыEDT(Объект.ВерсияEDT);
|
||||
Иначе
|
||||
//РезультатОперации.ВерсииEDT = конверт
|
||||
КонецЕсли;
|
||||
|
||||
Возврат РезультатОперации;
|
||||
|
||||
|
@ -1341,15 +1341,55 @@
|
||||
|
||||
ВыгрузитьКонфигурациюВФайлы(Параметры);
|
||||
|
||||
|
||||
КаталогФайловКонфигурации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Параметры.КаталогФайловКонфигурации);
|
||||
// Если в хранилище 2 версии с одинаковым состоянием ConfigDumpInfo и выгрузки изменений не произошло
|
||||
// то - выполняем полную выгрузку
|
||||
Если Параметры.ВыгружатьИзменения Тогда
|
||||
НайденныеФайлы = НайтиФайлы(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Параметры.КаталогФайловКонфигурации), "*", Истина);
|
||||
НайденныеФайлы = НайтиФайлы(КаталогФайловКонфигурации, "*", Истина);
|
||||
|
||||
Если НайденныеФайлы.Количество() = 0
|
||||
ИЛИ НайденныеФайлы.Количество() = 1
|
||||
И НайденныеФайлы[0].Имя = "ConfigDumpInfo.xml" Тогда
|
||||
ИЛИ НайденныеФайлы.Количество() = 1
|
||||
И НайденныеФайлы[0].Имя = "ConfigDumpInfo.xml" Тогда
|
||||
Параметры.ВыгружатьИзменения = Ложь;
|
||||
ВыгрузитьКонфигурациюВФайлы(Параметры);
|
||||
|
||||
// Если диффы выгрузились, проверяем существование корня
|
||||
ИначеЕсли Параметры.ИспользуетсяCLI Тогда
|
||||
НайденныеФайлыКорня = НайтиФайлы(КаталогФайловКонфигурации, "Configuration.xml", Ложь);
|
||||
|
||||
Если НайденныеФайлыКорня.Количество() = 0 Тогда
|
||||
// Попробуем выгрузить корень отдельно
|
||||
ПараметрыВыгрузкиКорня = ОбщегоНазначенияКлиентСервер.СкопироватьРекурсивно(Параметры);
|
||||
|
||||
КаталогВыгрузкиКорня = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
|
||||
Параметры.КаталогВременныхФайлов) + "dump_configuration";
|
||||
ИмяФайлаОбъектов = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(
|
||||
Параметры.КаталогВременныхФайлов) + "export_object_conf.txt";
|
||||
|
||||
Файл = Новый Файл(КаталогВыгрузкиКорня);
|
||||
Если Файл.Существует() Тогда
|
||||
УдалитьФайлы(КаталогВыгрузкиКорня);
|
||||
КонецЕсли;
|
||||
|
||||
ПараметрыВыгрузкиКорня.КаталогФайловКонфигурации = КаталогВыгрузкиКорня;
|
||||
ПараметрыВыгрузкиКорня.Вставить("ВыгружатьПоСписку", Истина);
|
||||
ПараметрыВыгрузкиКорня.Вставить("ФайлСпискаВыгрузки", ИмяФайлаОбъектов);
|
||||
ПараметрыВыгрузкиКорня.ВыгружатьИзменения = Ложь;
|
||||
|
||||
ЗаписьФайла = Новый ЗаписьТекста(ИмяФайлаОбъектов);
|
||||
ЗаписьФайла.Записать("Configuration");
|
||||
ЗаписьФайла.Закрыть();
|
||||
СоздатьКаталог(КаталогВыгрузкиКорня);
|
||||
|
||||
ВыгрузитьКонфигурациюВФайлы(ПараметрыВыгрузкиКорня);
|
||||
|
||||
ФайлыКорняККопированию = НайтиФайлы(КаталогВыгрузкиКорня, "*.*", Ложь);
|
||||
Для Каждого ФайлКорняККопированию Из ФайлыКорняККопированию Цикл
|
||||
ИтоговыйПуть = КаталогФайловКонфигурации + ФайлКорняККопированию.Имя;
|
||||
КопироватьФайл(ФайлКорняККопированию.ПолноеИмя, ИтоговыйПуть);
|
||||
КонецЦикла;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
КонецЕсли;
|
||||
|
||||
@ -1556,7 +1596,7 @@
|
||||
КонецЕсли;
|
||||
|
||||
КодВозврата = Неопределено;
|
||||
СтрокаКоманды = ?(ЭтоWindowsСервер, "cmd /C ", "") + СтрокаКоманды;
|
||||
СтрокаКоманды = ?(ЭтоWindowsСервер, "cmd /C chcp 65001 && ", "") + СтрокаКоманды;
|
||||
ЗапуститьПриложение(СтрокаКоманды, Параметры.КаталогВременныхФайлов, Истина, КодВозврата);
|
||||
|
||||
ДобавитьЗаписьВЛог(Параметры, НСтр("ru='Окончание импорта в 1C:EDT'"), "Код возврата: "
|
||||
@ -3062,6 +3102,11 @@
|
||||
КонецЕсли;
|
||||
|
||||
КодВозврата = Неопределено;
|
||||
Если ОбщегоНазначенияПовтИсп.ЭтоWindowsСервер()
|
||||
И Параметры.ИспользуетсяCLI Тогда
|
||||
СтрокаКоманды = "cmd /C chcp 65001 && " + СтрокаКоманды;
|
||||
КонецЕсли;
|
||||
|
||||
ЗапуститьПриложение(СтрокаКоманды, Параметры.КаталогИсполняемогоФайла, Истина, КодВозврата);
|
||||
|
||||
КодРезультата = ПрочитатьФайлРезультата(Параметры.ИмяФайлаРезультатов);
|
||||
|
@ -252,4 +252,130 @@
|
||||
|
||||
КонецФункции
|
||||
|
||||
// Создает полную копию структуры, соответствия, массива, списка или таблицы значений, рекурсивно,
|
||||
// с учетом типов дочерних элементов. При этом содержимое значений объектных типов
|
||||
// (СправочникОбъект, ДокументОбъект и т.п.) не копируются, а возвращаются ссылки на исходный объект.
|
||||
//
|
||||
// Параметры:
|
||||
// Источник - Структура
|
||||
// - ФиксированнаяСтруктура
|
||||
// - Соответствие
|
||||
// - ФиксированноеСоответствие
|
||||
// - Массив
|
||||
// - ФиксированныйМассив
|
||||
// - СписокЗначений - объект, который необходимо скопировать.
|
||||
// ФиксироватьДанные - Булево
|
||||
// - Неопределено - если Истина - фиксировать,
|
||||
// если Ложь - снять фиксацию, если Неопределено - не изменять.
|
||||
//
|
||||
// Возвращаемое значение:
|
||||
// Структура - , ФиксированнаяСтруктура,
|
||||
// Соответствие
|
||||
// ФиксированноеСоответствие
|
||||
// Массив
|
||||
// ФиксированныйМассив
|
||||
// СписокЗначений - копия объекта, переданного в параметре Источник.
|
||||
//
|
||||
Функция СкопироватьРекурсивно(Источник, ФиксироватьДанные = Неопределено) Экспорт
|
||||
|
||||
Перем Приемник;
|
||||
|
||||
ТипИсточника = ТипЗнч(Источник);
|
||||
|
||||
Если ТипИсточника = Тип("ТаблицаЗначений") Тогда
|
||||
Приемник = Источник.Скопировать();
|
||||
ИначеЕсли ТипИсточника = Тип("Структура")
|
||||
Или ТипИсточника = Тип("ФиксированнаяСтруктура") Тогда
|
||||
Приемник = СкопироватьСтруктуру(Источник, ФиксироватьДанные);
|
||||
ИначеЕсли ТипИсточника = Тип("Соответствие")
|
||||
Или ТипИсточника = Тип("ФиксированноеСоответствие") Тогда
|
||||
Приемник = СкопироватьСоответствие(Источник, ФиксироватьДанные);
|
||||
ИначеЕсли ТипИсточника = Тип("Массив")
|
||||
Или ТипИсточника = Тип("ФиксированныйМассив") Тогда
|
||||
Приемник = СкопироватьМассив(Источник, ФиксироватьДанные);
|
||||
ИначеЕсли ТипИсточника = Тип("СписокЗначений") Тогда
|
||||
Приемник = СкопироватьСписокЗначений(Источник, ФиксироватьДанные);
|
||||
Иначе
|
||||
Приемник = Источник;
|
||||
КонецЕсли;
|
||||
|
||||
Возврат Приемник;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#Область СкопироватьРекурсивно
|
||||
|
||||
Функция СкопироватьСтруктуру(СтруктураИсточник, ФиксироватьДанные)
|
||||
|
||||
СтруктураРезультат = Новый Структура;
|
||||
|
||||
Для Каждого КлючИЗначение Из СтруктураИсточник Цикл
|
||||
СтруктураРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение, ФиксироватьДанные));
|
||||
КонецЦикла;
|
||||
|
||||
Если ФиксироватьДанные = Истина
|
||||
Или ФиксироватьДанные = Неопределено
|
||||
И ТипЗнч(СтруктураИсточник) = Тип("ФиксированнаяСтруктура") Тогда
|
||||
|
||||
Возврат Новый ФиксированнаяСтруктура(СтруктураРезультат);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СтруктураРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СкопироватьСоответствие(СоответствиеИсточник, ФиксироватьДанные)
|
||||
|
||||
СоответствиеРезультат = Новый Соответствие;
|
||||
|
||||
Для Каждого КлючИЗначение Из СоответствиеИсточник Цикл
|
||||
СоответствиеРезультат.Вставить(КлючИЗначение.Ключ, СкопироватьРекурсивно(КлючИЗначение.Значение, ФиксироватьДанные));
|
||||
КонецЦикла;
|
||||
|
||||
Если ФиксироватьДанные = Истина
|
||||
Или ФиксироватьДанные = Неопределено
|
||||
И ТипЗнч(СоответствиеИсточник) = Тип("ФиксированноеСоответствие") Тогда
|
||||
Возврат Новый ФиксированноеСоответствие(СоответствиеРезультат);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат СоответствиеРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СкопироватьМассив(МассивИсточник, ФиксироватьДанные)
|
||||
|
||||
МассивРезультат = Новый Массив;
|
||||
|
||||
Для Каждого Элемент Из МассивИсточник Цикл
|
||||
МассивРезультат.Добавить(СкопироватьРекурсивно(Элемент, ФиксироватьДанные));
|
||||
КонецЦикла;
|
||||
|
||||
Если ФиксироватьДанные = Истина
|
||||
Или ФиксироватьДанные = Неопределено
|
||||
И ТипЗнч(МассивИсточник) = Тип("ФиксированныйМассив") Тогда
|
||||
Возврат Новый ФиксированныйМассив(МассивРезультат);
|
||||
КонецЕсли;
|
||||
|
||||
Возврат МассивРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
Функция СкопироватьСписокЗначений(СписокИсточник, ФиксироватьДанные)
|
||||
|
||||
СписокРезультат = Новый СписокЗначений;
|
||||
|
||||
Для Каждого ЭлементСписка Из СписокИсточник Цикл
|
||||
СписокРезультат.Добавить(
|
||||
СкопироватьРекурсивно(ЭлементСписка.Значение, ФиксироватьДанные),
|
||||
ЭлементСписка.Представление,
|
||||
ЭлементСписка.Пометка,
|
||||
ЭлементСписка.Картинка);
|
||||
КонецЦикла;
|
||||
|
||||
Возврат СписокРезультат;
|
||||
|
||||
КонецФункции
|
||||
|
||||
#КонецОбласти
|
||||
|
||||
#КонецОбласти
|
||||
|
Loading…
x
Reference in New Issue
Block a user