Взятие значений из фильтра профиля

Добрый вечер!

Есть продукт. У него есть профиль (тип профиля: контрагент, а фильтр в профиле по отраслям или по городу). Необходимо:
1. по продукту и его профилю выбрать значения, по которым производится фильтр в профиле;
2. если неизвестно по чему именно производится фильтр в профиле (по отрасли или по городу или еще по чему-либо), то и это нужно узнать.

Подскажите как это можно сделать.

Нравится

5 комментариев

О каком профиле идет речь?
Укажите более детально на примере какой результат Вам необходим?

Есть профиль продукта, тип профиля Контрагент, фильтр по Отраслям (из справочника).

Необходимо, зная продукт, фильтровать Контрагентов по указанным у них отраслям (фильтр по отраслям такой же как в профиле выбранного продукта).

В каком разделе необходимо отображать результат?
Например:
В разделе [Продукты] создать динамическую деталь [Контрагенты], где выводить контрагентов, отфильтрованых, согласно детали [профиль продуктов] для данного продукта.

В разделе [Контрагенты]. По выбору продукта должен фильтроваться список Контрагентов.

На данный момент сделала аналогичный фильтр по сегментной матрице в разделе [Контрагенты]:
добавила LookupControl для выбора продукта, в скрипт scr_AccountsWorkspace добавила следующие функции:

function cbShowSegmentMatrixOnClick(Control) {
var IsChecked = Control.IsChecked;
edtOffeingFilter.IsEnabled = IsChecked;
RefreshAccounts();
}

function edtOffeingFilterOnChange(LookupControl) {
RefreshAccounts();
}

function dlAccountsOnDatasetBeforeOpen(Dataset) {
var IsInSingleRowMode = GetIsInSingleRowMode();
if (IsInSingleRowMode != true) {
ApplyStandardWorkspaceFilter();
}
ApplyAccountsWorkspaceFilter();
CalcTodaySelectQueryParamters(Dataset, 'TodayStart');
}

function ApplyAccountsWorkspaceFilter() {
if (cbShowSegmentMatrix.IsChecked) {
ApplySegmentMatrixFilter();
}
}

function ApplySegmentMatrixFilter(){
if (AccountsWorkspace.DisableFilters) {
return;
}
if (!cbShowSegmentMatrix.IsChecked) {
return;
}
var MainDataset = dlAccounts.Dataset;
var OfferingID = Self.ComponentsByName('edtOffeingFilter').Value;
if (!OfferingID) {
return;
}
var DatasetProfile = Services.GetSingleItemByUSI('ds_OfferingProfile');
DatasetProfile.Close();
ApplyDatasetFilter(DatasetProfile, 'OfferingID', OfferingID, true);
DatasetProfile.Open();
var ProfileID = DatasetProfile.Values('CustomerProfileID');
var DatasetCustomerProfile = Services.GetSingleItemByUSI('ds_CustomerProfile');
DatasetCustomerProfile.Close();
ApplyDatasetFilter(DatasetCustomerProfile, 'ID', ProfileID, true);
DatasetCustomerProfile.Open();
var Filter = DatasetCustomerProfile.Values('Filter');
}

В функции ApplySegmentMatrixFilter() не знаю как отфильтровать контрагентов по тем отраслям, которые находятся в переменной Filter. Как я понимаю надо данные из Filter добавить в какой-то массив, а потом включить фильтр типа "In" в sq_Account с данными из этого массива.
Но не знаю как данные из Filter занести в массив.

Разобралась =)

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