Имя: Пароль:
1C
1C 7.7
v7: Выполнение процедуры привязать к событию
,
0 Enlighted
 
03.05.15
16:21
Знатоки. Добрый день. Подскажите пожалуйста такую вещь.

На форме имеется поле со списком, как заставить некую процедуру выполняться если пользователь выбрал некое значение в этом списке?
1 Torquader
 
03.05.15
16:23
Семёрка стандартно выбранное "отдаёт" после перехода к другому полю, так что или фоновое обновление (флажок на форме) или читать, что умеет FormEx.
2 ДенисЧ
 
03.05.15
16:24
Блин, 7ку лень запускать...
Смотри СП на предмет предопределенных процедур модуля формы. Там ПриВыборе или похожее по смыслу
3 Cap_1977
 
03.05.15
16:32
(0) При тыкании пользователя в список значений (либо в список значений с пометками) не происходи смена фокуса элемента. В результате фенкция прицепленная к списку не отрабатывает.

Решение.
Повесить на форму скрытое текстовое поле в котором прописать нужную процедуру.
Она будет вызваться каждый раз когда пользователь что то ткнул куда то на форме.
В ней отлавливать нужное сбытие. Подобное реализовато в типовой ТиС 9.2, например в форме документа реализация.
4 Остап Сулейманович
 
03.05.15
16:36
(2) ПриНачалеВыбораЗначения(). Хотя не всегда его можно примутить. Например если вставить свою колонку в табличную часть (ну кинуть туда текстовую колонку). Там просто не происходит выбор. Тогда нужно в ПриНачалеРедактированияСтроки() отлавливать АктивныйЭлемент().
5 ChMikle
 
03.05.15
17:22
обработкаподбора() , нет ?
6 Enlighted
 
03.05.15
18:21
(5) а разве эта процедура сработает с полем со списком?
7 Enlighted
 
03.05.15
18:40
Поле со списком называется "ВыборСМС"

Процедура ОбработкаПодбора(ВыборСМС)
    
    Сообщить("ну началось");

КОнецПроцедуры

Не срабатывает процедура при выборе значения в поле
8 Cap_1977
 
03.05.15
18:44
Процедура Алерт()
Если Форма.АктивныйЭлемент() = "ВыборСМС" Тогда
Сообщить("ну началось");
КонецЕсли;
КонецПроцдеуры

На форму текстовое поле.
Алерт в формулу этого текстового поля.
9 Zamestas
 
03.05.15
18:45
(8) +1
10 Enlighted
 
03.05.15
19:38
Алерт переменная не определена. Походу её надо добавить в реквизиты?
11 Enlighted
 
03.05.15
19:39
добавляю скобки в формулу Алерт()
говорит процедура вызывается как функция
12 Garykom
 
гуру
03.05.15
19:40
(11) ну сделай функцией без возврата значения
13 Garykom
 
гуру
03.05.15
19:41
(12)+ и этот вспомогательный текстовый элемент за пределы формы чтобы его не видно или на отдельный слой
14 ChMikle
 
03.05.15
20:39
не правильно вопрос понял, думал ты из справочника в списокзначений добавляешь
15 ChMikle
 
03.05.15
20:40
тогда функцию засовывай в вызов на форме списка на второй закладке
16 Enlighted
 
03.05.15
21:18
(14) Да изначально я добавляю из справочника значения в список значений таким способом.

СправочникСМС = СоздатьОбъект("Справочник.СМС");
    СправочникСМС.ВыбратьЭлементы();
    сч = 1;
        ;
    Пока СправочникСМС.ПолучитьЭлемент() = 1 Цикл
        
        ВыборСМС.ДобавитьЗначение(сч, СправочникСМС.наименование);
        сч = сч + 1;
                
    КонецЦикла;

А потом когда пользователь в списке выбирает нужное значение, другое текстовое поле на форме должно принят соответствуюее этому значению текст.
Вот я и хочу чтобы когда юзер тыкнул по полю со списком событие присвоения сработало.
17 ChMikle
 
03.05.15
21:48
смотри, в списке на форме можно вставить любую процедуру , которая будет исполняться после выбора значния в списке. Дважды кликнешь и на второй закладке, если память не изменяет
18 Enlighted
 
03.05.15
22:08
(17) ИИИИессть спасибо.
19 ChMikle
 
03.05.15
22:16
(18) да не за что :)