Показать сообщение отдельно
Старый 03.06.2005, 13:15   #1  
Maximin is offline
Maximin
NavAx
NavAx Club
 
409 / 341 (12) ++++++
Регистрация: 09.10.2002
Адрес: Москва
Сортировка и/или фильтры в lookup форме - howto.
Доброго времени суток!

В какой-то момент перед человеком, редко писавшим lookup формы, встала задача отсортировать её по нужному полю, да еще и фильтров навешать. Стандартные методы не срабатывали, поскольку datasource_q был все время null (поскольку у формы AutoQuery = No) и модифицировать его не получалось - тетка Аксапта, ессно, ругалась.
Поиск по конференция ничего не дал и в ФАКах было пусто.
Пришлось идти к сэнсеям. Как оказалось, сэнсеи уже не раз отвечали на этот вопрос и задолбались уже на него отвечать.

Так вот - для того, чтобы восполнить этот пробел, я решил написать этот топик.
Кстати, штука довольно неочевидная...

В общем, если стоит задача сделать фильтрацию и/или сортировку данных в собственной lookup форме ( не забывать - AutoQuery = No !), то сделать это стандартными методами (взять у datasource формы Query, добавить поля сортировки, добавить фильтры) в init'е, скажем, datasource'а формы не получится.

Вместо этого следует сделать следующее:

В init'е datasource'а формы создать новый "левый" Query.
PHP код:
Query    _query;
;
_query = new Query();
_query.addDataSource(....... 
Далее, как обычно, добавить в него нужные datasource'ы(таблицы).
Затем нафаршировать его нужными сортировками и фильтрами.
Далее - сказать магическое сочетание:

PHP код:
this.Query(_query); 
(это в случае, если пишем все в init datasource'а).

Далее остается вызвать super();

Участие в написании принимали Lexx, Aand, и ваш покорный слуга.
Всё. Комментарии - welcome.