На форме обработки есть 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 хватает)
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший