0
kentavr27rf
23.06.12
✎
15:44
|
Исходные данные:
Платформа: 8.2.14.528
Режим работы: управляемое приложение, тонкий клиент
Журнал документов. На форме журнала динамический список с документами и дерево значений, которое служит для отображения подчиненных документов.
Задача: на дереве значений при правом клике вывести контекстное меню, которое может изменяться программно в зависимости от активного вида
документа на момент клика на дереве значений.
Попытка решения: Основное контекстное меню дерева значений построено в конфигураторе. При активизации строки дерева значений некоторые пункты контекстного меню
перестраиваются (меняется доступность, меняются заголовки, добавляются некоторые пункты, например для ввода на основании
n-ных видов документов).
Изменения пунктов меню происходит где-то так:
[code]&НаКлиенте
Процедура ДеревоДокументовПриАктивизацииСтроки(Элемент)
Элементы.ДеревоДокументов_ТекущийДокумент.Заголовок=Элемент.ТекущиеДанные.Ссылка;
Элементы.ДеревоДокументов_ТекущийДокумент.Картинка=ВернутьКартинкуДокумента(Элемент.ТекущиеДанные.Ссылка);
Элементы.ДеревоДокументов_ТекущийДокумент.Доступность=Ложь;
КонецПроцедуры[/code]
Проблема: при попытке изменить содержание контекстного меню (в процедуре ПриАктивизацииСтроки()) эта же процедура отрабатывает самостоятельно
вновь. И все бы ничего, но при повторной отработке текущая строка дерева значений становится всегда первой, на какой бы
ветке дерева я не находился в данный момент.
Соответственно, после того, как текущая строка дерева самостоятельно изменилась, процедура ПриАктивизацииСтроки() отрабатывает в третий раз.
Т.е. из-за такого поведения системы пользователю невозможно получить контекстное меню строк дерева значений, которые находятся ниже первой строки.
Если отключить программную перестройку содержания контекстного меню, то все отрабатыват в штатном режиме.
Вопрос: может быть кто-то сталкивался с подобной проблемой, и у него появились варианты обхода подобного глюка?
Есть ли какие-нибудь мысли по поводу вышеизложенного? Как можно обойти данную проблему отображения
не жертвуя функциональностью системы.
Заранее благодарен за дельные мысли.
|
|