|
1с8 как проверить есть ли у элемента формы событие? | ☑ | ||
---|---|---|---|---|
0
VitaliyTokarev
18.11.11
✎
10:10
|
Есть необходимость автоматически проверять есть ли события у элементов формы. По хорошему, хочу всё занести в ТЗ: Элемент формы, реквизит (если привязан), событие (ссылка на процедуру)
Кто-нибудь сталкивался? |
|||
1
Скимен
18.11.11
✎
10:16
|
проверить скриптом или щелкая мышью в окне?
|
|||
2
vmv
18.11.11
✎
10:22
|
хлопотно это, но возможно
|
|||
3
VitaliyTokarev
18.11.11
✎
12:14
|
(1) Скриптом
(2) Это понятно, что хлопотно... А вот как - я пока не нашёл. Только зная имя можно вытянуть. А без него? |
|||
4
vmv
18.11.11
✎
12:24
|
(3) вам нужно знать и где-то хранить все ВИДЫ обработчиков событий элементов формы.
НО для каждого элемента формы будет свой набор событий, например для ТабличногоПоля он свой, для флажка свой, для строки свой, для списка свой и т.д. Если вам удасца собрать в некую структуру все варианты событий, например в виде <ТипЭлемента - СтруктураИменСобытий> ЭФТабличноеПоле - СтруктураИменСобытийТабличноеПоле ЭФФлаг - СтруктураИменСобытийФлаг ЭФПолеВвода - СтруктураИменСобытийПолеВвода ..... то дело в шляпе, так как далее все просто Функция ПолучитьДействияТабличногоПоля(ТабличноеПоле) Экспорт мСобытия = Новый Массив; мСобытия.Добавить("Выбор"); мСобытия.Добавить("ВыборЗначения"); мСобытия.Добавить("НачалоПеретаскивания"); мСобытия.Добавить("ОбработкаВыбора"); мСобытия.Добавить("ОбработкаЗаписиНовогоОбъекта"); мСобытия.Добавить("ОкончаниеПеретаскивания"); мСобытия.Добавить("ПередНачаломДобавления"); мСобытия.Добавить("ПередНачаломИзменения"); мСобытия.Добавить("ПередОкончаниемРедактирования"); мСобытия.Добавить("ПередУдалением"); мСобытия.Добавить("Перетаскивание"); мСобытия.Добавить("ПослеУдаления"); мСобытия.Добавить("ПриАктивизацииКолонки"); мСобытия.Добавить("ПриАктивизацииСтроки"); мСобытия.Добавить("ПриАктивизацииЯчейки"); мСобытия.Добавить("ПриВыводеСтроки"); мСобытия.Добавить("ПриИзмененииФлажка"); мСобытия.Добавить("ПриНачалеРедактирования"); мСобытия.Добавить("ПриОкончанииРедактирования"); мСобытия.Добавить("ПриПолученииДанных"); мСобытия.Добавить("ПриСменеТекущегоРодителя"); мСобытия.Добавить("ПроверкаПеретаскивания"); ДействияТП = Новый Соответствие; Для Каждого ИмяСобытия Из мСобытия Цикл ИмяОбработчикаСобытия = ""; Попытка ИмяОбработчикаСобытия = Строка(ТабличноеПоле.ПолучитьДействие(ИмяСобытия)); Исключение // Источник ТабличногоПоля не предполагает такого события КонецПопытки; Если ПустаяСтрока(ИмяОбработчикаСобытия) Тогда Продолжить; КонецЕсли; ДействияТП.Вставить(ИмяСобытия, ИмяОбработчикаСобытия); КонецЦикла; Возврат ДействияТП; КонецФункции все остальное от лукавого - инфа 100%) |
|||
5
VitaliyTokarev
18.11.11
✎
13:55
|
(4) "так как далее все просто" - интересно )))
Мне нужно именно "СтруктураИменСобытийТабличноеПоле" или "СтруктураИменСобытийФлаг" или "СтруктураИменСобытийПолеВвода". Как и куда сложить - это уже не проблема. Проблема в получении всех имён реально существующих событий, а не гипотетически существующих. Ну или ссылки на обработчики... Без разницы - не суть важно. |
|||
6
VitaliyTokarev
18.11.11
✎
13:55
|
(4) к (5) - ой, код не увидел ))))
|
|||
7
VitaliyTokarev
18.11.11
✎
13:59
|
(4) Спасибо!
В общем, всё-равно руками все события нужно сначала где-то описать... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |