Модификация прикладной системы

 

Разработка справочников

 

Переопределение выбора из справочника

Для того чтобы переопределить выбор из справочника, в поле Выбор из справочника необходимо задать следующие вычисления:

 

// Если визуальный режим

if not VarIsClear(Object.View)

  SelectFromFiltrateReferenceAction(ИмяСправочника;

  SelectMode; InputValue; Requisite; KeyReqInfoArray)

endif

где

·         ИмяСправочника - имя нового фильтруемого справочника из компоненты Типы справочников;

·         SelectMode, InputValue, Requisite – предопределенные переменные, доступные в вычислениях на выбор из справочника (см. раздел «Переменные в выборе из справочника реквизитов типов карточек эл. документов» в справочной системе по объектной модели);

·         KeyReqInfoArray – массив с данными о ключевых реквизитах. Заполняется только в тех случаях, когда в типе справочника или типе карточки электронных документов, в котором переопределяется выбор из справочника, есть ключевые реквизиты. Ключевыми реквизитами считаются те реквизиты, которые удовлетворяют одному из следующих условий:

·         реквизит ссылается на главный ведущий справочник нового фильтруемого справочника. Например, в типе справочника Организации есть реквизит Регионы, который ссылается на справочник Регионы. Этот справочник является главным ведущим для справочника Населенные пункты. Поэтому при переопределении выбора из справочника для реквизита Населенный пункт, реквизит Регион будет ключевым (см. также пример заполнения массива KeyReqInfoArray, приведенный ниже);

·         реквизит ссылается на тот же справочник, что и один из запрашиваемых реквизитов нового фильтруемого справочника. Например, в типе справочника Контакты с клиентами есть реквизит Организация, который ссылается на справочник Организации. На этот  же справочник ссылается один из запрашиваемых реквизитов справочника Контактные лица организаций. Поэтому при переопределении выбора из справочника для реквизита *Контактное лицо, реквизит Организация будет ключевым (см. также пример заполнения массива KeyReqInfoArray, приведенный ниже).

Массив KeyReqInfoArray имеет следующую структуру:

 

ArrayOf(ArrayOf(ИмяКлючевогоРеквизита1;ЗначениеКлючевогоРеквизита1);

ArrayOf(ИмяКлючевогоРеквизитаN; ЗначениеКлючевогоРеквизитаN))

где

·         ИмяКлючевогоРеквизита1 ... ИмяКлючевогоРеквизитаN – имена реквизитов в новом фильтруемом справочнике, соответствующих ключевым реквизитам в том типе справочника или типе карточки электронных документов, в котором переопределяется выбор из справочника (см. ниже пример заполнения массива);

·         ЗначениеКлючевогоРеквизита1 ... ЗначениеКлючевогоРеквизитаN – значения ключевых реквизитов в том типе справочника или типе карточки электронного документа, в котором переопределяется выбор из справочника.

Значение ключевого реквизита можно определить следующим образом:

·         если ключевой реквизит относится к разделу «Карточка», то:

ЗначениеКлючевогоРеквизита= Object. Наименование,

где Наименование – имя ключевого реквизита;

·         если ключевой реквизит относится к одному из табличных разделов, например, «Таблица» или «Таблица2», то:

ЗначениеКлючевогоРеквизита = Object. DetailDataSet(I). Наименование,

где Наименование – имя ключевого реквизита, I – номер таблицы.

Пример заполнения массива KeyReqInfoArray:

Рассмотрим пример заполнения массива KeyReqInfoArray в типе справочника Организации, в вычислении Выбор из справочника для реквизита Населенный пункт.

У фильтруемого справочника Населенные пункты есть главный ведущий справочник Регионы. Запрашиваемые реквизиты ссылаются на справочники Страны и Регионы.

В справочнике Организации, в котором переопределяется выбор из справочника, есть реквизит *Регион, ссылающийся на справочник Регионы, но нет реквизитов, ссылающихся на справочник Страны.

Значит, в этом случае есть только один ключевой реквизит – это реквизит *Регион.

Заполнение массива KeyReqInfoArray для данного примера должно выглядеть следующим образом:

 

ArrayOf(ArrayOf(SYSREQ_LEADER_REFERENCE; Object.Регион))

В данном примере наименование реквизита передается через зарезервированную константу SYSREQ_LEADER_REFERENCE, которая имеет значение «Ведущая аналитика».

 

 

 

См. также:

·         Выбор способа нумерации;

·         Определение ведущих справочников ;

·         Установка контекста нашей организации;

·         Добавление реквизитов в справочник;

·         Настройка формы справочника;

·         Обработка событий справочника;

·         Автозаполнение полей по заданному формату;

·         Использование пользовательской обработки событий;

·         Обеспечение возможности фильтрации справочников.