1с поле формы значение
Как получить значение элемента формы 1С
1. Реквизиты объекта и реквизиты формы в 1С
В обычном приложении у элемента формы 1С 8.3 было свойство «Значение», доступное как для чтения, так и для записи. Какой аналог в управляемом приложении?
Элементы формы 1С 8.3 могут содержать реквизиты двух видов: реквизиты объекта 1С и реквизиты формы.
Красным помечен реквизит объекта 1С Контрагент, а зеленым – реквизит формы в 1С.
Интерактивно выберем эти элементы в пользовательском режиме 1С и попробуем прочитать их «программно» кнопкой «Прочитать».
Если читать значения реквизитов в клиентской процедуре, то код для 1С Предприятия будет следующий:
Все бы хорошо: мы получили на клиенте значения реквизитов объекта 1С и формы, но – не значения элементов формы 1С. На клиенте значение элементов формы 1С получить нельзя.
2. Как получить значения из элементов формы 1С
Чтобы получить значения из элементов формы 1С, нам потребуется серверный вызов:
Именно на сервере у элемента формы 1С 8.3 становится доступно свойство ПутьКДанным, по которому его можно извлечь либо из Объекта, который имеет тип ДанныеФормыСтруктура:
…либо из Формы, которая имеет тип ФормаКлиентскогоПриложения:
Форма и ее элементы не видны на сервере без контекста. То есть код для 1С:Предприятия выдаст множество ошибок.
Также Форму нельзя передать как параметр в процедуру и функцию на сервер или в общий модуль.
Новое значение доступно как параметр процедуры ВыбранноеЗначение.
Система дает шанс что-то сделать в этой ситуации.
Элементы формы
Элементы формы предназначены для отображения и редактирования данных в форме. Также как и сама форма, элементы связаны с данными при помощи реквизитов формы:
Поведение элементов, определяемое данными
Благодаря этой связи у пользователя появляется возможность изменять данные, описанные в реквизитах формы. Кроме этого, связь элементов управления с данными определяет и поведение самих элементов управления.
Например, если элемент поле ввода, связать с данными, имеющими тип Строка, то оно будет иметь следующий вид:
Если же поле ввода связать с данными, имеющими тип Дата, то внешний вид поля ввода изменится: появятся символы разделителей даты и дополнительная кнопка выбора:
При нажатии на кнопку выбора будет открываться окно календаря, позволяющее выбирать нужную дату нажатием мыши:
Если же поле ввода связать с каким-либо объектом прикладного решения, то у него появятся две дополнительные кнопки: кнопка просмотра и кнопка открытия, имеющая уже другую пиктограмму, т. к. предназначена для выбора нужного объекта прикладного решения из формы списка:
Элементы, ориентированные на бизнес-задачи
Поля ввода
Элементы, используемые в формах 1С:Предприятия, ориентированы на выполнение бизнес-задач. Например, поле ввода может иметь ряд дополнительных кнопок: выбора из списка, выбора, очистки, регулирования и открытия. Кроме этого, у поля ввода существует режим автоотметки незаполненного (подчеркивание красным пунктиром), который позволяет выделять поля, обязательные для заполнения пользователем:
Действия, выполняемые при нажатии дополнительных кнопок поля ввода, могут быть различными, в зависимости от типа данных, которые отображаются в этом поле; при этом кнопка выбора будет иметь разные пиктограммы:
Например, для поля ввода, содержащего число, нажатие на кнопку выбора будет приводить к открытию калькулятора:
А для поля ввода, содержащего дату, нажатие той же самой кнопки будет приводить к открытию календаря:
Редактирование в одном элементе любых типов данных
Поскольку платформа 1С:Предприятия допускает хранение в полях базы данных различного типа, элементы управления также обеспечивают ввод и редактирование различных типов данных в одном элементе. Например, если в поле ввода могут быть введены данные различных типов, то при нажатии на кнопку выбора система откроет специальное окно для выбора типа данных, которые будут содержаться в этом поле:
Динамические списки
Элемент формы Таблица позволяет отображать и редактировать динамические списки, содержащие информацию из базы данных. Такие списки могут быть отсортированы простым нажатием мыши на заголовке нужной колонки и поддерживают различные варианты фильтрации и возможность интерактивного управления расположением колонок. Подробнее…
Автоматическое изменение расположения и размеров элементов формы при изменении размеров окна
В платформе 1С:Предприятия 8 реализован механизм автоматического изменения расположения и размеров элементов, который обеспечивает автоматическое выравнивание всех элементов управления, поддерживает разделители внутри окна и тем самым позволяет при разработке формы для объекта не заботиться о том, как она будет отображаться при изменениях размеров окон.
Программное приведение типа значения поля ввода и колонки табличного поля формы 1С8
При создании формы возникает вопрос настройки типа значения поля ввода. Не всегда заранее точно известен используемый тип, поскольку это может зависеть от метаданных конфигурации и условий использования.
Если, как минимум, известно, что в поле потребуется вводить и использовать элемент Справочника или Документ, то можно настроить тип на общий вид значения, например СправочникСсылка или ДокументСсылка. Далее решить вопрос программно при открытии формы, для уточнения используемого типа.
Если требуется использовать элемент справочника Номенклатура, но в разных конфигурациях этот объект метаданных может называться по-разному, например Товары или же Номенклатура, то программное определение наименования типа при открытии формы упростит жизнь пользователю.
Следовательно, настроим автоматический выбор и первичное преобразование полей на форме к типу значения Справочник.Номенклатура, если такой есть в метаданных конфигурации. В противном случае, выбираем в качестве начального значения первый в списке имён справочников.
Для примера разработана управляемая форма и форма в обычном режиме (см. скриншоты публикации).
Обычный режим
Ниже приведен алгоритм на языке 1С8 для формы в обычном режиме. На форме есть поле список ВыбранныйТип, для которого настроено событие ПриИзменении. В поле ВыбранныйТип пользователь выбирает тип, который желает использовать для преобразования полей. При открытии формы считываем список справочников из метаданных конфигурации. Ищем справочник Номенклатура в списке, далее инициализируем на форме поле ВыбранныйТип полученным списком имён и найденным значением. Запускаем событие ВыбранныйТипПриИзменении, для преобразования типа полей ввода. В переменную модуля формы СтрокаТипЗнч сохраним полное имя выбранного типа для использования в других процедурах.
Далее необходимо выполнить преобразование типа значения колонки табличного поля. Для этого воспользуемся событием НачалоВыбора.
Код преобразования приведен ниже. В нём используется ранее инициализированная переменная СтрокаТипЗнч для получения имени выбранного типа. Алгоритм можно найти в справке по ключевому слову ПривестиЗначение.
Новый тип назначается полям динамически после каждого выбора значения в списке ВыбранныйТип.
Управляемые формы
Для управляемых форм алгоритм изменяется незначительно. Для преобразования используется свойство ОграничениеТипа. Работа с метаданными только на сервере. Для быстрого доступа к колонке табличного поля при срабатывании события НачалоВыбора сохраним в переменной на клиенте СсылкаЭлементКолонкаТП ссылку с адресом элемента.
Рассмотренный пример алгоритма можно протестировать, скачав обработку по ссылке из публикации. Работа выполнялась на 1С:Предприятие 8.3 (8.3.15.1747), с использованием конфигураций «Управление торговлей», редакция 10.3 (10.3.46.3), Управление торговлей, редакция 11 (11.4.7.150). В составе обработки одновременно присутствует управляемая форма и форма обычного режима.
Спасибо за внимание! Критика приветствуется.
Программирование в 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 и 3, тогда в поле выбора удастся установить любое из этих значений. При установке других значений, хотя ошибки времени выполнения и не произойдет, они сохранены не будут.
Представление значения, хранящегося в поле выбора
В качестве представления значения, хранящегося в поле выбора, используется представление элемента списка выбора, значение которого эквивалентного значению поля выбора. Если у элемента списка выбора представление не указано, оно формируется в виде текстового представления самого значения. В ситуациях, когда в списке выбора есть несколько одинаковых значений с разными представлениями, будет использоваться первое найденное из этих значений. Представление значения при этом будет сформировано на его основе, как описывалось выше.
Поиск значения в поле выбора по введенному тексту
Поиск значений по тексту осуществляется на основе представлений для элементов списка выбора. Для тех из элементов, в которых представление значения не указано, используется представление самого значения, хранящегося в нем.
Связь поля выбора с данными
Поле выбора можно связывать по данным с выбираемым значением, а не со списком значений. Например, если мы хотим, чтобы в поле выбора можно было выбирать число, и оно было связано по данным со значением некоторого реквизита, типом данных для реквизита должно быть число, а не список значений.
Особенности инициализации и использования списка выбора
Для правильного отображения в поле выбора данных, с которыми он связан, список выбора должен формироваться в теле модуля формы. Формировать список выбора для поля выбора в обработчике любого из событий формы – поздно. Это приведет к тому, что в поле выбора будет установлено значение «Неопределено», хотя в реквизите при этом может быть любое значение.
Такая ситуация возникает из-за того, что данные устанавливаются в элементы управления формы, связанные с ними, в процессе создания формы. А обработчики событий ПередОткрытием(), ПриОткрытии() вызываются после создания самой формы, в процессе инициализации ее визуальной части. Получается, что при создании формы полю выбора поставили некоторое значение в момент, когда его список выбора пустой. При этом, поскольку список выбора пустой, вместо устанавливаемого значения в поле выбора будет сохранено значение «Неопределено».
При смене типа значения (свойство «ТипЗначения») для списка выбора, у которого есть элементы, будет выполнено преобразование их значений к новому типу. Может быть следующая ситуация: после смены типа значения для списка выбора некоторое значение, которое раньше удавалось успешно установить в поле выбора, после смены типа значения установить не получается. Причина такой ситуации в том, что в процессе установки типа значения для списка выбора, успешно устанавливаемое ранее значение было конвертировано в другое значение (в соответствии с новым типом значения). Соответственно, устанавливаемое значение в списке выбора больше найдено не будет.
Использование поля выбора: пример 1
Пусть есть форма, в которой размещены поле выбора (ПолеВыбора1), поле ввода (ПолеВвода1) и создан реквизит (Реквизит1: число, длина = 10, точность = 0). В качестве данных для редактирования в ПолеВвода1 и ПолеВыбора1 стоит реквизит Реквизит1. В теле модуля формы написан следующий код:
Открыв такую форму в режиме 1С:Предприятие, можно видеть, как будут устанавливаться значения в поле выбора:
2. Выбираем в поле выбора в выпадающем списке строку с надписью «Один»: в поле ввода помещается значение 1. Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот. В данном случае в поле выбора выбрали строку «Один», значение для которой равно 1. Оно и отобразилось в поле ввода.
3. Выбираем в поле выбора в выпадающем списке строку с надписью «Два»: в поле ввода помещается значение 2.
Перейдем в поле ввода и попробуем редактировать значения в нем:
1. Введем в поле ввода значение 3 и сойдем с поля ввода. В поле выбора запишется значение 3 и установится значение из соответствующей строки списка выбора поля выбора («Три»).
2. Вернемся в поле ввода и введем в нем значение 4. Перейдем с поля ввода к следующему элементу управления. В поле ввода будет сохранено введенное значение «4», а поле выбора станет пустым. В данном случае введенное в поле ввода значение 4 будет сохранено в связанных с полем ввода данных, после чего выставлено из них в поле выбора. Поскольку поле выбора в списке выбора значения 4 не имеет, оно установлено в поле выбора не будет.
Использование поля выбора: пример 2
Пусть есть форма, в которой размещены поле выбора (ПолеВыбора1), поле ввода (ПолеВвода1) и создан реквизит (Реквизит1: СправочникСсылка.Номенклатура). В качестве данных для редактирования в ПолеВвода1 и ПолеВыбора1 стоит реквизит Реквизит1. В теле модуля формы написан следующий код:
Открыв такую форму в режиме 1С:Предприятие, можно видеть, как будут устанавливаться значения в поле выбора:
2. Выбираем в поле выбора в выпадающем списке строку с надписью «Один»: в поле ввода помещается значение. Поскольку поле ввода и поле выбора связаны с одним и тем же реквизитом формы, при изменении значения в поле ввода оно устанавливается в поле выбора и наоборот. В данном случае в поле выбора выбрали строку «Один», значение для которой равно ссылке на на элемент справочника Справочники.Номенклатура.Элемент1. Оно и отобразилось в поле ввода.
3. Выбираем в поле выбора в выпадающем списке строку с надписью «Два»: в поле ввода помещается ссылка на элемент справочника Справочники.Номенклатура.Элемент2:
Перейдем в поле ввода и попробуем редактировать значения в нем:
1. Выберем в поле ввода значение Справочники.Номенклатура.Элемент1. В поле выбора запишется значение Справочники.Номенклатура.Элемент1 и установится значение из соответствующей строки списка выбора поля выбора («Один»).
2. Выберем в поле ввода значение Справочники.Номенклатура.Элемент2. В поле выбора запишется значение Справочники.Номенклатура.Элемент2 и установится значение из соответствующей строки списка выбора поля выбора («Два»).
3. Выберем в поле ввода значение Справочники.Номенклатура.Элемент3. В поле выбора значение Справочники.Номенклатура.Элемент3 записано не будет, поскольку оно не было добавлено в список выбора. Значением в поле ввода будет «Неопределено»:
Использование поля выбора: пример 3
Пусть есть внешняя обработка, в которой создан реквизит Реквизит1 типа СправочникСсылка.Номенклатура. Во внешней обработке есть две формы: в первой устанавливается значение реквизита и по нажатию на кнопку открывается вторая форма.
Посмотрим, как будет выглядеть вторая форма в зависимости от того, какое значение сохранено предварительно в реквизите внешней обработки Реквизит1.
Значение реквизита в списке выбора для поля выбора отсутствует: