Имя: Пароль:
1C
1С v8
Как отменить автоматическую активизацию строки на таблице на форме при заполнении?
0 Механик
 
03.03.22
16:25
На форме обработки есть 3 таблицы значений (Таб1, Таб2 и Таб3). При активизации строки у Таб1 я заполняю некоторыми данными Таб 2 и Таб3. У Таб2 тоже есть событие ПриАктивизацииСтроки() и при тыкании мышкой на Таб2 я заполняю данными Таб3.
Проблема в следующем: если тыкнуть на Таб1 - то заполнится Таб2 и Таб3 по алгоритму. При этом, когда заполняется программно Таб2 - то срабатывает событие ПриАктивизацииСтроки() и начинает заполняться Таб3 алгоритмами из Таб2 (перебивая при этом заполнение алгоритмами из Таб1).

Можно ли как-то определить, когда строка активизируется программно, а когда - вручную? Или как-то по-другому избежать срабатывания алгоритма ПриАктивизацииСтроки() у Таб2, если запущено событие ПриАктивизацииСтроки() из Таб1?
1 Галахад
 
гуру
03.03.22
16:43
Флаг добавить. АктивенАлгоритм1.
2 Механик
 
03.03.22
17:46
(1) А когда этот флаг снимать?
3 Механик
 
03.03.22
17:51
(2) Раскрою мысль: щёлкаю по Таб1, взвожу реквизит АктивенАлгоритм1 = Истина. Далее в событии у Таб2 ПриАктивизацииСтроки() проверяю этот флаг, и если он = Истина, то событие у Таб2 не активизируется. А как быть, если я вручную активизирую строку из Таб2, и хочу, чтобы эта активизация сработала в событии? В какой момент установить АктивенАлгоритм1 = Ложь?
4 lubitelxml
 
03.03.22
17:58
Попробуй в ПриАктивации у Таб2 делать заполнение Таб3 не сразу, а через ПодключитьОбработчикОжидания() - я так обычно делаю, чтобы успевало отрисоваться (задержки 0.1 хватает)
5 volodya1122
 
03.03.22
17:59
В процедуре ПриАктивизацииСтроки Таб2
Если АктивенАлгоритм1 = Истина
тогда АктивенАлгоритм1 = Ложь
Возврат
Конесли
6 Механик
 
03.03.22
18:11
(5) Спасибо, похоже то, что надо.