Зарегистрироваться | Поиск |
Результаты опроса: Как вы используете класс SysTableLookup у себя в приложении? | |||
Использую, в том числе для отображения дисплей методов | 7 | 53.85% | |
Использую без отображения дисплей методов | 6 | 46.15% | |
Не использую (Всегда пишу лукапы через АОТ формы) | 0 | 0% | |
Голосовавшие: 13. Вы ещё не голосовали в этом опросе |
|
Опции темы |
30.01.2009, 23:28 | #1 |
Участник
|
SysTableLookup - вопрос к пользователям этого класса
Создам опрос, чтобы собрать данные по ходу.
Но проблему опишу здесь: Вступление: Класс SysTableLookup умеет работать с дисплей методами. При добавлении в лукап хотя бы одного дисплей метода, для query, формируемой внутри, не формируется fieldList. Это значит, что запрос выбирает из базы данных все поля, даже те, которые не отображаются в лукапе. Сделано это с тем, чтобы обеспечить правильную работу лукапа в этом случае. Если бы QueryBuildFieldList был сформирован только по, собственно, полям лукапа, то поля, используемые дисплей методом, не выбрались бы, и он отображал бы не то, что должен. Приемущество: простота использования разработчиками. Недостаток: Выбирает все поля в случае использования дисплей методов. Альтернативно, можно формировать queryBuildFieldList только по тем полям, которые мы сами добавили в Query в перекрытом методе lookup. При этом, если хочется использовать дисплей метод, нужно добавить в query все поля, которые используются дисплей методом. Приемущество:Выбираются только те поля, которые нужно для работы, то есть для таблиц с большим кол-вом полей получим экономию. Недостаток:Немного усложняет процесс разработки, потому что разработчики должны проследить и добавить все необходимые поля. Также, если в дальнейшем кто-то изменит дисплей метод, нет гарантии, что лукап будет работать правильно. Хотелось бы послушать, кто какой вариант предпочитает/использует, как пишут собственнов коде, т.д. Спасибо |
|
31.01.2009, 00:43 | #2 |
Administrator
|
Использую 2-й вариант. Причем с доработкой с указанием группы полей на таблице (метод, которому скармливается название группы полей). Т.е. разработчик при построении лукапа задает группу полей (аналог группы полей AutoLookup), а код ориентируется на эту группу полей. Произошли изменения? Добавь новое поле в группу. А переименования полей код вообще не трогают.
Система все-таки в первую очередь делается для пользователей, а не как среда разработки - поэтому ответил, что использую дисплей-методы. Форму предпочитаю не делать, если можно обойтись SysTableLookup. Это лишний объект в АОТ, "за ним надо отдельно ухаживать" (с) VALU. PS. Очень не хватает в этом смысле метода на Global, который бы вернул истину, если поле входит в группу. Конструкции с DictTable больно громоздкие. А еще лучше иметь метод, который просто вернет контейнер id полей, входящих в группу.
__________________
Возможно сделать все. Вопрос времени Последний раз редактировалось sukhanchik; 31.01.2009 в 00:50. |
|
|
За это сообщение автора поблагодарили: kashperuk (3). |
01.02.2009, 18:22 | #3 |
Banned
|
Для обратной совместимости оставьте все как было, добавьте параметр: sysTableLookup.parmDontSelectAllFieldsOnDisplayMethods(). Все довольны.
|
|
|
За это сообщение автора поблагодарили: kashperuk (5). |
|
Похожие темы | ||||
Тема | Ответов | |||
gatesasbait: Custom label on SysTableLookup column | 0 | |||
Вопрос по sysContextMenu | 24 | |||
Вопрос по Проектам | 35 | |||
передача курсора в два класса | 3 | |||
Запустить метод класса | 2 |
|