ЭтаФорма.ТекущийЭлемент неуловим? #367831


#0 by vmv
Постановка задачи: существует некая форма подбора для формирования элемента штатного расписания, где текстовые и агрегатные реквизиты расположены вертикально сверху вниз и по порядку, то есть пользователь может только на клавиатуре пройтись по форме, выбирая реквизиты, и элемент можно записывать(если набор подбирается впервые или дополняется необязательными реквизитами)или инициализировать этим составным значением поля в других объектах. Примерный вид таков. ------------ Профессия по классификатору ---------------- Наименование:............................................ Профессия:............................................... ------------ Категория оплаты----------------------------- Категория должности:..................................... Квалификация:............................................ Тарифная сетка:.......................................... Группа оплаты:........................................... ------------ Специфика трудовых отношений------------------ График работы:........................................... Условия труда:........................................... ----- Должностые иструкции и характеристики----------------- :Должность кадрового плана(регламентированная).............. :Чего-нибудь ещё............................................ ! . Как видим, реквизиты этой формы сгруппированы в группы формы согласно логике их использования и зависимости друг от друга. . Например, при выборе "КатегрияДолжности = Специалисты" выпадает список отбора для этой категории из справочника "ТарифныеРазряды" = (1-ой категории, 2-ой категории, без категриии). При выборе "КатегорияДолжности = Рабочие чего то там", выпадает список отбора из "ТарифныеРазряды" = (1-го разряда, 2-го разряда, ...) и т.д. С тарифными сетками и группами оплаты механизм тот же, но немного сложнее. В итоге после заполнения пользователем реквизитов группы "Категория оплаты" по этому набору создается элемент справочника "КатегорияОплаты", который иденцифицирует штатную единицу вкупе с Профессией и прочими. Вот, вроде по структуре должно быть понятно. Зачем так, почему, как оптимизировать, делать защиты - это моя задача и в принцепе решена) Суть проблемы: с этой формой будет работать большое количество пользователей кадровой и социальных служб, многие удаленно. Ес-но, у всех разная квалификация, степень подготовки и пр., т.е. няньку к каждому не посадишь. Посему, я справа в этой форме прикрутил контестную справку на панель с HTML-документом, которая обнавляется в процедуре модуля формы ОбработкаОбновления когда какой-либо реквизит изменен и т.д. Особо умные её могут отключить, пока неуверенные могут внимать ей, когда она "ведет пользователя за руку". Корень проблемы - справка вываливается ВСЯ с инструкциями по действиям по всем реквизитам с выдачей, условно говоря, таких подсказок: (Рекомендуем..., такой выбор некорректен...., это не может быть пустым..., воспользуйтесь...). Это режим выдачи справки "Подробно". А я хочу сделать ещё режим справки "Свернуто", когда если пользователь переместил курсор или прыгнул на реквизит из группы "Категория Оплаты" или "Специфика трудовых отношений", то выдавалась бы секция справки только для этой группы или даже только для этого реквизита. Но как поймать ЭтаФорма.ТекущийЭлемент когда пользователь просто перемещается по реквизитам, не входя в редактирование, автоподбор и прочее, влекущее обновление формы? В 7.7. это решалось просто, текст с функцией на форму и каждый шорох на форме ведет тебя в тело этой функции, где видишь текущий элемент. А тут, в 8.1, просто ппц какой-то, куча методов и все не могут решить эту простую задачу. Оповещения вроде тут не катят, ведь у меня нет подчиненных форм, пользователь просто бродит по форме и вполне обосновано хочет видеть инструкции для того реквизита где он просто спозиционировался. Возможно я глуп и так не увидел очевидное. Даже если это невероятно, просьба просветить и помочь решить проблему, ведь её решение логично и необходимо)
#1 by ТелепатБот
#2 by vmv
1 спасибо, эти знания давно проштудированы и указанную в сабже проблему не рашают. Я ж написал, отборы, автоподстановки и прочее - все решено. Проблема кратко: как, при перемещении пользователя по реквизитам формы, не влекущим обновление формы или изменение значений элементов диалога - однозначно определить на каком реквизите спозиционировался пользоветель и мечтает, что ему сейчас выпадет справочка по действиям с этим реквизитом?
#3 by FLENDGER
нормально с ботом прям поговорил :)
#4 by eklmn
тихо, а то зарядит сейчас пост на страниц эдак 15, миста тогда совсем загнется ))
#5 by kosts
Событие "активизирован объект" не подходит?
#6 by ШАВ
Можно попробовать использовать обработчик ожидания, в котором проверять не изменился ли текущий элемент с последнего вызова этого обработчика.
#7 by kosts
Кстати да. Я так делал отложенную установку отбора...
#8 by vmv
медоды формы: ОбновлениеОтображения, ПриИзмененииДанных методы элементов диалога: ПриИзменении, НачалоВыбора, Открытие, АвтоподборТекста - НЕ КАТЯТ, так как предполагают какую-то модификацию элементов диалога. Абстагируемся и предположим, что форма имеет ещё один встроенный метод ПриПозициоированииЭлементаДиалога, который не предполагает вход в режим редактирования, изменения, автоподбора и прочего, а сигнализирует о переходе пользователя на конкретный реквизит. Тогда моя проблема решается просто Я начинал флудить ещё 10 лет назад, не напрягайтесь, все а анналах) , Использование обработчика ожидания тоже мне пришло в голову за неимением стандартных альтернатив. Но это метод через одно место, будет печально, если он окажется единственным)
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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