Вход | Регистрация


1С:Предприятие :: 1С:Предприятие 8 общая

Как файл расширения выгрузить в файлы и собрать обратно?

Как файл расширения выгрузить в файлы и собрать обратно?
Я
   MaxS
 
03.09.18 - 17:33
Для типовых баз разных версий готовится расширение. Есть некоторый шаблон в виде файла cfe. Необходимо выгрузить расширение в файлы, программно заменить один модуль и собрать расширение обратно.
Как это сделать, не подскажете?

В документации нашел только 2 варианта:
1) выгрузить в файлы из расширения, подключенного к конфигурации и загрузить из файлов обратно.
2) выгрузить их хранилища, загрузить в хранилище, обновить расширение в конфигурации из хранилища.
Оба варианты неудобны.
 
 
   Denis_CFO
 
1 - 03.09.18 - 18:20
(0) распакуй с v8unpack, внеси изменения и запакуй обратно. Это даже из 1с-ки сделать можно.
   MaxS
 
2 - 03.09.18 - 18:46
(1) И давно v8unpack понимает расширения конфигураций? И будет ли работать с платформами 8.3.12, 8.3.13?
   MaxS
 
3 - 04.09.18 - 06:06
v8unpack версия 10-ти летней давности. Боязно как-то отдавать клиентам продукт, собранный нетиповым способом.
Пробовал воспользоваться ключами DumpExternalDataProcessorOrReportToFiles и LoadExternalDataProcessorOrReportFromFiles для внешних обработок. Почему-то ругается на расширение, что это не внешняя обработка ;)
Есть ещё варианты?
   Мыш
 
4 - 04.09.18 - 06:13
(3) ДвоичныеДанные
   MaxS
 
5 - 04.09.18 - 06:52
(4) Что это?
Ладно, для поддержки разговора: XDTO
   Мыш
 
6 - 04.09.18 - 09:44
(5) Ты пишешь: "Боязно как-то отдавать клиентам продукт, собранный нетиповым способом"

А это типовой способ:
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайла);
Поток = ДвоичныеДанные.ОткрытьПотокДляЧтения();
Буфер = Новый БуферДвоичныхДанных(1024);
Поток.Прочитать(Буфер, 0, 1024);
// Обработка и т.д. и т.п.

Поток.Закрыть();
   Мыш
 
7 - 04.09.18 - 09:55
Не пошла дискуссия. Жаль )

Тогда копипасту выложу:
/DumpConfigFiles <каталог выгрузки> [-Module] [-Template] [-Help] [-AllWritable] [-Picture] [-Right][-Extension <имя расширения>]
— выгрузка некоторых свойств объектов метаданных конфигурации (модулей, макетов, картинок, прав доступа и справочной информации). Допустимо использовать следующие параметры:

<каталог выгрузки> — каталог расположения файлов свойств;
Module — признак необходимости выгрузки модулей;
Template — признак необходимости выгрузки макетов;
Help — признак необходимости выгрузки справочной информации;
AllWritable — признак выгрузки свойств только доступных для записи объектов;
Picture — признак выгрузки общих картинок;
Right — признак выгрузки прав;
Extension <имя расширения> — обработка расширения с указанным именем. Если расширение успешно обработано возвращает код возврата 0, в противном случае (если расширение с указанным именем не существует или в процессе работы произошли ошибки) — 1.

/DumpConfigToFiles <каталог выгрузки> [-Extension <имя расширения>]
   Ботаник Гарден Меран
 
8 - 04.09.18 - 10:07
(7)
Автор не хочет DUMP из конфигурации. У него мождет не быть конфигурации, а есть только расширение в CFE.
   Мыш
 
9 - 04.09.18 - 10:12
(8) Последовательно: /LoadCfg /DumpConfigToFiles <обработка> /LoadConfigFromFiles /DumpCfg
   MaxS
 
10 - 04.09.18 - 11:11
(6) Это тоже нетиповой способ доступа к внутренностям файлов 1С. Так можно дойти до того, что для удаления элемента справочника воздействовать на пластину HDD на физическом уровне. Остановить диск, вынуть пластину, затереть данные, вернуть пластину обратно.
(7) (8) - про это отмечено в шапке топика.
Допустим нужно подготовить 10 расширений для разных конфигураций. Значит нужно подготовить 10 баз 1С и подключать к каждой расширение.
Если нужно внести изменение в общий шаблон расширения, придётся потом от 10 баз отключить старые версии расширений и подключить новое.
Если это действительно единственный путь, то придётся так и поступить.
Но вдруг есть более быстрое и правильное типовое решение.
 
 Рекламное место пустует
   Вафель
 
11 - 04.09.18 - 11:15
(10) а как ты хотел разрабатывать расширение ни разу не запуская его на реальной базе чтоли?
   Вафель
 
