1с установить курсор в поле ввода
[ОБУЧАЛОВКА] Полезное наблюдение: постоянное позиционирование на поле ввода
Простое маленькое «наблюдение», получившееся в результате обсуждения вопроса на соседних форумах.
Q: как установить курсор в поле ввода при нажатии энтера на этом же поле ввода?
А: известно, что.
. что 7.7 не позволяет использовать конструкцию Активизировать(ИмяРеквизитаПоляВвода) в процедуре, которая вызывается в этом поле ввода. Приходится извращаться с ложным закрытием формы и в процедуре ПриЗакрытии() активизировать нужное поле ввода.
При упрощении задачи до наличия единственного поля ввода (например, оператор тупо по циклу вбивает некие данные: артикулы, сертификаты, етц. ) задача позиционирования курсора обратно в это же поле ввода может быть решена и без ложного закрытия формы, достаточно всем остальным диалоговым реквизитам поставить признак » пропускать при вводе = вКл «.
Вот такая вот маленькая полезняшка.
Где она может быть применена? Отвечаю: при использовании сканеров в разрыв клавиатуры многие предпочитают ставить атолловские драйвера, для возможности использовать обработку внешнего события. В ряде случаев это вполне оправдано. Однако в узкоспециализированных задачах можно вполне обойтись и без драйверов, применяя описанное выше «наблюдение». Таким примером может служить, например, обработка потокового сканирования товаров (касса, сканеры при проверке заказов и т.д.), где единственным активным элементом интерфейса является поле ввода для принятия отсканированных данных.
В приложение к данной статье будет сделана простая обработочка для типовой ТиС, иллюстрирующая данный пример. Выложу чуть попозже.
Использование элементов управления в табличном документе
В данном разделе рассмотрены варианты использования элементов управления, которые могут быть расположены в табличном документе и поле табличного документа.
Поле ввода для изменения текста ячейки
В случае если ячейка табличного документа или поля табличного документа не содержит значения (подробней о значениях в ячейках табличного документа будет рассказано ниже), для редактирования текста ячейки используется встроенное в ячейку системное поле ввода. Это поле ввода настраивается автоматически на основе свойств ячейки и не поддается дополнительной настройке, т.е. его свойства и поведение нельзя изменить ни программным способом, ни через палитру свойств.
Для входа в режим редактирования ячейки достаточно нажать клавишу «Enter», или нажать клавишу «F2», или произвести двойной щелчок левой клавишей мыши над ячейкой, или непосредственно начать ввод. Для завершения редактирования содержимого ячейки необходимо нажать клавишу «Enter», либо произвести щелчок мышью за пределами поля ввода. Для отмены редактирования следует воспользоваться клавишей «Esc».
Если редактирование ячейки было активизировано любым другим способом, нажатие клавиш перемещения курсора не приведет к завершению редактирования, а приведет перемещению курсора в редактируемом тексте.
При необходимости изменения режима поведения клавиш курсора, при редактировании ячейки, следует нажать клавишу «F2». При этом режимы будут циклически переключаться
Элемент управления для редактирования значения ячейки
Редактирование содержимого ячейки, содержащей значение, происходит так же, как и редактирование обычной ячейки.
Элемент управления формы, расположенный на поле табличного документа
При редактировании формы в режиме конфигуратора, на поле табличного документа, расположенного в форме, можно размещать любые элементы управления формы. То, что элемент управления располагается на поле табличного документа, влияет только на его положение. Остальное поведение элемента управления остается неизменным. Т.е. разработчик может связать элемент управления с данными, настроить обработчики, настроить свойства и т.д.
Возможны два режима работы элемента управления формы, расположенного на поле табличного документа:
Работа в режиме 1С:Предприятие с элементом управления, встроенным в ячейку поля табличного документа и элементом управления, расположенным на поле табличного документа не отличается от работы с элементами управления, расположенными в панели формы.
Особенности работы ввода по строке в поле ввода
1. Как переопределять работу поля ввода в части ввода по строке
Для переопределения работы поля ввода в части ввода по строке можно обрабатывать события поля ввода «АвтоПодборТекста» и «ОкончаниеВводаТекста».
1.1. Событие АвтоПодборТекста
Событие «АвтоПодборТекста» возникает во время начала ожидания ввода текста (когда в процессе набора текста сделана пауза). При стандартной отработке события происходит поиск по полям, указанным в свойстве «Ввод по строке» соответствующего объекта метаданных. Если найдено единственное значение, то производится автоподстановка окончания текста. Если введенному тексту соответствует несколько значений, то автоподстановки не происходит.
В этом примере при вводе в поле ввода буквы «п» и прерывании редактирования в поле ввода появился слово «пункт», при этом выделена будет его часть «ункт» (начало слова было уже введено и выделение на него не делается):
Выделение выставляется для того, чтобы подставленную часть текста можно было легко заменить следующим действием редактирования, если подставленный текст не подходит. Для отключения стандартного обработчика в значение параметра «СтандартнаяОбработка» записали «Ложь».
1.2. Событие ОкончаниеВводаТекста
Событие «ОкончаниеВводаТекста» вызывается системой в тех случаях, когда по введенному (отредактированному) в поле ввода тексту нужно сформировать значение, соответствующее этому тексту. При этом, если по имеющемуся в поле ввода тексту уже было ранее успешно сформировано значение, нового формирования значения по этому тексту выполняться не будет (т.е. не будет возникать событие «ОкончаниеВводаТекста»).
Необходимость формирования значения по тексту в поле ввода возникает в различных ситуациях, например при переходе из поля ввода к другому элементу управления, нажатии в поле ввода кнопки выбора (клавиша F4) и в ряде других ситуаций.
Стандартный (системный) обработчик события ищет некоторое значение, которое соответствует набранному тексту. Если найдено одно значение – оно сохраняется в качестве значения поля ввода. Если найдено несколько значений – в выпадающем списке предоставляется возможность выбрать из них нужное значение. Если не найдено ни одного значения – выдается сообщение о том, что в элементе управления введены некорректные данные.
В этом примере обеспечивается следующая функциональность для поля ввода: если в поле ввода набрать слово «одежда», то при формировании значения по имеющемуся в поле ввода тексту (например, при переходе из поля ввода к другому элементу управления в форме), пользователю будет предоставлена возможность выбрать одно из двух значений: «Рубашка» или «Брюки»:
— введем в поле ввода слово «одежда»:
— нажмем на клавишу Tab для перехода к следующему элементу управления: при этом появится выпадающий список из двух значений:
— выберем в выпадающем списке первое значение с помощью клавиши «Enter». выбранное значение будет установлено в поле ввода, а мы перейдем к следующему элементу управления:
2. Использование результатов поиска по строке
В каждом из этих случаев стандартные (системные) обработчики событий «АвтоПодборТекста» и «ОкончаниеВводаТекста» ведут себя определенным образом.
2.1. Работа стандартного (системного) обработчика события АвтоПодборТекста с результатами поиска по строке
1. По имеющемуся в поле ввода тексту ищется одно подходящее значение
2. Значение найдено?
2.1. Получается текстовое представление найденного значения
2.2. В поле ввода дописываются недостающие завершающие символы текстового представления найденного значения.
Пример : пусть поле ввода имеет тип «СправочникСсылка.Номенклатура»; в свойстве «Ввод по строке» указаны поля «Код», «Наименование»; в справочнике есть два элемента с наименованиями «Рубашка», «Брюки»:
Если мы введем воле ввода текст «Ру», он будет дополнен текстом «башка»:
2.2. Устройство механизма преобразования текста в поле ввода в значение и обработчик события ОкончаниеВводаТекста
Рассмотрим процесс формирования значения по тексту, введенному в поле ввода. Ниже приводится алгоритм преобразования текста в поле ввода в значение:
Из описанного алгоритма видно, что смысл подмены стандартного (системного) обработчика может состоять в том, чтобы сформировать свой список значений из одного и более элементов или одно конкретное значение для поля ввода в зависимости от того текста, который есть в поле ввода.
2.3. Работа стандартного (системного) обработчика события ОкончаниеВводаТекста с результатами поиска по строке
Стандартный (системный) обработчик события «ОкончаниеВводаТекста» работает следующим образом:
3. Настройка состава и порядка полей, используемых в стандартных (системных) обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста
Состав полей объекта метаданных, которые могут участвовать в поиске, состоит из некоторых фиксированных полей и реквизитов, для которых указано, что они строкового или числового типа и их нужно индексировать или индексировать с дополнительным упорядочиванием.
При поиске по строке для числовых полей из строки формируется число, которое затем ищется в базе данных. При поиске по строке для строковых полей ищутся все записи из базы данных, у которых в соответствующем поле хранится текст, начинающийся с искомого.
В качестве значения по умолчанию для свойства «Ввод по строке» в 1С:Предприятии 8 используются следующие поля:
Отметим, что поле используется для поиска по строке только в том случае, если длина поля больше нуля. Так, например, если длина наименования в некотором справочнике равна нулю, то поиск по полю «Наименование» выполняться не будет.
4. Модальные действия в обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста
Механизм автоподбора текста в поле ввода и преобразования текста в значение не предусматривает возможности использования разработчиком конфигурации интерактивных действий в обработчиках событий. Кроме того, логика работы стандартных (системных) обработчиков событий достаточно сложная и в обработчиках этих событий не всегда можно узнать, по какому поводу он (обработчик) вызван. Например, обработчик события » ОкончаниеВводаТекста» будет вызываться не только при переходе из поля ввода на другой элемент управления формы, но и при нажатии в поле ввода кнопки выбора (клавиша F4).
Рекомендуется в обработчиках событий » АвтоПодборТекста» и » ОкончаниеВводаТекста» работать исключительно с параметрами обработчиков, формируя нужный текст и значения и отдавая их через параметры обработчиков.
5. Управление механизмом автопоиска и автоподбора с помощью прав
Управлять механизмом автопоиска и автоподбора можно на уровне прав пользователей. Для этого в списке прав для различных объектов метаданных существует право «Ввод по строке».
6. Работа механизма автопоиска и автоподбора с правами на уровне записей
Данные, используемые системой в обработчиках событий автопоиска и автоподбора, могут иметь ограничения на доступ к ним. Достичь этого можно с помощью механизма ограничения прав доступа к данным на уровне записей. В этой ситуации сама платформа 1С:Предприятие 8 выбирает только разрешенные записи и дополнительной поддержки на уровне обработчиков событий для этого не требуется.
Если же есть необходимость поиска подходящих данных в обработчиках событий автопоиска и автоподбора, в запросе нужно использовать служебное слово «РАЗРЕШЕННЫЕ», указывающее, что при встрече данных, доступ к которым ограничен, нужно их просто пропускать: в противном случае будет выдана ошибка времени исполнения.
Программирование 1С 8.х для начинающих
Конфигурация
Элементы формы 1С. Часть 2
1. Поле ввода
2. Флажок
3. Переключатель
Поле ввода
Как правило, поле ввода связано с реквизитом объекта и отражает его данные. Это, пожалуй, один из самых распространенных элементов, он имеет несколько способов выбора значения:
Выбор из списка (РежимВыбораИзСписка)
Выбор из другой формы (Кнопка выбора)
Реализация вышеприведенных примеров не требует значительных усилий со стороны разработчика так. например, для режима списка необходимо заполнить список элемента значениями, для выбора из другой формы достаточно просто связать элемент управления с данными справочника. А вот для кнопок регулирования нужно будет написать побольше кода, по обработке нажатия по каждой кнопке, хотя и он не будет велик:
Флажок
Переключатель
Переключатель используется для выбора одного значения из небольшого количества возможных (желательно не более пяти) при этом значения не могут сочетаться, Например: подходит для выбора пола человека. Другой пример: допустим, фирма даёт одну из 3-х скидок на товар, при этом скидки не суммируются:
В данном случае удобство использования переключателей может заключаться в том, что каждый из них может иметь какое-то значение, которое устанавливается в свойстве «Выбираемое значение». И тогда «Скидка 5%» может хранить значение 5 или 0,05.
При использовании переключателей важно помнить три вещи:
Программирование в 1С для всех
В этой статье начнем разбирать основные элементы управляемой формы 1С 8.3. Управление формой осуществляется посредством различных элементов формы, которые расположены иерархически на закладке Элементы конструктора формы. Самым главным элементом является сама форма, которая расположена вверху иерархии элементов, а остальные элементы ей подчинены.
Все элементы формы можно разделить на пять групп: поля, элементы группировки, кнопки, декорации и таблицы. В своих статьях я разберу каждую из групп. В этой статье мы начнем изучать один из видов элемента поле — поле ввода, но перед этим научимся добавлять элемент на форму.
Добавление элементов на форму
Делается это достаточно просто: необходимо выделить элемент Форма в окне Элементы конструктора формы и нажать на кнопку «Добавить». После этого откроется окно, в котором необходимо выбрать нужный тип элемента
После выбора, элемент нужного появится в окне Элементы.
Элемент управляемой формы Поле
Разберем элемент управляемой формы Поле. Этот элемент нужен для ввода информации на форме. А также для отображения какой-либо информации. После того, как Вы добавите этот элемент на форму, справа откроется палитра свойств элемента формы. Пока Вас должны интересовать два свойства – ПутьКДанным и Вид.
В свойстве ПутьКДанным разработчик может связать элемент формы с нужным реквизитом формы. Обратите внимание, что после того, как был добавлен элемент Поле ввода на форму он не отобразился на самой форме. Это произошло потому, что наш новый элемент не связан с реквизитом формы. Для примера я создал на форме обработки несколько реквизитов с разными примитивными типами и один реквизит с ссылочным типом.
Здесь и далее используется конфигурация, созданная в книге «Программировать в 1С за 11 шагов»
Теперь свяжем наш недавно добавленный элемент формы с одним из реквизитов, для этого выберем нужный реквизит с свойстве элемента ПутьКДанным.
После этого заполнятся свойства ПутьКДанным и Вид, а сам элемент отобразится в представлении формы.
Обратите внимание на свойство элемента Вид. При помощи этого свойства определяется функциональность поля ввода. Можно выбрать различные значения этого свойства.
В зависимости от выбранного значения будет определятся функционал. На рисунках выше выбрано значение – поле ввода, т.е. мы можем вводить какие-либо значения в это поле ввода, а если выбрать значение поле надписи, то ни чего вводить мы не сможем.
Этот значение свойств Вид поля ввода удобно выбирать, когда нужно просто показать справочную информацию пользователю.
Теперь добавим новый элемент формы с типом Поле ввода и свяжем его с реквизитом РеквзитДата посредством уже знакомого нам свойства ПутьКДанным
Как Вы видите вид поля ввода поменялся, а так же поменяется возможный выбор значений свойства Вид.
Таким образом, делаем вывод – функциональность поля ввода зависит от типа реквизита.
Для реквизита с типом Булево будут доступны следующие значения свойства Вид.
А для реквизита с ссылочным типом будут доступны иные значения свойства Вид.
Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655