Связь по типу не работает

Установка параметров выбора и связей параметров выбора для объектов метаданных

Область применения: управляемое приложение, мобильное приложение, обычное приложение.

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

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

Например, в конфигурации имеются

  • справочник Сотрудники , в котором есть реквизиты Организация и ВидСотрудника (перечисление со значениями Основной / Совместитель );
  • документ ПриказОПриеме , в котором есть реквизит Организация и Сотрудник ; при этом для реквизита Сотрудник документа ПриказОПриеме задана связь параметра выбора Отбор.Организация с реквизитом Организация .

Требуется реализовать возможность выбора только основных сотрудников в зависимости от значения функциональной опции ВыбратьТолькоИзОсновыхСотрудников . Для этого необходимо

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

(При этом установить для реквизита Сотрудник документа ПриказОПриеме связь для параметра выбора Отбор.ВидСотрудника нет возможности, т.к. реквизита ВидСотрудника в документе ПриказОПриеме не существует.)

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

Источник

Особенности работы связи по типу у поля ввода

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

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

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

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

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

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

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

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

Источник

Указание связи по типу для составного реквизита от другого реквизита — Перечисления.ВозможныеТипы.

Знаю как привязать подчиненный реквизит справочника к его владельцу. через свойство — связь по владельцу.

на форме ставлю два реквизита —
1. Перечисление.ВидыПосуды — Ложка, Вилка, тарелка..
2. Справочник.Посуда Тип составной — Ложка, Вилка, тарелка..

Польз. указав тип вначале рекв №1. должен в сразу обращаться к нужному типу рек №2.

Эти два реквизита для наглядности у меня . как же это реализовать?

PS если сущ другие типовые решения моей проблемки..напрвте плиз на путь истинный ))

(1) Не очень понятно, что требуется.
Если это отбор по реквизиту, то в событии при начале выбора из справочника прописать установку отбора.

Если это подчинение, то перечисление выступать владельцем не может.

Попробую объяснить по другому.

Вопрос: Как правильней, нагляднее и удобнее заполнять реквизит..(в моей слчае он нах-ся в таблице документа), тип которого — составной из нескольких справочников.

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

Это, на мой взгляд ускоряет и повышает наглядность ввода для пользователя.

Как реализовать эту схему. программно . может быть настроечно через свойства, типа «связь по владельцу», «связь по типу» пробовал — не получается ((((

Источник

Разбираемся с параметрами редактирования СКД

Вступление

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

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

Самые простые параметры редактирования

Наиболее простыми для использования являются следующие параметры: Формат редактирования, Быстрый выбор, Выбор групп и элементов. С ними все понятно, поэтому их пропустим.

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

Форма выбора — позволяет указать, какую форму необходимо использовать для выбора значения параметра. Путь к форме необходимо прописывать точно также, как для метода ОткрытьФорму(), который также описан в СП.

Связи параметров выбора

Настраиваются через специальное окно Редактирование связей параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.

Пример 1

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

Тогда достаточно в поле Параметр выбора указать имя реквизита из справочника Договоры контрагентов, в нашем случае это Владелец, поэтому запишем: Отбор.Владелец.
Зачем добавлять слово Отбор, опишу ниже.

В колонку Поле — нужно выбрать параметр Контрагент.

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

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

Параметры выбора

Настраиваются через специальное окно Редактирование параметров выбора.
Рассмотрим на примере как заполнять поля этой формы.

Пример 2

Поля Контрагент и Договор из первого примера.
Мы хотим, чтобы пользователь мог выбрать только договор с видом С покупателем или Прочее и не помеченный на удаление.
Добавляем два параметра:
1. Параметр выбора = Отбор.ПометкаУдаления; Значение = ЛОЖЬ
2. Параметр выбора = Отбор.ВидДоговора; Значение = список из двух элементов : С покупателем, Прочее
Эти два параметра будут устанавливаться всегда независимо от выбранности/невыбранности параметра Контрагент.

Зачем нужно слово Отбор?

Почему в поле Параметр выбора необходимо использовать приставку Отбор? Какие еще параметры можно указывать и на что это влияет?

Это один из ключевых вопросов данной статьи, который и стал поводом к ее написанию.

Для ответа на этот вопрос предположим, что у нас есть независимая обработка без СКД с реквизитами Контрагент и Договор.
Какой код нам потребовалось бы написать, чтобы при подборе в поле Договор на нашей обработке устанавливались нужные отборы и передавались параметры?
Один из вариантов этого кода выглядит следующим образом.

Если предположить, что платформа открывает выбор похожим образом, то становится понятно, что слово Отбор — это вложенная структура в ПараметрыОткрытия.

Чтобы получше разобраться поэкспериментируем

Пример 3

Добавим по два параметра в Параметры выбора и в Связи параметров выбора.

Поставим точку останова в форме выбора при создании на сервере

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

Значит приставка перед точкой — является именем структуры, а после точки — имя ключа в этой структуре.

Связь по типу

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

Пример 4

Создадим в СКД параметр Счет.
И еще три параметра Субконто1, Субконто2, Субконто3.
Мы хотим, чтобы если выбран Счет, то во параметре СубконтоN автоматически устанавливался отбор со значениями соответствующего субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = Счет (ПараметрыДанных.Счет), Элемент связи = 1 (номер субконто)
Для остальных двух параметров аналогично, только Элемент связи будет 2 и 3.

Теперь при выбранном параметре Счет, в полях СубконтоN будут доступны только значения, соответствующие типу субконто

Пример 5

Создадим в СКД параметры Вид субконто и Субконто.
Мы хотим, чтобы при выборе вида, были доступны только значения соответствующие виду субконто.
В этом случае для параметра Субконто1 настраиваем Связь по типу:
Поле = ВидСубконто (ПараметрыДанных.ВидСубконто), Элемент связи = 0 (не имеет значение в данном случае)

Заключение

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

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

Думаю, что данное описание поможет разобраться в этом механизме и начать его применять.

Источник

Читайте также:  Обновить строки не работает
Оцените статью