Имя: Пароль:
1C
1С v8
8.2 + Управляемые формы + дерево значений + контекстное меню = проблемы
0 kentavr27rf
 
23.06.12
15:44
Исходные данные:

Платформа: 8.2.14.528
Режим работы: управляемое приложение, тонкий клиент
Журнал документов. На форме журнала динамический список с документами и дерево значений, которое служит для отображения подчиненных документов.

Задача: на дереве значений при правом клике вывести контекстное меню, которое может изменяться программно в зависимости от активного вида
документа на момент клика на дереве значений.

Попытка решения: Основное контекстное меню дерева значений построено в конфигураторе. При активизации строки дерева значений некоторые пункты контекстного меню
перестраиваются (меняется доступность, меняются заголовки, добавляются некоторые пункты, например для ввода на основании
n-ных видов документов).

Изменения пунктов меню происходит где-то так:
[code]&НаКлиенте
Процедура ДеревоДокументовПриАктивизацииСтроки(Элемент)
   Элементы.ДеревоДокументов_ТекущийДокумент.Заголовок=Элемент.ТекущиеДанные.Ссылка;
   Элементы.ДеревоДокументов_ТекущийДокумент.Картинка=ВернутьКартинкуДокумента(Элемент.ТекущиеДанные.Ссылка);
   Элементы.ДеревоДокументов_ТекущийДокумент.Доступность=Ложь;
КонецПроцедуры[/code]


Проблема: при попытке изменить содержание контекстного меню (в процедуре ПриАктивизацииСтроки()) эта же процедура отрабатывает самостоятельно
вновь. И все бы ничего, но при повторной отработке текущая строка дерева значений становится всегда первой, на какой бы
ветке дерева я не находился в данный момент.
Соответственно, после того, как текущая строка дерева самостоятельно изменилась, процедура ПриАктивизацииСтроки() отрабатывает в третий раз.

Т.е. из-за такого поведения системы пользователю невозможно получить контекстное меню строк дерева значений, которые находятся ниже первой строки.


Если отключить программную перестройку содержания контекстного меню, то все отрабатыват в штатном режиме.

Вопрос: может быть кто-то сталкивался с подобной проблемой, и у него появились варианты обхода подобного глюка?
Есть ли какие-нибудь мысли по поводу вышеизложенного? Как можно обойти данную проблему отображения
не жертвуя функциональностью системы.

Заранее благодарен за дельные мысли.
1 ChAlex
 
23.06.12
19:45
использовать обработчик ожидания - "ПодкулючитьОбработчикОжидания("Процедура",0.1,Истин)