Подскажите как создать такой фильтр:
В карточке документ (раздела Документы) добавил поле "Своя компания" (тип lookupdatacontrol) с выбором из Контрагентов.
Нужно наложить фильтр на это поле по типу Контрагента "Наша компания" (из справочника Типы контрагентов), есть один нюанс в карточке Контрагент отключено поле "Тип контрагента" и сделана деталь "Тип контрагента", на основе существующего справочника "Тип контрагента" (чтобы у контрагента можно было задать несколько типов).
Нравится
Юрий, Вам необходимо добавить в запрос 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.