Книга знаний

1С:Предприятие / v8 / Приемы программирования / Формы

v8: Запись значения в элемент управления со срабатывнием события ПриИзменении

У каждого наверное хоть раз возникала необходимость после записи значения в какой либо элемент управления вызвать для него обработчик события ПриИзменении, а о вызове самого события вам приходилось только мечтать. Здесь вы найдете решение этой проблемы.Автор статьи: TormozIT | Редакторы: Гений 1С,
Последняя редакция №8 от 22.02.07 | История
URL: http://kb.mista.ru/article.php?id=479

Ключевые слова: ПриИзменении, программно, элемент управления


Для максимальной универсальности нужно создать пустую форму, разумнее всего общую. Назовем ее "Пустышка".
// Интерактивно записывает значение в элемент управления. Интерактивность заключается в срабатывании
// события ПриИзменении у элемента управления. Элемент управления должен иметь фокус ввода.
//
// Параметры:
//  ЭлементУправления – ЭлементУправления – которому присваиваем значение;
//  Значение     – Произвольный – присваиваемое значение;
//  *ФормаИнициатор - Форма, *Неопределено - которая будет использована в качестве инициатора события;
//               если не указана, то будет создана временная форма-пустышка.
//
Процедура ЛксИнтерактивноЗаписатьВЭлементУправления(ЭлементУправления, Значение, ФормаИнициатор = Неопределено) Экспорт
    
    Перем СтарыйВладелец, СтарыйЗакрыватьПриВыборе;
    
    Если ФормаИнициатор = Неопределено Тогда
        ФормаИнициатор = ПолучитьОбщуюФорму("Пустышка", ЭлементУправления);
    Иначе
        СтарыйВладелец = ФормаИнициатор.ВладелецФормы;
        СтарыйЗакрыватьПриВыборе = ФормаИнициатор.ЗакрыватьПриВыборе;
        ФормаИнициатор.ВладелецФормы = ЭлементУправления;
        ФормаИнициатор.ЗакрыватьПриВыборе = Ложь;
    КонецЕсли;
    ФормаИнициатор.ОповеститьОВыборе(Значение); 
    Если СтарыйЗакрыватьПриВыборе <> Неопределено Тогда
        ФормаИнициатор.ВладелецФормы = СтарыйВладелец;
        ФормаИнициатор.ЗакрыватьПриВыборе = СтарыйЗакрыватьПриВыборе;
    КонецЕсли;

КонецПроцедуры // ЛксИнтерактивноЗаписатьВЭлементУправления()


Если в контексте доступна какая то форма, то лучше ее передать в качестве 3-го параметра, т.к. это будет быстрее, чем создавать каждый раз форму-пустышку.

Описание | Рубрикатор | Поиск | ТелепатБот | Захваченные статьи | Установки | Форум
© Станислав Митичкин (Волшебник), 2005-2025 | Mista.ru

Яндекс.Метрика