PDA

Просмотр полной версии : Обработчик событий



Яремеич
09.10.2019, 20:45
Добрый вечер. Понимаю, что вопрос глупый и легкий, но пока вообще не понимаю...
Вот в чем вопрос. Есть справочник "Клиенты". У него есть такие поля как "Телефон" и "ЭлектроннаяПочта". Так вот в чем задача...Нужно сделать так. Если поле "Телефон" заполняется, то поле "ЭлектроннаяПочта" исчезает, и, наоборот. Если поле "ЭлектроннаяПочта" заполняется, то поле "Телефон" исчезает. Можно сделать через обработчик событий "ПриИзменении"? Если да, то как?
Как записать код для этих двух полей?
Помогите пожалуйста решить эту проблему. Нужно. чтобы это происходило автоматически, а не ставили мы вручную видимость каждого элемента

avm3110
10.10.2019, 08:56
Есть форма, есть поля. Есть обработчики событий как формы, так и этих полей.
Делаете обработчик события формы "При открытии" в котором проверяете "Если первое поле заполнено" - то программно ставите видимость второго в ЛОЖЬ, а если заполнено только втрое, то у первого видимость в ложь

Ну и делаете по обработчику у каждого из полей "При изменении" - аналогично.

Яремеич
10.10.2019, 19:12
Есть форма, есть поля. Есть обработчики событий как формы, так и этих полей.
Делаете обработчик события формы "При открытии" в котором проверяете "Если первое поле заполнено" - то программно ставите видимость второго в ЛОЖЬ, а если заполнено только втрое, то у первого видимость в ложь

Ну и делаете по обработчику у каждого из полей "При изменении" - аналогично.

То есть я могу написать: для поля "НомерТелефона" обработчик &НаКлиенте
Процедура ПриОткрытии(Отказ)
Если Поле.НомерТелефона<>"" Тогда
Поле.ЭлектроннаяПочта=Ложь ;
КонецЕсли;
КонецПроцедуры

Для формы:

//&НаКлиенте
//Процедура ПриОткрытии(Отказ)
// Если Поле.НомерТелефона<>"" Тогда
// Поле.ЭлектроннаяПочта=Ложь ;
// КонецЕсли;
//КонецПроцедуры

Если второй обработчик закомментировать, то первый работает, но только вот так: Если я пишу в поле "НомерТелефона" и нажимаю Tab, то во втором поле просто появляется слово "Нет". Если наоборот, то слово "Да". А если подключаю второй обработчик, то он не видит переменную "Поле" и выжает ошибки

avm3110
11.10.2019, 09:18
Поле.ЭлектроннаяПочта=Ложь ;

Это вы записываете в элемент формы ЭлектроннаяПочта значение "Ложь" - что собственно и видите при отладке.

А нужно изменить свойство видимости этого поля.

Элементы.ЭлектроннаяПочта. Видимость = Ложь;

scratch.sv
11.10.2019, 13:48
Скорее
Поле.ЭлектроннаяПочта.Види мость=не ЗначениеЗаполнено(Поле.Ном ерТелефона);

ipeghfkjdb
09.11.2019, 12:59
Да, мне тоже это помогло