При использовании метода частичной загрузки файлов выходит ошибка превышения длины командной строки
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 должен быть в паре с языком со ссылкой на это обсуждение?
Лучше, конечно, все-таки учитывать особенности платформы - т.к. для списка файлов всегда нужно будет указывать в нем язык.
С другой стороны, наверно для случая указания одного файла использовать функционал передачи выбранных файлов списком несколько избыточно. Добавлю вырожденный случай списка отдельным условием.