alex-bob-lip/ibcmdrunner

При использовании метода частичной загрузки файлов выходит ошибка превышения длины командной строки

akademik1986 opened this issue · 9 comments

При использовании метода ЗагрузитьВыбранныеФайлыКонфигурации() выходит ошибка, что слишком длинная строка для команды cmd (пишу по памяти, сообщение примерное). Пытался загрузить около 50 общих модулей. В итоге падал на том, что в методе используется Команда, построенная на командной строке.
У себя обошел это циклом и передачей модулей порциями по 10 штук в метод ЗагрузитьВыбранныеФайлыКонфигурации(). Возможно целесообразнее цикл сделать внутри метода?
Пример кода

МассивИз10 = Новый Массив;
Для Индекс = 0 По СписокОбъектов.ВГраница() Цикл
	Если МассивИз10.Количество() = 10 Тогда
		УправлениеИБ.ЗагрузитьВыбранныеФайлыКонфигурации(ФС.ПолныйПуть(КаталогФайловКонфигурации), МассивИз10, , Ложь);
		МассивИз10 = Новый Массив;
	КонецЕсли;
	
	МассивИз10.Добавить(СписокОбъектов.Получить(Индекс));
КонецЦикла;

Если МассивИз10.Количество() > 0 Тогда
	УправлениеИБ.ЗагрузитьВыбранныеФайлыКонфигурации(ФС.ПолныйПуть(КаталогФайловКонфигурации), МассивИз10, , Ложь);
КонецЕсли;

@akademik1986 проверь у себя выбранное решение.

@yukon39 У меня эта доработка валится с ошибкой.
ОТЛАДКА - [oscript.lib.Work1C] - Начата частичная загрузка конфигурации конфигурации в ИБ в каталоге: BuildTemp\bd из файлов в каталоге: BuildTemp\EncryptedFiles
{Модуль C:\Program Files\OneScript\lib\ibcmdrunner\src\Классы\ibcmdrunner.os / Ошибка в строке: 1026 / [INFO] Импорт файлов конфигурации из XML...
[ERROR] Импорт файлов конфигурации из XML завершен с ошибкой. URL F:/USR1CV8/Шифрование релизов/BuildTemp/EncryptedFiles/Configuration.xml не может быть преобразован в полное имя объекта метаданных
}
Дело в том, что загружаемые файлы у меня находятся в отдельном каталоге, куда помещаются только те файлы, которые нужно загружать , а не вся конфигурация.
С такими вводными у меня были ошибки, когда я пытался файл подсунуть, где перечислены имена загружаемых файлов. Ошибки не было, если я использовал именно перечисление файлов в командной строке, а не файл с перечислением загружаемых файлов. Вы же сделали, что теперь в любом случае загрузка происходит через файл с перечнем загружаемых файлов.
Еще конечно у меня непонятки, что в документации написано, что нужно использовать все относительные пути, но у меня работает только с абсолютными путями.

В тестах я указывал короткие пути - все работает.

Я правильно понимаю, что если вызвать ibcmdrunner ... Configuration.xml то ошибки не будет, а если вызвать

echo Configuration.xml > list.txt
ibcmdrunner ... < list.txt

то будет ошибка?

ЕМНИП, при загрузке файла конфигурации к нему надо всегда грузить основной язык. Я с таким поведением встретился еще при работе с выгрузкой в EDT: https://github.com/khorevaa/gitsync-plugins/blob/5ed03ef4ae67bf8c925e17c38c59f54689fbda05/src/%D0%9A%D0%BB%D0%B0%D1%81%D1%81%D1%8B/edtExport.os#L310

@akademik1986 Да, я проверил сейчас на тестах - любой файл, кроме Configuration.xml можно загрузить в одиночку. А Configuration.xml грузится только в паре с языком:

ВыбранныеФайлы = Новый Массив;
ВыбранныеФайлы.Добавить("Configuration.xml");
ВыбранныеФайлы.Добавить("Languages/Русский.xml");

Ух как. Интересно. А попробуй загрузить Configuration.xml без языка, но не через файл, а просто указанием файла с полным путём, загрузит же? У меня работает)

хмм, шайтанама - работает...

infobase config import files --base-dir="tests\fixtures\1.0\files" --no-check "Configuration.xml"
[INFO] Импорт файлов конфигурации из XML...
[INFO] Импорт файлов конфигурации из XML успешно завершен

Это хорошо, что такая дискуссия развернулась. Я как раз не мог понять по какому пути пойти - через доп.файл или как предлагает akademik1986. Может быть реализовать оба варианта и отразить в документации, что Configuration.xml должен быть в паре с языком со ссылкой на это обсуждение?

Лучше, конечно, все-таки учитывать особенности платформы - т.к. для списка файлов всегда нужно будет указывать в нем язык.

С другой стороны, наверно для случая указания одного файла использовать функционал передачи выбранных файлов списком несколько избыточно. Добавлю вырожденный случай списка отдельным условием.