Фильтр на поле из данных детали на основе справочника

Подскажите как создать такой фильтр:

В карточке документ (раздела Документы) добавил поле "Своя компания" (тип lookupdatacontrol) с выбором из Контрагентов.
Нужно наложить фильтр на это поле по типу Контрагента "Наша компания" (из справочника Типы контрагентов), есть один нюанс в карточке Контрагент отключено поле "Тип контрагента" и сделана деталь "Тип контрагента", на основе существующего справочника "Тип контрагента" (чтобы у контрагента можно было задать несколько типов).

Нравится

2 комментария

Юрий, Вам необходимо добавить в запрос sq_Account следующий фильтр типа Exists:

exists (select ID from tbl_AccountTypeInAccount where AccountID = tbl_Account.ID and AccountTypeID = :OurCompanyTypeID)

Здесь предполагается, что таблица, в которой хранятся значения из детали "Тип контрагента", имеет название tbl_AccountTypeInAccount и содержит поля AccountID (для связи с реестром раздела) и AccountTypeID (для связи со справочником "Тип контрагента"). Также в запрос необходимо добавить параметр с названием "OurCompanyTypeID", типом "Уникальный идентификатор" и значением, равным ID типа "Наша компания" (из таблицы tbl_AccountType). Фильтр должен быть отключён.

После того, как фильтр создан, необходимо создать обработчик события OnPrepareSelectWindow для контрола "Своя компания" в окне редактирования документа, и в этот обработчик вставить текст:

var LookupDataset = LookupDataControl.DataField.LookupDataset;	
ApplyDatasetFilter(LookupDataset, <код созданного фильтра в одинарных кавычках>, OurCompanyAccountTypeID, true);

Предварительно нужно убедиться, что в скрипте scr_Consts объявлена константа OurCompanyAccountTypeID, равная ID типа "Наша компания". Если такой константы нет, её необходимо добавить (или вставить значение ID вместо констаны в приведённый выше скрипт.)

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

Спасибо.
То что надо.

Показать все комментарии