Снегопат

Обсуждение Снегопата
Текущее время: 12 май 2024, 11:17

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




Начать новую тему Ответить на тему  [ Сообщений: 64 ]  На страницу Пред.  1, 2, 3, 4, 5, 6, 7  След.
Автор Сообщение
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 20 мар 2012, 09:26 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Ну вот, как и обещал, сегодня выпускаю версию с событиями метаданных.
Небольшой пример, как просмотреть события:
Код:
function onMetaDataEvent(e)
{
    /*
        e.kind - вид события, описаны в библиотеке типов Снегопата.
        e.request - если true, значит идет запрос о возможности выполнения операции,
            при установке e.result в false - отмена. Если false - просто уведомление
            о событии
     */
    var text = "Metadata event " + e.kind +
        "\n request: " + e.request +
        "\n result: " + e.result +
        "\n container: " + e.container.identifier +
        "\n object: " + e.obj.name
    if(e.prop)
        text += "\n property: " + e.prop.name(1)
    Message(text)
}
events.connect(metadata, "MetaDataEvent", SelfScript.self, "onMetaDataEvent")

События таковы:
Код:
"Добавление" - mdeAdd = 0
"Изменение свойства"   - mdeChangeProp = 1
"Удаление" - mdeDelete = 2
"Изменение объекта" - mdeChange = 3
"Перед сохранением" - mdeSave = 4
"Закрытие UI" - mdeClose = 5
"После сохранения" - mdeAfterSave = 6
"Открытие UI" - mdeOpen = 7


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 04 апр 2012, 16:07 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Александр, есть возможность получить из формы и ее элементов ответы на вопросы:
1. Список всех события для формы, разных элементов формы ?
2. список всех подключенных обработчиков (код в модуле) для формы, ее элементов?
3. получить текст этих обработчиков


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 04 апр 2012, 16:18 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:36
Сообщения: 1085
Саш, еще вопрос: нельзя ли получить список всех предопределенных событий для модуля объекта или набора записей - типа ПередЗаписью, ОбработкаПроведения ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 04 апр 2012, 20:53 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
artbear писал(а):
Александр, есть возможность получить из формы и ее элементов ответы на вопросы:
1. Список всех события для формы, разных элементов формы ?
2. список всех подключенных обработчиков (код в модуле) для формы, ее элементов?
3. получить текст этих обработчиков

Можно если только выгрузив форму в текст и вручную распарсив содержимое.
Пример как налету достучаться до "внутреннестей" формы есть в скрипте.
Вроде есть проект v8reader вроде бы, в котором работают над парсингом внутреннего представления формы.
Ну и модуль самому парсить, в поисках процедур.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 04 апр 2012, 20:55 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
artbear писал(а):
Саш, еще вопрос: нельзя ли получить список всех предопределенных событий для модуля объекта или набора записей - типа ПередЗаписью, ОбработкаПроведения ?

Вроде это у меня получалось, попробую вытащить наружу.
Вообще, работа с обработчиками на форме крайне важна - она позволит слёту автоматом типизировать параметры метода-обработчика.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 05 апр 2012, 08:35 
Не в сети

Зарегистрирован: 24 авг 2011, 15:32
Сообщения: 722
Может не в тему, но у 15-го движка появилась вот такая удобная штуковина:
Изображение
Включил в снегопате трассировку. И вот что мне выдало при выборе события "ПриАктивизацииСтроки":
Код:
cmd: groupid={60EDB81D-887B-478E-94EE-7FEF2B13393D}, num=0, param=0, object=0x00000000


одинаковые события одинаковых типов элементов форм вроде как имеют одинаковый ИД


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 04 июн 2012, 10:33 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
orefkov писал(а):
перебирать все равно придется. Может свойство modified объекта метаданных поможет?

А можно ли узнать, что именно в объекте изменилось? Есть не сохраненные данные и хотелось бы расширить диалог закрытия конфигурации "Конфигурация была изменена, сохранить? " и варианты ответов "Да, Нет, Отмена, Посмотреть изменения"...
Частный случай решается если отслеживать измененные/добавленные объекты и после нажатия сохранить очищать список, но вот никак не могу получить старый объект. Или только сравнивать с конфигурацией базы данных, но тогда теряются изменения между сохранением кофнигурации.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 04 июн 2012, 10:39 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Надо отлавливать событие "onMetaDataEvent" и вести свой журнальчик.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 26 июн 2012, 14:06 
Не в сети

Зарегистрирован: 20 дек 2011, 10:31
Сообщения: 588
Откуда: Украина, Запорожье
orefkov писал(а):
Ну вот, как и обещал, сегодня выпускаю версию с событиями метаданных.
Небольшой пример, как просмотреть события:

вот пробую прикрутить типа iTimeMachine ;) , только столкнулся с проблемой: повесил событие, событие добавления сработало, но если в событии получить текст изменяемого модуля, то возвращает уже с добавленным символом :( , пример:
Код:
if(e.prop) {
   if (!(propsModules[e.prop.name(1)]==undefined)){
   //is module
    mdobj["module"]=e.obj.getModuleText(e.prop.name(1))
вот тут уже идет измененный код. Можно как-то определить типа beforeСhange ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Работа с метаданными
СообщениеДобавлено: 26 июн 2012, 14:13 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Это вряд ли. Может, только в некоторых частных случаях. Попробую для модулей, но гарантий, что смогу - не даю.


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

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


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

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


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

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