1с программирование поле ввода

Диалог ввода данных в 1С

1с программирование поле ввода

Ввод числа

Для ввода числа в 1С можно использовать одну из двух функций: ВвестиЧисло или ПоказатьВводЧисла. ВвестиЧисло синхронная функция, ПоказатьВводЧисла — асинхронная. ВвестиЧисло считается устаревшей, так как будет работать только если разрешено использование модальности.

Рассмотрим обе функции на примерах.

ВвестиЧисло

ПоказатьВводЧисла

1с программирование поле ввода

Ввод строки

Для ввода строки в 1С можно использовать одну из двух функций: ВвестиСтроку или ПоказатьВводСтроки. ВвестиСтроку синхронная функция, ПоказатьВводСтроки — асинхронная. ВвестиСтроку считается устаревшей, так как будет работать только если разрешено использование модальности.

Рассмотрим обе функции на примерах.

ВвестиСтроку

ПоказатьВводСтроки

1с программирование поле ввода

Ввод даты

Для ввода даты в 1С можно использовать одну из двух функций: ВвестиДату или ПоказатьВводДаты. ВвестиДату синхронная функция, ПоказатьВводДаты — асинхронная. ВвестиДату считается устаревшей, так как будет работать только если разрешено использование модальности.

Рассмотрим обе функции на примерах.

ВвестиДату

ПоказатьВводДаты

1с программирование поле ввода

Ввод значения

Помимо функций для ввода примитивных типов, в 1С есть функции для ввода значения произвольного типа данных: синхронная ВвестиЗначение и асинхронная ПоказатьВводЗначения. ВвестиЗначение можно использовать только если разрешено использование модальности.

В данных функциях последним параметром можно передать тип значения, который нужно будет ввести. Если тип не указать, то будет использоваться тип переменной, в которую будет получен результат. Также можно указать составной тип данных, тогда до ввода значения нужно будет выбрать тип.

Источник

Особенности работы ввода по строке в поле ввода


1. Как переопределять работу поля ввода в части ввода по строке

Для переопределения работы поля ввода в части ввода по строке можно обрабатывать события поля ввода «АвтоПодборТекста» и «ОкончаниеВводаТекста».

1.1. Событие АвтоПодборТекста

Событие «АвтоПодборТекста» возникает во время начала ожидания ввода текста (когда в процессе набора текста сделана пауза). При стандартной отработке события происходит поиск по полям, указанным в свойстве «Ввод по строке» соответствующего объекта метаданных. Если найдено единственное значение, то производится автоподстановка окончания текста. Если введенному тексту соответствует несколько значений, то автоподстановки не происходит.

В этом примере при вводе в поле ввода буквы «п» и прерывании редактирования в поле ввода появился слово «пункт», при этом выделена будет его часть «ункт» (начало слова было уже введено и выделение на него не делается):

1с программирование поле ввода 1с программирование поле ввода

Выделение выставляется для того, чтобы подставленную часть текста можно было легко заменить следующим действием редактирования, если подставленный текст не подходит. Для отключения стандартного обработчика в значение параметра «СтандартнаяОбработка» записали «Ложь».

1.2. Событие ОкончаниеВводаТекста

Событие «ОкончаниеВводаТекста» вызывается системой в тех случаях, когда по введенному (отредактированному) в поле ввода тексту нужно сформировать значение, соответствующее этому тексту. При этом, если по имеющемуся в поле ввода тексту уже было ранее успешно сформировано значение, нового формирования значения по этому тексту выполняться не будет (т.е. не будет возникать событие «ОкончаниеВводаТекста»).

Необходимость формирования значения по тексту в поле ввода возникает в различных ситуациях, например при переходе из поля ввода к другому элементу управления, нажатии в поле ввода кнопки выбора 1с программирование поле ввода(клавиша F4) и в ряде других ситуаций.

Стандартный (системный) обработчик события ищет некоторое значение, которое соответствует набранному тексту. Если найдено одно значение – оно сохраняется в качестве значения поля ввода. Если найдено несколько значений – в выпадающем списке предоставляется возможность выбрать из них нужное значение. Если не найдено ни одного значения – выдается сообщение о том, что в элементе управления введены некорректные данные.

В этом примере обеспечивается следующая функциональность для поля ввода: если в поле ввода набрать слово «одежда», то при формировании значения по имеющемуся в поле ввода тексту (например, при переходе из поля ввода к другому элементу управления в форме), пользователю будет предоставлена возможность выбрать одно из двух значений: «Рубашка» или «Брюки»:

— введем в поле ввода слово «одежда»:

1с программирование поле ввода

— нажмем на клавишу Tab для перехода к следующему элементу управления: при этом появится выпадающий список из двух значений:

1с программирование поле ввода

— выберем в выпадающем списке первое значение с помощью клавиши «Enter». выбранное значение будет установлено в поле ввода, а мы перейдем к следующему элементу управления:

1с программирование поле ввода

2. Использование результатов поиска по строке

В каждом из этих случаев стандартные (системные) обработчики событий «АвтоПодборТекста» и «ОкончаниеВводаТекста» ведут себя определенным образом.

2.1. Работа стандартного (системного) обработчика события АвтоПодборТекста с результатами поиска по строке

1. По имеющемуся в поле ввода тексту ищется одно подходящее значение

2. Значение найдено?

2.1. Получается текстовое представление найденного значения

2.2. В поле ввода дописываются недостающие завершающие символы текстового представления найденного значения.

Пример : пусть поле ввода имеет тип «СправочникСсылка.Номенклатура»; в свойстве «Ввод по строке» указаны поля «Код», «Наименование»; в справочнике есть два элемента с наименованиями «Рубашка», «Брюки»:

1с программирование поле ввода

Если мы введем воле ввода текст «Ру», он будет дополнен текстом «башка»:

1с программирование поле ввода 1с программирование поле ввода

2.2. Устройство механизма преобразования текста в поле ввода в значение и обработчик события ОкончаниеВводаТекста

Рассмотрим процесс формирования значения по тексту, введенному в поле ввода. Ниже приводится алгоритм преобразования текста в поле ввода в значение:

Из описанного алгоритма видно, что смысл подмены стандартного (системного) обработчика может состоять в том, чтобы сформировать свой список значений из одного и более элементов или одно конкретное значение для поля ввода в зависимости от того текста, который есть в поле ввода.

2.3. Работа стандартного (системного) обработчика события ОкончаниеВводаТекста с результатами поиска по строке

Стандартный (системный) обработчик события «ОкончаниеВводаТекста» работает следующим образом:

3. Настройка состава и порядка полей, используемых в стандартных (системных) обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста

1с программирование поле ввода

Состав полей объекта метаданных, которые могут участвовать в поиске, состоит из некоторых фиксированных полей и реквизитов, для которых указано, что они строкового или числового типа и их нужно индексировать или индексировать с дополнительным упорядочиванием.

1с программирование поле ввода

При поиске по строке для числовых полей из строки формируется число, которое затем ищется в базе данных. При поиске по строке для строковых полей ищутся все записи из базы данных, у которых в соответствующем поле хранится текст, начинающийся с искомого.

В качестве значения по умолчанию для свойства «Ввод по строке» в 1С:Предприятии 8 используются следующие поля:

План счетовНаименование, КодПлан обменаНаименование, КодПлан видов характеристикНаименование, КодДокументНомер документаСправочникНаименование, КодБизнес-процессНомерЗадачаНомер, НаименованиеПлан видов расчетаНаименование, Код

Отметим, что поле используется для поиска по строке только в том случае, если длина поля больше нуля. Так, например, если длина наименования в некотором справочнике равна нулю, то поиск по полю «Наименование» выполняться не будет.

4. Модальные действия в обработчиках событий АвтоПодборТекста и ОкончаниеВводаТекста

Механизм автоподбора текста в поле ввода и преобразования текста в значение не предусматривает возможности использования разработчиком конфигурации интерактивных действий в обработчиках событий. Кроме того, логика работы стандартных (системных) обработчиков событий достаточно сложная и в обработчиках этих событий не всегда можно узнать, по какому поводу он (обработчик) вызван. Например, обработчик события » ОкончаниеВводаТекста» будет вызываться не только при переходе из поля ввода на другой элемент управления формы, но и при нажатии в поле ввода кнопки выбора 1с программирование поле ввода(клавиша F4).

Рекомендуется в обработчиках событий » АвтоПодборТекста» и » ОкончаниеВводаТекста» работать исключительно с параметрами обработчиков, формируя нужный текст и значения и отдавая их через параметры обработчиков.

5. Управление механизмом автопоиска и автоподбора с помощью прав

Управлять механизмом автопоиска и автоподбора можно на уровне прав пользователей. Для этого в списке прав для различных объектов метаданных существует право «Ввод по строке».

1с программирование поле ввода

6. Работа механизма автопоиска и автоподбора с правами на уровне записей

Данные, используемые системой в обработчиках событий автопоиска и автоподбора, могут иметь ограничения на доступ к ним. Достичь этого можно с помощью механизма ограничения прав доступа к данным на уровне записей. В этой ситуации сама платформа 1С:Предприятие 8 выбирает только разрешенные записи и дополнительной поддержки на уровне обработчиков событий для этого не требуется.

Если же есть необходимость поиска подходящих данных в обработчиках событий автопоиска и автоподбора, в запросе нужно использовать служебное слово «РАЗРЕШЕННЫЕ», указывающее, что при встрече данных, доступ к которым ограничен, нужно их просто пропускать: в противном случае будет выдана ошибка времени исполнения.

Источник

Программирование в 1С для всех

В этой статье начнем разбирать основные элементы управляемой формы 1С 8.3. Управление формой осуществляется посредством различных элементов формы, которые расположены иерархически на закладке Элементы конструктора формы. Самым главным элементом является сама форма, которая расположена вверху иерархии элементов, а остальные элементы ей подчинены.

1с программирование поле ввода

Все элементы формы можно разделить на пять групп: поля, элементы группировки, кнопки, декорации и таблицы. В своих статьях я разберу каждую из групп. В этой статье мы начнем изучать один из видов элемента поле — поле ввода, но перед этим научимся добавлять элемент на форму.

1с программирование поле ввода

Добавление элементов на форму

Делается это достаточно просто: необходимо выделить элемент Форма в окне Элементы конструктора формы и нажать на кнопку «Добавить». После этого откроется окно, в котором необходимо выбрать нужный тип элемента

1с программирование поле ввода

После выбора, элемент нужного появится в окне Элементы.1с программирование поле ввода

Элемент управляемой формы Поле

Разберем элемент управляемой формы Поле. Этот элемент нужен для ввода информации на форме. А также для отображения какой-либо информации. После того, как Вы добавите этот элемент на форму, справа откроется палитра свойств элемента формы. Пока Вас должны интересовать два свойства – ПутьКДанным и Вид.

1с программирование поле ввода

В свойстве ПутьКДанным разработчик может связать элемент формы с нужным реквизитом формы. Обратите внимание, что после того, как был добавлен элемент Поле ввода на форму он не отобразился на самой форме. Это произошло потому, что наш новый элемент не связан с реквизитом формы. Для примера я создал на форме обработки несколько реквизитов с разными примитивными типами и один реквизит с ссылочным типом.

1с программирование поле ввода

Здесь и далее используется конфигурация, созданная в книге «Программировать в 1С за 11 шагов»

Теперь свяжем наш недавно добавленный элемент формы с одним из реквизитов, для этого выберем нужный реквизит с свойстве элемента ПутьКДанным.

1с программирование поле ввода

После этого заполнятся свойства ПутьКДанным и Вид, а сам элемент отобразится в представлении формы.

1с программирование поле ввода

Обратите внимание на свойство элемента Вид. При помощи этого свойства определяется функциональность поля ввода. Можно выбрать различные значения этого свойства.

1с программирование поле ввода

В зависимости от выбранного значения будет определятся функционал. На рисунках выше выбрано значение – поле ввода, т.е. мы можем вводить какие-либо значения в это поле ввода, а если выбрать значение поле надписи, то ни чего вводить мы не сможем.

1с программирование поле ввода

Этот значение свойств Вид поля ввода удобно выбирать, когда нужно просто показать справочную информацию пользователю.

Теперь добавим новый элемент формы с типом Поле ввода и свяжем его с реквизитом РеквзитДата посредством уже знакомого нам свойства ПутьКДанным

1с программирование поле ввода

Как Вы видите вид поля ввода поменялся, а так же поменяется возможный выбор значений свойства Вид.

1с программирование поле ввода

Таким образом, делаем вывод – функциональность поля ввода зависит от типа реквизита.

Для реквизита с типом Булево будут доступны следующие значения свойства Вид.

1с программирование поле ввода

А для реквизита с ссылочным типом будут доступны иные значения свойства Вид.

1с программирование поле ввода

1с программирование поле ввода

Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».

Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»

Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»

1с программирование поле ввода

Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С

Промо-код на скидку в 15% — 48PVXHeYu


Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:

можно оплатить вручную:

Яндекс.Деньги — 410012882996301
Web Money — R955262494655

Источник

Расширенный автоподбор при вводе по строке в поле ввода в управляемых формах

Ниже будет выложен готовый код. А тут несколько вводных слов к нему.

Альтернативный алгоритм максимально близок к штатному автоподбору при вводе по строке с режимом поиска по строке «Любая часть». Строки результата в которых слова поиска находятся в начале строки выдаются первыми. Чтобы изменить количество строк выдаваемого результата достаточно изменить значение переменной «МаксимумСтрокРезультата». Из забавного: подсветку слов поиска в результате пришлось реализовывать вручную в функции ПодсветитьСлова() и это оказалось сопоставимо по объему с остальным кодом.

Формирование списка позиций для автоподбора перехватывается в модуле менеджера объекта (соответствующего типу значения для поля ввода). Обработчик называется ОбработкаПолученияДанныхВыбора(). Собственно, в этом обработчике и необходимо организовать альтернативный алгоритм получения данных автоподбора при вводе по строке. К слову, получение данных выбора можно инициировать программно, вызвав метод модуля менеджера объекта ПолучитьДанныеВыбора().

Но так как может оказаться нежелательным менять алгоритм автоподбора при вводе по строке сразу для всех полей ввода в конфигурации, ниже будет демонстрация приема переопределения для конкретного поля ввода «Номенклатура» в модуле некоей формы с помощью перехвата события поля ввода «Автоподбор»:

Ниже код модуля менеджера справочника «Номенклатура»:

Вот, собственно, и все чем я хотел поделиться в этой статье. Надеюсь, кому-то она сэкономит время.

Источник

Переопределение ввода по строке в управляемой форме 1С

Предыстория

К написанию статьи меня подтолкнула задача, для решения которой я должен был разработать сложную форму с большим количеством полей, связанных с разными объектами и, что главное, «c одной кнопкой». Тут и родилась мысль воспользоваться функцией «ввода по строке» в управляемом приложении 1С. В процессе решения задачи пришлось «набить шишек», но, надеюсь, приобретенный опыт будет полезен не только мне.

Механика

Думаю, правильным будет начать с краткого описания механики клиент-серверного взаимодействия при «вводе по строке».

Все начинается с поля ввода формы, у которого есть события «Автоподбор» и «ПриОкончанииВводаТекста».

Событие «АвтоПодбор» возникает при остановке ввода текста или нажатии на кнопку «стрелка вниз».

Событие «ОкончаниеВводаТекста» вызывается, как нам сообщает справка, при формировании значения из текста ввода. Кстати, это событие интересно тем, что если значение не сформировано, система не даст нам выйти из режима редактирования элемента. Иными словами, если введенный в поле текст не соответствует какому либо значению из данных выбора, то редактирование не будет завершено.

Обращаясь к труду «Разработка управляемого интерфейса» госпожи Хрусталевой и прочих уважаемых авторов, находим упоминание о методе «ПолучитьДанныеВыбора». Если спросить об этом методе синтаксис помощник, он выдаст нам список методов менеджеров для всех видов объектов платформы. Но, что толку от методов менеджеров, которые выполняются на сервере, если серверные вызовы нам недоступны? На самом деле, этот вопрос здесь, только по той причине, что если бы я был более внимательным человеком, я сразу решил бы свою задачу, и никакой статьи не появилось бы. Достаточно просто пролистать до конца список ссылок, и в конце обнаружится глобальный метод «ПолучитьДанныеВыбора». С помощью этого метода мы на клиенте можем получить данные выбора для любого ссылочного объекта системы, что дает возможность переопределить стандартный алгоритм получения выбора данных. Например, для поля строчного типа, у которого вообще нет стандартных данных выбора, использовать алгоритм справочника «Контрагенты».

Но для нас основная ценность метода «ПолучитьДанныеВыбора» в том, что он провоцирует вызов события «ПриПолученииДанныхВыбора», котрое выполняется в контексте менеджера выбранного нами типа объекта. Иными словами мы, наконец, получаем возможность работать с сервером, а значит и самостоятельно сформировать данные выбора. И с этого момента на возможность работать с автоподбором влияют только фантазия и здравый смысл.

Задача

Мы разобрались с взаимодействием клиента и сервера, теперь я предлагаю подкрепить теорию практикой. Решим небольшую задачу, которая звучит следующим образом.

Реализовать в форме документа «РасходТовара» подбор покупателя по ФИО.

Решать сохранение нового покупателя и его ФИО не будем, так как к «вводу по строке» это не относится.

Решение:

Добавим в конфигурацию «Управляемое приложение» новый периодический регистр сведений «ФИОКонтрагентов». Периодичность «день», единственное и ведущее измерение «Контрагент» (Тип(«СправочникСсылка.Контрагенты»)), ресурсы «Фамилия», «Имя», «Отчество» (Тип(«Строка(50)»)).

На форме документа «РасходТовара» также добавим три новых реквизита «ПокупательФамилия», «ПокупательИмя», «ПокупательОтчество». Также, для удобства, добавим кнопку и команду «ОчиститьФИО».

В модуле формы реализуем метод «ПолучитьДанныеВыбораПоФИО» с директивой компиляции &НаКлиенте

В модуле менеджера справочника «Контрагенты» реализуем обработчик «ОбработкаПолученияДанныхВыбора»

В модуле менеджера регистра сведений «ФИОКонтрагентов» реализуем экспортную функцию

«ПолучитьДанныеВыбораФИО»

Теперь определим в форме документа обработчики «ФамилияАвтоПодбор», «ИмяАвтоПодбор», «ОтчествоАвтоПодбор».

Готово! Можем заходить и проверять, что у нас получилось.

Решенный вариант можно получить с помощью обновления (cfu) в приложении к статье. Для этого создайте из «Демонстрационной конфигурации «Управляемое приложение» (1.0.16.1)» файл поставки и обновите его приложенным файлом. Для тех, кто редко делает поставки вот нехитрая процедура:

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *