Снегопат

Обсуждение Снегопата
Текущее время: 24 ноя 2024, 18:00

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3, 4  След.
Автор Сообщение
СообщениеДобавлено: 17 фев 2013, 11:56 
Не в сети

Зарегистрирован: 31 авг 2011, 17:21
Сообщения: 79
Уважаемые скриптописатели, скажите пожалуйста, реализуема ли в настоящее время такая система-некий аналог inserter-а для 7.7: скрипт читает настройку из xml файла, в которой указано примерно следующее:
<ИмяОбъекта.Форма>, например Справочник.Номенклатура.ФормаЭлемента
<Процедура>, например ПриОткрытии()
<ТекстДоВставки>, например ПоказыватьКартинку = 1;
<ТекстВставки> например ПоказыватьКартинку = 0;//в нашей конфиге никто не увидит картинку

тут возможны некоторые плюшки, например указание вставлять текст в начало или в конец процедуры, + возможность вставить текст в конец модуля (например если мы делаем подписку на события), также возможность не просто вставлять, но и заменять текст.

К чему все это - возможность упростить обновление крупных конфигураций. Все свои изменения типового модуля вносим в этот xml и потом натравляем скрипт на новый cf, после чего остается произвести обновление текущей конфигурации. В итоге - долой ручной труд, "вкалывают роботы - счастлив человек" и все такое. Думаю такая штука была бы многим интересной, а после ее обкатки и доведения до боевого состояния - можно было бы с ее помощью продвигать снегопат в неохваченные массы, особенно если сравнить по цене с программой-обновлятором от izhtc.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 02:21 
Не в сети

Зарегистрирован: 04 июн 2012, 09:28
Сообщения: 343
Я использую уже давно связку git + немножко прямых рук = > PROFIT.

А что за "программа-обновлятор"? Просто, чтобы понимать о чем речь идет. Может быть, там есть стоящие идеи.

_________________
В реальності все не так, як насправді


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 08:38 
Не в сети

Зарегистрирован: 31 авг 2011, 17:21
Сообщения: 79
Программа обновлятор - http://1c-izhtc.ru стоит неслабых денег. Не знаю ее внутренних способов работы, но теоретически она делает то, что я описал в (0), с уточнением, что она же и генерирует xml настройки вставки текста. Для генерации настройки вставки текста надо уметь парсить модули на уровне процедур, а лучше всего еще и текст внутри них. Я же вижу облегчение в том, чтобы создав сценарий вставки текста вручную - автоматизировать его выполнение.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 08:43 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
На мисте один из разработчиков говорил, что унутре все делается конвертацией конфы в 8.3, выгрузкой всего в файлы, модификацией файлов, загрузки обратно, и конвертацией обратно.
Если я конечно правильно понял.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 08:49 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Имхо, эффективнее эту задачу решать путем выгрузки модулей во внешние файлы, парсить, потом заливать обратно, собственно, как и делает обновлятор ИЖ-ТиСи, насколько мне известно.
Можно адаптировать скрипты CodeWorks Алексея Диркса, который в составе OpenConf'а есть, правда парсер там пока заточен под код 7.7... ну и на perl он.

Описание вставляемого кода в CodeWorks задается не при помощи XML, а на своем DSL, но все очень прозрачно, пример:

Код:
CodeWorks::RenameObject($ObjName, "ВводНового", "ВведенКопированием", "Копирование");
CodeWorks::ReplaceCode($ObjName, "", 'Процедура ВводНового\\(\\)', "Процедура ВводНового(Копирование)");

CodeWorks::CreateProc("ПриОткрытии", $OnOpen, "стар_ПриЗаписи");

CodeWorks::CreateProc("ВводНового", $OnNew, "ПриОткрытии");
CodeWorks::InsertCode($ObjName, "ВводНового", "ЭтотСпр.ВводНового(Копирование);");


CodeWorks::CreateProc("ПриЗаписи", $OnSave2, "");
CodeWorks::InsertCode($ObjName, "ПриЗаписи", "ПриИзмененииОбъекта(Контекст, ТекущийЭлемент(), РабочаяДата());\nстар_ПриЗаписи();");
CodeWorks::CreateProc("стар_ПриЗаписи", $OnSave1, "ПриЗаписи");

CodeWorks::InsertVarDecl($ObjName, "", "ЭтотСпр");
CodeWorks::InsertCode($ObjName, "", "\nЭтотСпр = СоздатьОбъект(\"ТСправочник\");");

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 08:56 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Александр, а что, разве обычный diff+patch не могут сделать эту работу?
Зачем выдумывать дополнительные языки?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 09:07 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
orefkov писал(а):
Александр, а что, разве обычный diff+patch не могут сделать эту работу?
Зачем выдумывать дополнительные языки?


А как при помощи "тупого" diff/patch для произвольно взятой конфигурации вставить во все модули объектов в обработчик события ПередЗаписью() вызов какой-либо своей процедуры в пакетном режиме, например? Или я чего-то про них не знаю?

Речь же в исходном посте шла о более сложных вещах, чем просто перенос перенос доработок из версии в версию, или я не правильно понял:

Цитата:
тут возможны некоторые плюшки, например указание вставлять текст в начало или в конец процедуры, + возможность вставить текст в конец модуля (например если мы делаем подписку на события), также возможность не просто вставлять, но и заменять текст

_________________
С уважением,
Александр Кунташов
Канал про 1С в Телеграме: @kuntashov_devnotes


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 09:13 
Не в сети

Зарегистрирован: 31 авг 2011, 17:21
Сообщения: 79
Уважаемый Александр, скажите пожалуйста, позволяет ли объектная модель снегопата получить модули по имени и обратиться к их содержимому с редактированием?

p.s. я имел в виду именно перенос доработок из версии в версию, а плюшки - это варианты разного размещения доработок (вне процедур), упрощение указания места вставки (в конец процедуры).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 09:16 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
А, ну это тогда более инструмент для модификации любой "чистой" конфы под свои стандарты.
Я то имел ввиду перенос своих доработок в свежий релиз поставщика, что везде делается с помощью 3-way merge.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 18 фев 2013, 09:18 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
2ildary
Конечно позволяет.
К модулю любых объектов любых контейнеров метаданных, открытых в конфигураторе (epf, erf, cf файлы)


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 39 ]  На страницу 1, 2, 3, 4  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 2


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB