Фильтр сложного справочника

Здравствуйте.
У меня возникла проблема с новыми справочниками в Продуктах.
Суть такая: я создаю справочники: группа продуктов и размер продуктов. Справочник размер продуктов "сложного типа", т.е. одному размеру может соответствовать несколько групп и одной группе соответствует несколько размеров. Справочники работают (при выборе определенного размера на дополнительно закладе отображаются группы, которым он соответствует). Справочники сделаны по типу "Результаты задач". Только не получается в карточке Продукта сделать так, что бы при выборе определенной группы для продукта, в поле размер отображались только те цвета, которые ей отвечают.
В скрипт продукта добавляю функцию:
function edtRazmOnPrepareSelectWindow(LookupDataControl, SelectWindow) {
PrepareLookupDataControl(LookupDataControl, dlData.Dataset);
var Dataset = dlData.Dataset;
var LookupDataset = LookupDataControl.DataField.LookupDataset;
var Gr1ID = Dataset.Values('GrID');
ApplyDatasetFilter(LookupDataset, 'Gr1ID', Gr1ID, true);
var AllowedRazmIDs = GetAttribute(Self, 'AllowedRazmIDs');
var IsRazmIDsFilterEnabled = Assigned(AllowedRazmIDs);
ApplyDatasetIncludeFilter(LookupDataset, 'IncludeID',
AllowedRazmIDs, IsRazmIDsFilterEnabled);
}

Но никакого отбора не происходит, какую бы группу я не выбрала, размеры отображаются все.

Нравится

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

У вас выбор группы и размера выпадающие списки?

var AllowedRazmIDs = GetAttribute(Self, 'AllowedRazmIDs');
посмотрите что из себя представляет AllowedRazmIDs может быть это не объект
хотя применение IncludeFilter непонятна
вероятно проблема в SelectQuery LookupDataset
Gr1ID
внимательно просмотрите его

Чесно говоря, я не понимаю, что такое AllowedRazmIDs:)
Все прописывалось по примеру справочник "Результат задач" и карточки Задача (только там выбираются тип и состояние, а результаты зависят от них). И вот в скрипте задач было прописано var AllowedRezultIDs = GetAttribute(Self, 'AllowedResultIDs');. Как появилось это 'AllowedResultIDs' мне и непонятно.
А Gr1ID это моя переменная, я просто и справочник так один назвала.

У меня выбирается группа продукта и размер продукта (все в своих ячейках, у всех свой отдельный выпадающий список)

Если выпадающий, то на изменение группы нужно делать UnprepareDropDownList контролу Размеров. И наоборот.

Возникла у меня другая проблема: выбираю группу и под нее фильтруются размеры, но после изменения группы - размеры остаются старые. Почему-то ячейка для выбора размеров не обновляется...
Есть такая у меня функция:
function dlDataOnDatasetDataChange(DataField) {
if (!Assigned(DataField)) {
return;
}
var DataFieldName = DataField.Name;
var Dataset = DataField.ParentDataFields.ParentDataset;
switch (DataFieldName){
case ('GrID'):
edtRazm.UnprepareDropDownList();
break;
}
}
Или же нужно как-то иначе прописать..

Сейчас после изменения группы на выбор размера должен идти запрос. Посмотрите
1)Идет ли он.
2)Возвращает он те же данные, что отображаются при выборе размера.
3)Если да, точто нужно поменять в фильтрах, чтобы запрос возвращал правильные данные. Сделайте эти изменения в фильрах и повключайте нужные фильтры в edtRazmOnPrepareSelectWindow.

Сейчас после изменения группы на выбор размера должен идти запрос. Посмотрите
1)Идет ли он.
2)Возвращает он те же данные, что отображаются при выборе размера.
3)Если да, точто нужно поменять в фильтрах, чтобы запрос возвращал правильные данные. Сделайте эти измененияв фильрах и повключайте нужные фильтры в edtRazmOnPrepareSelectWindow.
Upd: Акелла промахнулся :)

Спасибо, за помощь:)
Не получилось правда с выпадающим списком размеров. Я сделала, что бы просто открывался справочник размеров, а там он уже фильтрует данные по группам.

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