12 - 04.09.18 - 11:15
Кстати расширения можно обновлять
   MaxS
 
13 - 04.09.18 - 11:21
(11) Почему? На одной базе ведется разработка. После тестирования выгружаю в файл и на основе образца генерирую 10 аналогичных с другим текстом одного из модулей.
   Вафель
 
14 - 04.09.18 - 11:22
(13)  и не проверяешь потом на тех базах?
   youalex
 
15 - 04.09.18 - 11:26
РасширенияКонфигурации.Получить();

Расширение.ПолучитьДанные().Записать(ИмяФайла);
   youalex
 
16 - 04.09.18 - 11:32
(15) не то)
   MaxS
 
17 - 04.09.18 - 11:33
(14) Проверять тоже нужно, но хочется иметь два сценария - быстрый и полный с проверкой.
Иногда проверка не нужна, т.к. этот же код задействован во внешней обработке. Для них у меня есть сборка разборка и проверка.
   MaxS
 
18 - 04.09.18 - 16:15
Возможен ли такой вариант?
Протестировал, скинул в GitHub.
Потом оттуда из одного источника нагенерировал 10 расширений.
   Вафель
 
19 - 04.09.18 - 16:16
(18) сама 1ска, конфигуратор - это умеет в пакетном режиме
   MaxS
 
20 - 04.09.18 - 16:19
(19) ключ для пакетного режима можно озвучить?
   Вафель
 
21 - 04.09.18 - 16:21
/LoadConfigFiles <каталог загрузки> [-Module] [-Template] [-Help] [-AllWritable] [–Picture] [–Right] [-Extension <Имя расширения>]
   Вафель
 
22 - 04.09.18 - 16:22
или этот
/LoadConfigFromFiles <каталог загрузки> [-Extension <Имя расширения>] [-AllExtensions] –files “<файлы>” –listFile <файлСписка> -Format <режим> [-updateConfigDumpInfo]
   Вафель
 
23 - 04.09.18 - 16:23
можно CI настроить.
Типа пушишь в основной гит, оттуда разлетается в свои и оттуда сборка
   Вафель
 
24 - 04.09.18 - 16:23
для 10 баз уже есть смысл узучить как CI работает
   MaxS
 
25 - 04.09.18 - 16:24
(21) (22) что-то мы по кругу ходим.
Каким образом можно этими ключами генерировать 10 расширений из одного источника?
   Вафель
 
26 - 04.09.18 - 16:24
(25) зачем из 1?
   MaxS
 
27 - 04.09.18 - 16:30
(26) Вопрос в том - можно или нет subj
Если нет, придётся держать 10 баз с расширениями и обновлять каждое, выгружать в файлы xml, корректировать один модуль, загружать из файлов обратно в расширение и
потом выгружать из каждого в файл cfu.
   MaxS
 
28 - 04.09.18 - 16:32
(27) cfe
(24) А есть смысл? CI  EDT и т.п.?
   MaxS
 
29 - 04.09.18 - 16:49
В EDT 1.7 пытался провернуть подобное. Не взлетело, т.к. даже базовый функционал не работал. Возможности работать в одном исходнике и генерировать тестировать на 10-ти базах там не увидел.
   MaxS
 
30 - 16.10.18 - 08:02
Вот что получилось

// удаление всех расширений конфигурации

+" /DeleteCfg  -AllExtensions "

// готовим шаблон расширения

ДвоичныеДанные.Записать(ИмяФайлаРасширенияШаблон);

// загружаем расширение в конфигурацию

+" /LoadCfg " + ВКавычках(ИмяФайлаРасширенияШаблон) +" -Extension " + ИмяРасширения

// выгружаем модули из расширения, это для отладки. потом убрать

//+" /DumpConfigFiles  "
//+ ВКавычках(КаталогРасширения)

//+" -Module " 
//+" -Extension " + ИмяРасширения

// смотрим имя файла нужного нам модуля


// генерируем модуль, сохраняем в файл, в пустой КаталогРасширения


// загружаем модуль в расширение

+" /LoadConfigFiles  " + ВКавычках(КаталогРасширения) +" -Module " +" -Extension " + ИмяРасширения

// выгружаем расширение в файл

+" /DumpCfg  " + ВКавычках(ИмяФайлаРасширения) +" -Extension " + ИмяРасширения  + "  /Out" + ВКавычках(ИмяЛогФайла);
   MaxS
 
31 - 16.10.18 - 08:07
(30) Результат там.
Поиск по интернету приводит в этот топик, решил его заполнить. Вдруг самому же опять пригодится. ;)

Получается много накладных расходов.
Условно на 10 баз для тестирования нужно ещё 10 пустых баз для генерации расширений. SSD диска оказалось мало, пришлось освобождать место.


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует