Есть ДО на закупку.
Нам необходимо дать возможность пользователю одну из следующих возможностей (в порядке убывания приоритета):
1. Фильтр по аналитике Целевого учета в спецификации ДО.
2. Сортировка по аналитике Целевого учета в спецификации ДО.
3а. Установка фильтра по переменной логической таблицы шапки документа
В частности, в логической таблице описаны переменные vsKau1 и vsKau3, которые содержат строковые значения аналитики Целевого учета. С допущением, что в рамках одного документа будет использоваться один разрез Целевого учета, нас устроил бы вариант установки фильтра по этим полям.
В ходе изысканий пытались найти возможность создания и программной установки пользовательских фильтров, но данного функционала не нашли.
Максимум, чего удалось добиться - использовать событие cmFilterPick. То есть мы конфигуратором вытащили эти переменные в колонки Browse и докомпилировали .
Код: Выделить всё
alter interface vschetB; //Совместительство
overload
end;
handleEvent
cmFilterPick:{
//message('Открылся наш обработчик');
case (CurField) of
#VSKAU1:{
//message('Здесь будет выбор объекта строительства для фильтра');
var ks_nrec:comp;
ks_nrec:=0;
if RunInterface(L_Uks::katstroy,0, true, ks_nrec, false, true)=cmDefault {
if getfirst katstroy where ((ks_nrec==katstroy.nrec))=tsOk {
FilterPickVar :=katstroy.name;
}
}
}
#VSKAU3:{
//message('Здесь будет выбор сметы для фильтра');
var nm:string;
if RunInterface(iSmetaUrRO, nm)=cmDefault {
FilterPickVar := nm;
}
}
end;
}
end;
end.
1. Не устанавливается строковый фильтр на сконфигурированную колонку.
2. В обработчике события cmFilterPick мы можем определить только текущее поле интерфейса, в котором был фокус перед вызовом Пользовательских фильтров, а логичнее выглядит в данном случае поле, на которое настроен конкретный пользовательский фильтр, так как в данном интерфейсе планируется использовать фильтры по четырем полям.
3б. Установка фильтра по внешнему атрибуту, привязанному к шапке документа.
К шапке ДО привязан атрибут типа ссылка на Persons.
4. Сортировка списка документов по выбранному полю (опять же, либо по переменной логической таблицы, либо по внешнему атрибуту)
В целом, я изложил все возможные варианты. Нас устроил бы даже один из них, например, только сортировка по полю, на котором находится фокус, либо только удобная фильтрация.
Подскажите пожалуйста, какие есть варианты решения данной задачи