mirror of
https://github.com/1C-Company/GitConverter.git
synced 2025-03-21 21:17:29 +02:00
Поддержка дискретной выгрузки через CLI
This commit is contained in:
parent
29a17f3d08
commit
5d0c735618
@ -761,7 +761,9 @@
|
|||||||
РезультатОперации.Вставить("ВерсииEDT", Новый Массив());
|
РезультатОперации.Вставить("ВерсииEDT", Новый Массив());
|
||||||
|
|
||||||
ИспользоватьНесколькоВерсийEDT = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВерсийEDT");
|
ИспользоватьНесколькоВерсийEDT = ПолучитьФункциональнуюОпцию("ИспользоватьНесколькоВерсийEDT");
|
||||||
Если Не ЗначениеЗаполнено(Объект.ВерсияEDT) И ИспользоватьНесколькоВерсийEDT Тогда
|
Если НЕ Объект.ИспользуетсяCLI
|
||||||
|
И Не ЗначениеЗаполнено(Объект.ВерсияEDT)
|
||||||
|
И ИспользоватьНесколькоВерсийEDT Тогда
|
||||||
|
|
||||||
Сообщение = Новый СообщениеПользователю();
|
Сообщение = Новый СообщениеПользователю();
|
||||||
Сообщение.Текст = НСтр("ru = 'Поле Версия EDT не заполнено.'");
|
Сообщение.Текст = НСтр("ru = 'Поле Версия EDT не заполнено.'");
|
||||||
@ -774,12 +776,18 @@
|
|||||||
Возврат РезультатОперации;
|
Возврат РезультатОперации;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
Если Не ИспользоватьНесколькоВерсийEDT И КонвертацияХранилища.НеобходимоЗаполнитьВерсиюEDT() Тогда
|
Если Объект.ИспользуетсяCLI
|
||||||
|
И Не ИспользоватьНесколькоВерсийEDT
|
||||||
|
И КонвертацияХранилища.НеобходимоЗаполнитьВерсиюEDT() Тогда
|
||||||
РезультатОперации.КодОшибки = "ВключитьИспользованиеВерсийEDT";
|
РезультатОперации.КодОшибки = "ВключитьИспользованиеВерсийEDT";
|
||||||
Возврат РезультатОперации;
|
Возврат РезультатОперации;
|
||||||
КонецЕсли;
|
КонецЕсли;
|
||||||
|
|
||||||
|
Если Не Объект.ИспользуетсяCLI Тогда
|
||||||
РезультатОперации.ВерсииEDT = КонвертацияХранилища.ПолучитьСписокВерсийПлатформыEDT(Объект.ВерсияEDT);
|
РезультатОперации.ВерсииEDT = КонвертацияХранилища.ПолучитьСписокВерсийПлатформыEDT(Объект.ВерсияEDT);
|
||||||
|
Иначе
|
||||||
|
//РезультатОперации.ВерсииEDT = конверт
|
||||||
|
КонецЕсли;
|
||||||
|
|
||||||
Возврат РезультатОперации;
|
Возврат РезультатОперации;
|
||||||
|
|
||||||
|
@ -1341,15 +1341,55 @@
|
|||||||
|
|
||||||
ВыгрузитьКонфигурациюВФайлы(Параметры);
|
ВыгрузитьКонфигурациюВФайлы(Параметры);
|
||||||
|
|
||||||
|
|
||||||
|
КаталогФайловКонфигурации = ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Параметры.КаталогФайловКонфигурации);
|
||||||
// Если в хранилище 2 версии с одинаковым состоянием ConfigDumpInfo и выгрузки изменений не произошло
|
// Если в хранилище 2 версии с одинаковым состоянием ConfigDumpInfo и выгрузки изменений не произошло
|
||||||
// то - выполняем полную выгрузку
|
// то - выполняем полную выгрузку
|
||||||
Если Параметры.ВыгружатьИзменения Тогда
|
Если Параметры.ВыгружатьИзменения Тогда
|
||||||
НайденныеФайлы = НайтиФайлы(ОбщегоНазначенияКлиентСервер.ДобавитьКонечныйРазделительПути(Параметры.КаталогФайловКонфигурации), "*", Истина);
|
НайденныеФайлы = НайтиФайлы(КаталогФайловКонфигурации, "*", Истина);
|
||||||
|
|
||||||
Если НайденныеФайлы.Количество() = 0
|
Если НайденныеФайлы.Количество() = 0
|
||||||
ИЛИ НайденныеФайлы.Количество() = 1
|
ИЛИ НайденныеФайлы.Количество() = 1
|
||||||
И НайденныеФайлы[0].Имя = "ConfigDumpInfo.xml" Тогда
|
И НайденныеФайлы[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'"), "Код возврата: "
|
ДобавитьЗаписьВЛог(Параметры, НСтр("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