ПриАктивизацииЯчейки зацикливается #769812


#0 by Garry1010
Управляемая форма списка документов в обычном(!) приложении 8.2. Хочу изменять один НЕтиповой пункт контекстного меню, а именно хочу добавить быстрый отбор, чтобы не лазить, как идиот, по настройкам формы (зачем 1С убрала быстрый отбор по полю из УФ - зло берёт!!!). Добавить программно пункт меню нельзя - включаю показ контекстного меню, добавляю на форму новый пункт. При попытке что-то программно изменить в этом пункте меню всё начинает тормозить и двоить, а то и зацикливаться. Изменение делается через ПриАктивизацииЯчейки или через ПриАктивизацииПоля, или ещё через похожие места - однодинаково глючит. А именно, вечно норовит сначала попасть в эту же процедуру с первым полем списка (Дата - понятно, что это дата документа), а потом лишь попадает с выделенным полем. Но зачастую выделено на форме всё равно остаётся именно поле Дата, куда ни щёлкай мышью. Возникает сие где-то тут: То есть малейшее обращение к свойству Видимость или Заголовок контекстного меню вызывает дополнительные события... Как их можно бы было отловить, отследить и прекратить? Чтобы попадало в обработчик только по выделению конкретно выделенной колонки. PS Не уверен, что высказался достаточно несумбурно, т.к. задолбала она меня... Могу пояснить задачу при необходимости.
#1 by Fragster
Использование: Чтение и запись. Описание: Тип: Булево. Определяет видимость поля. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). Изменение свойства на клиенте требует обращения к серверу. Примечание: Ложь - поле не отображается.
#2 by Fragster
Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, мобильное приложение(клиент), мобильное приложение(сервер). Изменение свойства на клиенте требует обращения к серверу.
#3 by Fragster
Изменение свойства на клиенте требует обращения к серверу.
#4 by Garry1010
, , И что? Хотите сказать, что изменение свойства Видимость принудительно и всегда вызывает повтор события? Так и надо было сказать - зачем мне приводить выдержку из справки, я её и сам прочитать могу. Вопрос в том, как это можно обойти? То есть как можно включать/отключать пункты контекстного меню или изменять текст одного, чтобы оно не дрыгалось туда-сюда по сто раз.
#5 by Garry1010
[q], , я её и сам прочитать могу[/q] Только из неё (из справки) никак не следует наличие повторных вызовов событий. ... Кстати, такое впечатление, что при изменении выделенной строки этого динамического списка происходит сначала вызов события как бы по деактивации (потере фокуса) предыдущей строкой, а уже потом оно начинает гоняться: сначала активация фокуса на первой колонке новой строки, а потом перескок на нужную колонку - и каждый раз с вызовом события. Но беда в том, что система не предоставляет флага активации/деактивации... Или предоставляет где-то?-_О
#6 by Feunoir
ПриАктивизацииЯчейки (OnActivateCell) Синтаксис: ПриАктивизацииЯчейки Описание: Вызывается при активизации ячейки таблицы. Примечание: В обработчике данного события нельзя использовать серверные методы формы с директивой компиляции &НаСервере. ======= Нельзя использовать то, что лезет на сервер с контекстом формы. Установка видимости это делает. Поэтому ты получаешь такое поведение. Чтобы не было - в обработчике активизации подключай однократный обработчик ожидания, в обработчике ожидания уже дёргай сервер сколько хочешь.
#7 by Garry1010
Ясно, спасибо! Примерно так и думал, что из-за чего-то такого. Вот глупые ;) 1С'ники - каким образом отображение контекстного меню может вообще влиять на сервер!? Это же интерфейсный объект - чего ему делать на сервере? Они что, меню гоняют туда-сюда с сервера на сервер?О_О
#8 by Garry1010
Неа, не годится. Всё равно дёргает активизацию ячейки - опять получается цикл, только его прервать можно нормально.
#9 by Garry1010
Решил отказаться от контекстного меню - сделаю просто через кнопку Командной панели...
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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