Заказы на доработку 1С (сервис удаленной работы)

Хранилище

База знаний
Неназначенных незавершенных заказов: 2, свеженьких 1
Бесплатные отчеты, обработки, конфигурации, внешние компоненты для 1С Статьи, описание работы, методики по работе с 1С

Здравствуйте, гость ( Вход | Зарегистрироваться )



> Особенности работы связи по типу у поля ввода          
Batchir Подменю пользователя
сообщение 11.02.09, 22:16
Сообщение #1

Живет на форуме
Иконка группы
Группа: Команда
Сообщений: 3568
Из: Киев
Спасибо сказали: 1426 раз
Рейтинг: 0

У элемента формы "Поле ввода" есть возможность настройки связи по типу. Связь по типу позволяет автоматически ограничивать набор допустимых типов поля ввода, в зависимости от значения какого-либо реквизита. Эта возможность, в частности, используется для настройки зависимости значения субконто от вида субконто. Если связь настроена, то при изменении значения вида субконто в поле ввода значения субконто будет автоматически ограничен тип. То есть пользователю при вводе значения субконто будут доступны только значения тех типов, которые определены у вида субконто.

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

Допустим, существует документ, у которого есть реквизиты Вид и Значение, соответственно хранящие вид и значение субконто. У вида субконто изменили тип. Тогда при открытии документа у поля ввода, связанного с реквизитом Значение, отработает связь по типу. Доступные типы поля ввода будут ограничены по виду субконто, но значение реквизита не должно измениться, так как иначе пользователь не увидит настоящего значения реквизита, а увидит уже приведенное значение.

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

Например, есть форма, в которую вставлены поля ПолеВводаВидСубконто, ПолеВводаЗначениеСубконто, и они связаны с реквизитами формы ВидСубконто и ЗначениеСубконто соответственно. У элемента формы ПолеВводаЗначениеСубконто настроена связь по типу с реквизитом формы ВидСубконто. Для того чтобы связь работала корректно, нужно событию ПриИзменении поля ввода ПолеВводаВидСубконто назначить обработчик следующего содержания:



Процедура ПолеВводаВидСубконтоПриИзменении(Элемент)
ЗначениеСубконто = ВидСубконто.ТипЗначения.ПривестиЗначение(ЗначениеСубконто);
КонецПроцедуры


В данном фрагменте кода у нового значения вида субконто берется описание типа, и с помощью него значение субконто приводится к допустимому типу.

Поле ввода, редактирующее значение субконто, можно связать по типу не только непосредственно с видом субконто, но и с видом субконто счета. Для этого надо настроить связь по типу с реквизитом, содержащим счет. При этом у поля ввода появится свойство "Вид субконто". В нем указывается номер вида субконто на счете. То есть если указан вид субконто 1, то при изменении значения счета, полю вводу будет назначен тип из первого вида субконто счета. В этом случае для корректной работы связи надо обрабатывать изменение значения счета. А обработчик события "При изменении" будет выглядеть следующим образом:


Процедура ПолеВводаСчетПриИзменении(Элемент)
ЗначениеСубконто = Счет.ВидыСубконто[0].ВидСубконто.ТипЗначения.ПривестиЗначение(ЗначениеСубконто);
КонецПроцедуры


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

Не нашли ответа на свой вопрос?
Зарегистрируйтесь и задайте новый вопрос.


Ответить Новая тема
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 

RSS Текстовая версия Сейчас: 19.04.24, 8:50
1С Предприятие 8.3, 1С Предприятие 8.2, 1С Предприятие 8.1, 1С Предприятие 8.0, 1С Предприятие 7.7, Литература 1С, Общие вопросы по администрированию 1С, Методическая поддержка 1С - всё в одном месте: на Украинском 1С форуме!