Снегопат

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

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




Начать новую тему Ответить на тему  [ Сообщений: 6 ] 
Автор Сообщение
СообщениеДобавлено: 02 май 2012, 08:39 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Эксперементирую с программной работой с формой скрипта. Наткнулся на один неприятный момент: при попытки динамического подключения обработчика события формы (при помощи УстановитьДействие/SetAction) с параметрами, возникает ошибка "Недопустимое значение параметра № 2 (Процедура, указанная в качестве обработчика события, имеет неверное количество параметров".

При этом обработчики без параметров аттачатся "на ура".

Пример воспроизведения этой ошибки я набросал в скрипте scripts\Tests\ScriptFormExample\scrFormExample.js (см. коммит e012cbd42c).

Ошибку получим, если в MyScriptForm() раскомментировать вызов

Код:
    this.attachEvent('BeforeClose');


Обратите внимание, что для событий OnOpen и OnClose, не имеющих параметров, обработчики назначаются успешно и отрабатывают. Подозреваю, что все это из-за того, что количество параметров функции в JavaScript неограничено, даже если параметры описаны в определении функции явно. Но сам Снегопат как-то же умеет назначать обработчики?

Саша, вопрос конечно же, в первую очередь к тебе: возможно ли как-то устранить эту ошибку и сделать так, чтобы обработчики с параметрами также можно было назначать динамически?

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 май 2012, 10:12 
Не в сети
Администратор
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Сейчас у меня просто возвращает 0 при запросе количества параметров.
Видимо, статически назначенным обработчикам деваться уже некуда, и они работают.
Ок, я попробую извлекать и выдавать реальную инфу о количестве параметров.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 02 май 2012, 10:40 
Не в сети
Аватара пользователя

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Заранее спасибо! С проблемой столкнулся при реализации класса ScriptForm, который бы облегчил разработчикам программирование формы скрипта и который бы можно было наследовать (делаю его потомком stdlib.Class).

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


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

Зарегистрирован: 24 авг 2011, 15:04
Сообщения: 2052
Поправил, скоро зарелизю.


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

Зарегистрирован: 24 авг 2011, 15:53
Сообщения: 448
Откуда: Саратов
Продолжаю эксперементировать, столкнулся еще с одним непонятным поведением.

При попытке динамически назначить обработчик нажатия кнопки командной панели возникает исключение "Объект не поддерживает это свойство или метод", но обработчик успешно назначается и корректно отрабатывает в последствии.

Порядок воспроизведения (скрипт и форма, демонстрирующие проблему - http://snegopat.ru/scripts/info/12ab0d854d):

1. Открываем форму скрипта, вызвав макрос "Показать".

2. Обращаем внимание, что поскольку обработчик кнопки командной панели "Кнопка 2" не назначен на момент открытия формы, то сама кнопка не доступна.

3. Нажимаем на кнопку "Кнопка 1" на форме. В обработчике нажатия этой кнопки выполняется установка действия нажатия на кнопку "Кнопка 2" командной панели. Обработчик - метод КомманднаяПанель1Кнопка2 объекта MyScriptForm. При нажатии на кнопку выбрасывается исключение "Объект не поддерживает это свойство или метод".

4. Закрываем окно с исключением (отладку не начинаем). Видим, что кнопка "Кнопка 2" стала доступной. При нажатии на кнопку "Кнопка 2" выводится сообщение 'При нажатии кнопки командной панели', т.е. обработчик отрабатывает.

Обходится исключение его "проглатыванием" в конструкции try/catch с пустым обработчиком исключения.

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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: 24 май 2012, 20:40 
Не в сети
Администратор
Аватара пользователя

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


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 6 ] 

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


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

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


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

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