На форме есть элемент Поле ввода, туда вводиться штрих код товара кассиром. Задача при каждом вводе штрих кода фокус (курсор) не переносился на другой элемент формы, а оставался в Поле ввода штрих кода.
Казалось бы, все просто, ввел в процедуру или функцию вызываемую в Поле ввода на вкладке Дополнительно
В модуле формы пишем
Поясню...
Казалось бы, все просто, ввел в процедуру или функцию вызываемую в Поле ввода на вкладке Дополнительно
Активизировать(ПолеВвода);и все, но при тестировании у нас появилась ошибка
Активизировать(ПолеВвода,); {D:\1CTEST\1C\EXTFORMS\РАБОЧЕЕМЕСТОКАССИРА1.ERT(737)}: В данной формуле не может быть вызвана эта процедура(функция)поэтому один умный человек порекомендовал использовать "фиктивное" закрытие формы и вот как это работает.
В модуле формы пишем
Перем ПередатьФокус; Процедура ИзмШКТов() ПоискНоменклатуры(СокрЛП(ШКтов),1); ПередатьФокус = "ШКтов"; Форма.Закрыть(0); КонецПроцедуры Процедура ПриЗакрытии() Если ПустоеЗначение(ПередатьФокус) = 0 тогда Активизировать(ПередатьФокус); СтатусВозврата(0); ПередатьФокус = ""; Возврат; КонецЕсли; КонецПроцедуры
Объявили глобальную переменную, по которой будет проверять в последующем, закрывается ли, так сказать, по настоящему форма или это мы "фиктивно" используем закрытие, что бы фокус передать на наше Поле ввода.
В Поле ввода на вкладке Дополнительно мы вызываем процедуру ИзмШКТов() в ней моя лабуда обработки штрих кода, а далее мы присваиваем нашей глобальной переменной имя Поле ввода (в моем случаи называется поле ввода ШКтов) и через Форма.Закрыть(0); закрываем нашу форму для того, что бы в обработчике события ПриЗакрытии() проверить, закрывается ли форма стандартным способом или фиктивно и если фиктивно тогда методом Активизировать(ПередатьФокус) уже удачно, без ошибок установиться фокус (курсор) на Поле ввода. Далее делаем глобальную переменную пустой, что бы в следующий раз сделать тоже, что и выше описано, а в конце Возврат; нам не дает закрыть наше фиктивное закрытие формы.
Комментариев нет:
Отправить комментарий