Skip to content

Связи параметров при вводе ссылочных данных

Evgeniy Malyarov edited this page Jun 20, 2019 · 4 revisions

TL;DR

В 1С есть "параметры выбора" и "связи параметров выбора" - они задаются в конфигураторе и не имеют доступа к данным (только предопределенные значения). Наши параметры выбора, оказывают такое же влияние на интерфейс, но вместо статического отбора на равенство, могут использовать любые формулы и любые данные (папки, ссылки, выражения)


В metadata-react для ввода ссылочных данных используется FieldInfinit, в metadata-dhtmlx, аналогичные задачи решает OCombo. Оба компонента поддерживают такие позаимствованные из 1С свойства метаданных, как ПараметрыВыбора - для статического отбора по значению некого реквизита и СвязиПараметровВыбора - так же, для отбора, в котором можно сослаться на соседний или родительский реквизит. Например:

  • Через ПараметрыВыбора, легко организовать выбор только тех номенклатур, реквизит ТипНоменклатуры которых имеет значение Услуга - без программирования, просто указав нужное значение параметра выбора для поля Номенклатура в табчасти Услуги
  • Через СвязиПараметровВыбора, легко организовать выбор только тех характеристик, владельцем которых является номенклатура текущей строки - так же, без программирования, простым указанием пути к интересующему реквизиты в конструкторе метаданных

Эти свойства широко используются, экономят много строк кода в решениях с тысячами объектов метаданных, но их гибкости иногда не хватает, для организации сложных отборов. Тогда прикладные программисты начинают изобретать свои приёмы для фильтрации ввода - подписываются на различные события, формируют индивидуальные списки значений и прочие костыли.

Еще, в метадате есть план видов характеристик ДополнительныеРеквизитыИСведения и справочники СвязиПараметров и КлючиПараметров

Ключи параметров

Справочник очень тупой и абстрактный. Он ничего не знает про код, метаданные и свойства прикладного решения. Его назначение - хранить наборы вариантов отбора. Каждая строка такого варианта состоит из трёх полей:

  • Свойство - ссылка на дополнительный реквизит или некое вычисляемое свойство
  • Значение - здесь может быть константа или ссылка на данные
  • Вид сравнения - правило (равно, не равно, содержит, в списке и т.д.)

Итак, в ключах - просто живут наборы условий

Дополнительные реквизиты и сведения

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

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

Содержит правила фильтрации значений в поле ввода, где:

  • Ведомый - свойство или допреквизит, список доступных значений которого нужно отфильтровать
  • Ведущий и табчасть Ведущие - один или несколько ключей параметров - условие, определяющее, надо ли применять текущую связь в текущем контексте
  • Табчасть Значения с дополнительными колонками По умолчанию и Принудительно - используется для ограничения списка перечислимых значений и в некоторых случаях - для установки значений

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