На форме обработки есть 3 таблицы значений (Таб1, Таб2 и Таб3). При активизации строки у Таб1 я заполняю некоторыми данными Таб 2 и Таб3. У Таб2 тоже есть событие ПриАктивизацииСтроки() и при тыкании мышкой на Таб2 я заполняю данными Таб3.
Проблема в следующем: если тыкнуть на Таб1 - то заполнится Таб2 и Таб3 по алгоритму. При этом, когда заполняется программно Таб2 - то срабатывает событие ПриАктивизацииСтроки() и начинает заполняться Таб3 алгоритмами из Таб2 (перебивая при этом заполнение алгоритмами из Таб1).
Можно ли как-то определить, когда строка активизируется программно, а когда - вручную? Или как-то по-другому избежать срабатывания алгоритма ПриАктивизацииСтроки() у Таб2, если запущено событие ПриАктивизацииСтроки() из Таб1?
(2) Раскрою мысль: щёлкаю по Таб1, взвожу реквизит АктивенАлгоритм1 = Истина. Далее в событии у Таб2 ПриАктивизацииСтроки() проверяю этот флаг, и если он = Истина, то событие у Таб2 не активизируется. А как быть, если я вручную активизирую строку из Таб2, и хочу, чтобы эта активизация сработала в событии? В какой момент установить АктивенАлгоритм1 = Ложь?
Попробуй в ПриАктивации у Таб2 делать заполнение Таб3 не сразу, а через ПодключитьОбработчикОжидания() - я так обычно делаю, чтобы успевало отрисоваться (задержки 0.1 хватает)
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший