|
Как файл расширения выгрузить в файлы и собрать обратно? | ☑ | ||
---|---|---|---|---|
0
MaxS
03.09.18
✎
17:33
|
Для типовых баз разных версий готовится расширение. Есть некоторый шаблон в виде файла cfe. Необходимо выгрузить расширение в файлы, программно заменить один модуль и собрать расширение обратно.
Как это сделать, не подскажете? В документации нашел только 2 варианта: 1) выгрузить в файлы из расширения, подключенного к конфигурации и загрузить из файлов обратно. 2) выгрузить их хранилища, загрузить в хранилище, обновить расширение в конфигурации из хранилища. Оба варианты неудобны. |
|||
1
Denis_CFO
03.09.18
✎
18:20
|
(0) распакуй с v8unpack, внеси изменения и запакуй обратно. Это даже из 1с-ки сделать можно.
|
|||
2
MaxS
03.09.18
✎
18:46
|
(1) И давно v8unpack понимает расширения конфигураций? И будет ли работать с платформами 8.3.12, 8.3.13?
|
|||
3
MaxS
04.09.18
✎
06:06
|
v8unpack версия 10-ти летней давности. Боязно как-то отдавать клиентам продукт, собранный нетиповым способом.
Пробовал воспользоваться ключами DumpExternalDataProcessorOrReportToFiles и LoadExternalDataProcessorOrReportFromFiles для внешних обработок. Почему-то ругается на расширение, что это не внешняя обработка ;) Есть ещё варианты? |
|||
4
Мыш
04.09.18
✎
06:13
|
(3) ДвоичныеДанные
|
|||
5
MaxS
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
|
|||
10
MaxS
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
|
Кстати расширения можно обновлять
|
|||
13
MaxS
04.09.18
✎
11:21
|
(11) Почему? На одной базе ведется разработка. После тестирования выгружаю в файл и на основе образца генерирую 10 аналогичных с другим текстом одного из модулей.
|
|||
14
Вафель
04.09.18
✎
11:22
|
(13) и не проверяешь потом на тех базах?
|
|||
15
youalex
04.09.18
✎
11:26
|
РасширенияКонфигурации.Получить();
Расширение.ПолучитьДанные().Записать(ИмяФайла); |
|||
16
youalex
04.09.18
✎
11:32
|
(15) не то)
|
|||
17
MaxS
04.09.18
✎
11:33
|
(14) Проверять тоже нужно, но хочется иметь два сценария - быстрый и полный с проверкой.
Иногда проверка не нужна, т.к. этот же код задействован во внешней обработке. Для них у меня есть сборка разборка и проверка. |
|||
18
MaxS
04.09.18
✎
16:15
|
Возможен ли такой вариант?
Протестировал, скинул в GitHub. Потом оттуда из одного источника нагенерировал 10 расширений. |
|||
19
Вафель
04.09.18
✎
16:16
|
(18) сама 1ска, конфигуратор - это умеет в пакетном режиме
|
|||
20
MaxS
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 работает
|
|||
25
MaxS
04.09.18
✎
16:24
|
(21) (22) что-то мы по кругу ходим.
Каким образом можно этими ключами генерировать 10 расширений из одного источника? |
|||
26
Вафель
04.09.18
✎
16:24
|
(25) зачем из 1?
|
|||
27
MaxS
04.09.18
✎
16:30
|
(26) Вопрос в том - можно или нет subj
Если нет, придётся держать 10 баз с расширениями и обновлять каждое, выгружать в файлы xml, корректировать один модуль, загружать из файлов обратно в расширение и потом выгружать из каждого в файл cfu. |
|||
28
MaxS
04.09.18
✎
16:32
|
(27) cfe
(24) А есть смысл? CI EDT и т.п.? |
|||
29
MaxS
04.09.18
✎
16:49
|
В EDT 1.7 пытался провернуть подобное. Не взлетело, т.к. даже базовый функционал не работал. Возможности работать в одном исходнике и генерировать тестировать на 10-ти базах там не увидел.
|
|||
30
MaxS
16.10.18
✎
08:02
|
Вот что получилось
// удаление всех расширений конфигурации +" /DeleteCfg -AllExtensions " // готовим шаблон расширения ДвоичныеДанные.Записать(ИмяФайлаРасширенияШаблон); // загружаем расширение в конфигурацию +" /LoadCfg " + ВКавычках(ИмяФайлаРасширенияШаблон) +" -Extension " + ИмяРасширения // выгружаем модули из расширения, это для отладки. потом убрать //+" /DumpConfigFiles " //+ ВКавычках(КаталогРасширения) //+" -Module " //+" -Extension " + ИмяРасширения // смотрим имя файла нужного нам модуля // генерируем модуль, сохраняем в файл, в пустой КаталогРасширения // загружаем модуль в расширение +" /LoadConfigFiles " + ВКавычках(КаталогРасширения) +" -Module " +" -Extension " + ИмяРасширения // выгружаем расширение в файл +" /DumpCfg " + ВКавычках(ИмяФайлаРасширения) +" -Extension " + ИмяРасширения + " /Out" + ВКавычках(ИмяЛогФайла); |
|||
31
MaxS
16.10.18
✎
08:07
|
(30) Результат там.
Поиск по интернету приводит в этот топик, решил его заполнить. Вдруг самому же опять пригодится. ;) Получается много накладных расходов. Условно на 10 баз для тестирования нужно ещё 10 пустых баз для генерации расширений. SSD диска оказалось мало, пришлось освобождать место. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |