1с тип поле ввода
Программирование в 1С для всех
В этой статье начнем разбирать основные элементы управляемой формы 1С 8.3. Управление формой осуществляется посредством различных элементов формы, которые расположены иерархически на закладке Элементы конструктора формы. Самым главным элементом является сама форма, которая расположена вверху иерархии элементов, а остальные элементы ей подчинены.
Все элементы формы можно разделить на пять групп: поля, элементы группировки, кнопки, декорации и таблицы. В своих статьях я разберу каждую из групп. В этой статье мы начнем изучать один из видов элемента поле — поле ввода, но перед этим научимся добавлять элемент на форму.
Добавление элементов на форму
Делается это достаточно просто: необходимо выделить элемент Форма в окне Элементы конструктора формы и нажать на кнопку «Добавить». После этого откроется окно, в котором необходимо выбрать нужный тип элемента
После выбора, элемент нужного появится в окне Элементы.
Элемент управляемой формы Поле
Разберем элемент управляемой формы Поле. Этот элемент нужен для ввода информации на форме. А также для отображения какой-либо информации. После того, как Вы добавите этот элемент на форму, справа откроется палитра свойств элемента формы. Пока Вас должны интересовать два свойства – ПутьКДанным и Вид.
В свойстве ПутьКДанным разработчик может связать элемент формы с нужным реквизитом формы. Обратите внимание, что после того, как был добавлен элемент Поле ввода на форму он не отобразился на самой форме. Это произошло потому, что наш новый элемент не связан с реквизитом формы. Для примера я создал на форме обработки несколько реквизитов с разными примитивными типами и один реквизит с ссылочным типом.
Здесь и далее используется конфигурация, созданная в книге «Программировать в 1С за 11 шагов»
Теперь свяжем наш недавно добавленный элемент формы с одним из реквизитов, для этого выберем нужный реквизит с свойстве элемента ПутьКДанным.
После этого заполнятся свойства ПутьКДанным и Вид, а сам элемент отобразится в представлении формы.
Обратите внимание на свойство элемента Вид. При помощи этого свойства определяется функциональность поля ввода. Можно выбрать различные значения этого свойства.
В зависимости от выбранного значения будет определятся функционал. На рисунках выше выбрано значение – поле ввода, т.е. мы можем вводить какие-либо значения в это поле ввода, а если выбрать значение поле надписи, то ни чего вводить мы не сможем.
Этот значение свойств Вид поля ввода удобно выбирать, когда нужно просто показать справочную информацию пользователю.
Теперь добавим новый элемент формы с типом Поле ввода и свяжем его с реквизитом РеквзитДата посредством уже знакомого нам свойства ПутьКДанным
Как Вы видите вид поля ввода поменялся, а так же поменяется возможный выбор значений свойства Вид.
Таким образом, делаем вывод – функциональность поля ввода зависит от типа реквизита.
Для реквизита с типом Булево будут доступны следующие значения свойства Вид.
А для реквизита с ссылочным типом будут доступны иные значения свойства Вид.
Более подробно работа с элементами формы на практичных примерах дается в книге «Основы разработки в 1С:Такси. Разработка управляемого приложения за 12 шагов».
Иногда кажется, что изучить язык программирование в 1С сложно и трудно. В действительности программировать в 1С — легко. Помогут Вам легко и быстро освоить программирование в 1С мои книги: «Программировать в 1С за 11 шагов» и «Основы разработки в 1С: Такси»
Изучите программирование в 1С с помощью моей книги «Программировать в 1С за 11 шагов»
Эта книга подойдёт тем, кто уже начал программировать и испытывает определенные сложности с этой темой и тем, кто уже давно программирует, но ни разу еще не работал с управляемыми формами 1С
Промо-код на скидку в 15% — 48PVXHeYu
Если Вам помог этот урок решить какую-нибудь проблему, понравился или оказался полезен, то Вы можете поддержать мой проект, перечислив любую сумму:
можно оплатить вручную:
Яндекс.Деньги — 410012882996301
Web Money — R955262494655
Особенности работы с составным типом в поле ввода
Часто возникают ситуации, когда редактировать с помощью поля ввода нужно данные нескольких типов. Поле ввода поддерживает такую возможность. В таких случаях особенностью поведения поля ввода является то, что поле ввода работает в двух режимах:
1) Тип редактируемого значения не выбран.
2) Тип редактируемого значения выбран.
После нажатия на кнопку «Т» открывается диалог выбора типа, в котором можно выбрать нужный тип данных. Как только в этом диалоге тип выбран и нажата кнопка «OK», поле ввода переходит во второй режим работы.
Второй режим работы поля ввода ничем не отличается от ситуаций, когда в поле ввода редактируются только данные одного типа. Исключение составляет лишь поведение поля ввода при очистке значения, которое можно выполнить с помощью нажатия на кнопку очистки или нажав комбинации клавиш Shift + F4. В случае очистки значения в поле ввода, поле ввода не просто очищает значение, но и переходит в первый режим работы.
Все поведение поля ввода по редактированию значений во втором режиме работает в полном объеме. В том числе работает и ввод по строке, поскольку теперь известно, как введенную строку можно интерпретировать (например, искать ли по ней записи в каком-либо справочнике, или может быть нужно подбирать по тексту одно из значений перечисления).
На рисунке видно, что в поле ввода «Вид» есть кнопка «Т»: в поле ввода можно редактировать значения разных типов, а конкретный тип еще не выбран. При вводе какого либо текста в поле ввода «Вид» невозможен.
Перейдем теперь в поле ввода вид и нажмем на кнопку «Т» или клавишу F4: откроется диалог выбора типа:
Выберем в качестве типа данных тип «Вид продуктов» и нажмем кнопку «OK». Внешний вид поля ввода «Вид» станет теперь другим:
Мы видим, что кнопка «Т» теперь заменилась на кнопку , что говорит нам о том, что теперь в поле ввода выбран конкретный тип для редактируемого значения и редактирование возможно в полном объеме.
Значение в поле ввода «Вид» теперь можно ввести как с клавиатуры, так и с помощью нажатия на кнопку выбора или клавишу F4. Попробуем теперь убедиться, что работает ввод по строке в поле ввода: введем в поле ввода «Вид» слово «фр», желая ввести вид продукта «фрукты»:
Мы видим, что ввод по строке успешно сработал и после введенного текст дописалось окончание слова «укты».
Попробуем теперь в поле ввода «Вид» ввести другое значение с помощью нажатия на кнопку выбора или клавиши F4:
Мы видим, что открылся выпадающий список со всеми имеющимися видами продуктов. В этом списке мы можем выбрать любой нужный нам вид продукта.
Посмотрим теперь, как работает очистка значения в поле ввода «Вид». Для этого нажмем в нем на кнопку или комбинацию клавиш Shift + F4:
Мы видим, что теперь опять в поле ввода появилась кнопка «Т» (). Это говорит о том, что теперь опять не выбран тип, значение которого будет редактироваться в поле ввода.
Программное приведение типа значения поля ввода и колонки табличного поля формы 1С8
При создании формы возникает вопрос настройки типа значения поля ввода. Не всегда заранее точно известен используемый тип, поскольку это может зависеть от метаданных конфигурации и условий использования.
Если, как минимум, известно, что в поле потребуется вводить и использовать элемент Справочника или Документ, то можно настроить тип на общий вид значения, например СправочникСсылка или ДокументСсылка. Далее решить вопрос программно при открытии формы, для уточнения используемого типа.
Если требуется использовать элемент справочника Номенклатура, но в разных конфигурациях этот объект метаданных может называться по-разному, например Товары или же Номенклатура, то программное определение наименования типа при открытии формы упростит жизнь пользователю.
Следовательно, настроим автоматический выбор и первичное преобразование полей на форме к типу значения Справочник.Номенклатура, если такой есть в метаданных конфигурации. В противном случае, выбираем в качестве начального значения первый в списке имён справочников.
Для примера разработана управляемая форма и форма в обычном режиме (см. скриншоты публикации).
Обычный режим
Ниже приведен алгоритм на языке 1С8 для формы в обычном режиме. На форме есть поле список ВыбранныйТип, для которого настроено событие ПриИзменении. В поле ВыбранныйТип пользователь выбирает тип, который желает использовать для преобразования полей. При открытии формы считываем список справочников из метаданных конфигурации. Ищем справочник Номенклатура в списке, далее инициализируем на форме поле ВыбранныйТип полученным списком имён и найденным значением. Запускаем событие ВыбранныйТипПриИзменении, для преобразования типа полей ввода. В переменную модуля формы СтрокаТипЗнч сохраним полное имя выбранного типа для использования в других процедурах.
Далее необходимо выполнить преобразование типа значения колонки табличного поля. Для этого воспользуемся событием НачалоВыбора.
Код преобразования приведен ниже. В нём используется ранее инициализированная переменная СтрокаТипЗнч для получения имени выбранного типа. Алгоритм можно найти в справке по ключевому слову ПривестиЗначение.
Новый тип назначается полям динамически после каждого выбора значения в списке ВыбранныйТип.
Управляемые формы
Для управляемых форм алгоритм изменяется незначительно. Для преобразования используется свойство ОграничениеТипа. Работа с метаданными только на сервере. Для быстрого доступа к колонке табличного поля при срабатывании события НачалоВыбора сохраним в переменной на клиенте СсылкаЭлементКолонкаТП ссылку с адресом элемента.
Рассмотренный пример алгоритма можно протестировать, скачав обработку по ссылке из публикации. Работа выполнялась на 1С:Предприятие 8.3 (8.3.15.1747), с использованием конфигураций «Управление торговлей», редакция 10.3 (10.3.46.3), Управление торговлей, редакция 11 (11.4.7.150). В составе обработки одновременно присутствует управляемая форма и форма обычного режима.
Спасибо за внимание! Критика приветствуется.
Интерактивное изменение типа значения поля ввода на форме
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Изменение цветом поля в подчиненной форме в зависимости от значения в форме
Добрый день. Есть такой вопрос. Есть БД, где в поле под Статусом печати выбирается номер List ID.
Изменение значения поля типа дата/время в БД Access
Появилась проблема, не могу сохранить тип данных «дата/время» в эксес таким образом сохраняю.
Динамическое изменение маски ввода поля по значению из поля со списком
Есть две таблицы. В Т1 есть поле со списком «Гражданство», значения берутся из Т2. Т2 имеет три.
Очистка поля ввода Edit для следующего ввода значения
Здравствуйте! Необходим совет. Нужно реализовать следующую возможность: в поле ввода Edit вводится.
barracuda1991, да, присвоив пустое значение нужного типа полюВвода
Добавлено через 3 минуты
Добавлено через 39 секунд
barracuda1991, нужно было просто скопировать текст процедуры себе
Если ограничивать тип для ЭлементыФормы.ПолеВвода1 тогда не «слетает» значение реквизита ПолеВвода1 если она уже правильного типа,
а при ПолеВвода1 = ОТ.ПривестиЗначение(); фактически устанавливается пустая ссылка текущему значению реквизита ПолеВвода1
ИМХО лучше через ЭлементыФормы
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Поля ввода в форме
Можно ли создать поле ввода ФИО существующее только в форме и не существующие в таблице? И как из.
Почему изменение фона затрагивает не только изменение фона поля ввода?
Почему изменение фона через BackColor затрагивает не только изменение фона поля ввода в.
Особенности работы связи по типу у поля ввода
У элемента формы «Поле ввода» есть возможность настройки связи по типу. Связь по типу позволяет автоматически ограничивать набор допустимых типов поля ввода, в зависимости от значения какого-либо реквизита. Эта возможность, в частности, используется для настройки зависимости значения субконто от вида субконто. Если связь настроена, то при изменении значения вида субконто в поле ввода значения субконто будет автоматически ограничен тип. То есть пользователю при вводе значения субконто будут доступны только значения тех типов, которые определены у вида субконто.
Важно помнить, что связь по типу изменяет только настройку поля, но не само значение реквизита, с которым связано поле. Это связано с тем, что связь настраивается со значением реквизита. При этом значение реквизита может изменяться не только в результате интерактивных действий пользователя. Например, при открытии формы реквизит изменит свое значение, так как происходит загрузка объекта, который редактирует данная форма.
Допустим, существует документ, у которого есть реквизиты Вид и Значение, соответственно хранящие вид и значение субконто. У вида субконто изменили тип. Тогда при открытии документа у поля ввода, связанного с реквизитом Значение, отработает связь по типу. Доступные типы поля ввода будут ограничены по виду субконто, но значение реквизита не должно измениться, так как иначе пользователь не увидит настоящего значения реквизита, а увидит уже приведенное значение.
Из-за того что при отработке связи по типу значение реквизита не изменяется, возникает эффект, когда пользователю доступен для ввода только один тип, но при нажатии на кнопку выбора ему предлагается выбрать этот единственный тип. Для того что бы избежать данного эффекта, нужно обрабатывать изменение значения вида субконто и приводить значение субконто к допустимому типу.
Например, есть форма, в которую вставлены поля ПолеВводаВидСубконто, ПолеВводаЗначениеСубконто, и они связаны с реквизитами формы ВидСубконто и ЗначениеСубконто соответственно. У элемента формы ПолеВводаЗначениеСубконто настроена связь по типу с реквизитом формы ВидСубконто. Для того чтобы связь работала корректно, нужно событию ПриИзменении поля ввода ПолеВводаВидСубконто назначить обработчик следующего содержания:
В данном фрагменте кода у нового значения вида субконто берется описание типа, и с помощью него значение субконто приводится к допустимому типу.
Поле ввода, редактирующее значение субконто, можно связать по типу не только непосредственно с видом субконто, но и с видом субконто счета. Для этого надо настроить связь по типу с реквизитом, содержащим счет. При этом у поля ввода появится свойство «Вид субконто». В нем указывается номер вида субконто на счете. То есть если указан вид субконто 1, то при изменении значения счета, полю вводу будет назначен тип из первого вида субконто счета. В этом случае для корректной работы связи надо обрабатывать изменение значения счета. А обработчик события «При изменении» будет выглядеть следующим образом:
В данном примере при изменении значения счета берется первый вид субконто счета и с помощью его типа приводится значение субконто. Важно отметить, что при указании вида субконто в свойстве нумерация ведется с 1, а при обращении к массиву видов субконто программно нумерация производится с 0.