[РЕШЕНО] Алгоритм задачи "человек-контроллер") (часть вторая)

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем Катюфка, 5 фев 2015.

  1. TopicStarter Overlay
    Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    Здравствуйте.
    Я возвращаюсь к закрытой теме, где мне очень помогли с примером обработки по вводу значений. Еще раз большое спасибо.
    Суть вот в чем. Пока мы пользуемся предложенным там вариантом с использованием ПодключитьОбработчикОжидания(). Одно НО! Оператор может полчаса ничего не вводить, а иногда нужно ввести 5 значений за 3 секунды. Процедура перевода фокуса на ввод значения отрабатывает с задержкой, и если не дожидаться выделения числа, то данные вводятся неправильно.
    Я пытаюсь пойти другим путем. Делаю на форме кнопку по-умолчанию и в ней прописываю процедуру активизации нужного поля. Форме указываю свойство перехода ENTER'ом не по элементам, а на кнопку по-умолчанию. Все отрабатывает очень быстро, но строки данных задваиваются. Как я понимаю, по кнопке фокус передается на поле ввода и опять срабатывает процедура ЗначениеПриИзменении().
    Как от этого избавиться?
    Прикладываю обработку, чтобы было понятно, в чем проблема.

    Вложения:

  2. TopicStarter Overlay
    Катюфка
    Offline

    Катюфка Профессионал в 1С

    Регистрация:
    3 июн 2013
    Сообщения:
    403
    Симпатии:
    71
    Баллы:
    54
    В общем, решила эту проблему. Нигде ничего толком не сказано, но опытным путем поняла, что позиционируется курсор только после активизации группы.
    В моем случае работает такой код:

    Код:
    &НаКлиенте
    Процедура ЗначениеПриИзменении(Элемент)
    НоваяСтрока = ТаблицаПоказателей.Добавить();
    НоваяСтрока.Дата = ТекущаяДата();
    НоваяСтрока.Значение = Значение;
    ТекущийЭлемент = Элементы.ГруппаПоказателиЗначение;
    ТекущийЭлемент = Элементы.Значение;
    Значение = 0;
    ВыделитьСтрочку();
    
    КонецПроцедуры
    
    &НаКлиенте
    Процедура ВыделитьСтрочку()
    WSHShell = Новый COMОбъект("WScript.Shell");
    Попытка
    WSHShell.SendKeys("^A");
    Исключение
    КонецПопытки;
    КонецПроцедуры
    Может кому пригодится.
    Последнее редактирование модератором: 6 фев 2015
    alexburn нравится это.

Поделиться этой страницей