"ПриАктивацииСтроки" срабатывает без участия пользователя #486054


#0 by TapokMan
...на форме - табличное поле типа "Таблица значений". В момент обновления данных этой таблицы происходит автоматическая активация первой строки и, соответственно, срабатывает событие "ПриАктивацииСтроки". Что делать, если такое положение вещей меня не устраивает? Как сделать так, чтоб активация происходила только когда я сам ткну в строку? Ну или хотя бы как различить "автоматический" и "интерактивный" вызовы процедуры? относится все к 1с 8.2 (на 8.1 не проверял). Подскажите, пожалуйста, если кто сталкивался.
#1 by mikecool
активация происходит только если таб поле активно или вне зависимости от того, какой элемент формы активен?
#2 by EvgeniuXP
про 8.1 я тебе могу ответить: да, так оно и есть, но это можно определить, где интерактивный, а где - программный. Я для этого завел переменную в модуле (тип число, почему, потому что у меня было три таблицы, и мне нужно было хранить три состояния), отслеживал через нее. + через отладчик, там когда открывается форма, сразу срабатывает ПриАктивизации - это я считал уже программно.
#3 by EvgeniuXP
просто мне тоже надо было активировать первую строку в третьей таблице, а в первых двух таблицах не надо было активировать :) по отладчику я и определил, какие таблицы в каком порядке активируются и прописал число, если 0, то прибавь 1, в другой таблице: если 1 - то прибавь еще 1, в третей (при активизации) если = 2 то прибавь 3 - и свыше этого числа это уже интерактивное обновление.
#4 by EvgeniuXP
а в этом числе при условии прописал: снять выделенные строки в зависимости от активизации таблиц у тех и снимаем выделение :)
#5 by TapokMan
на форме несколько подобных табличных полей, и у каждого срабатывает "ПриАктивизацииСтроки" при заполнении данными.
#6 by EvgeniuXP
активироваться может 1, 3, а потом только вторая таблица - это зависит от создания на форме. Какую первую создал, та и активируется первая, какую последнюю - та активируется последней.
#7 by TapokMan
у меня так не получится. мне надо не только самую первую активизацию "отсечь" как автоматическую - обновляются данные в табличных полях часто.
#8 by EvgeniuXP
работай через число и прибавляй 1 - и делай что хочешь с таблицами. Таким образом ты можешь определить, что именно открывается форма и активируется таблица именно при открытии, т.к. счетчик меньше (в моем случае) трех.
#9 by TapokMan
твой метод срабатывает только для первой активизации при открытии формы
#10 by EvgeniuXP
правильно, для остальных случаев уже далее в модуле пишешь, это число свыше 3 - там обрабатываешь условия по другому, т.к. когда активируешь одну таблицу, может произойти следующее: 1 активизировалась, а потом 2-ая активизировалась при значении свыше 3... - это тоже надо через отладчик отслеживать, в какой последовательности эти таблицы активизируется но уже при интеррактивном обновлении. Я с этим долго парился, но сделал.
#11 by EvgeniuXP
Сделал эффект: выделенная строка (строки) могут выделяться только в одной таблице, по нажатию кнопки эти элементы перелетают в другую таблицу и эти же строки выделяются только в другой таблице. Плюс, еще сделал, что из одной таблицы куча элементов перелетала в две другие и там выделялись, а в первой общей выделенные исчезали строки. Т.е. своего рода строки летают из одной таблицы в другую.
#12 by TapokMan
на мысль ты меня навел. спасибо. забацал с помощью флагов: при любом обновлении данных специальный флаг "ИнтерактивнаяАктивизация" сбрасывается в ЛОЖЬ. А потом в процедуре "приАктивизацииСтроки" алгоритм отрабатывает только если этот флаг = ИСТИНА, а в конце процедуры флаг устанавливается в ИСТИНУ.
#13 by EvgeniuXP
Так что - отладчик тебе в помощь...
#14 by EvgeniuXP
да, именно через флаги, определял какая действительно активировалась таблица, а потом уже выставлял флаги истина или ложь для каждой таблицы.
#15 by EvgeniuXP
только там надо все варианты перебирать (последовательность активизаций таблиц), один упустишь - будет сбой, и работать не будет - и сложно будет отследить, когда этот сбой происходит.
#16 by EvgeniuXP
во, вспомнил, например в таблицах каких-то нет данных, активация уже проводится по другому - это тоже надо отслеживать.
#17 by EvgeniuXP
т.е. таблицы могут быть полностью пустыми, а может одна пустая, а может две и т.д. и т.п. - всё это надо отслеживать.
#18 by TapokMan
разобрался. спасибо.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С