12.07.2006, 13:57 | #1 |
Участник
|
Grid и table - как это все работает?
Здравствуйте, всем доброго дня или ночи! Я начинающий, поэтому вопросы задаю дурацкие и нудные ногами не бить, череп не ломать
Мне дали мааленькое но приятное задание, в процессе выполнения которого у меня появилось много больших и неприятных вопросов Прошу ответить на вопросы кто как умеет, а также сделать за меня мое задание Суть задания: Есть некая форма Form, в ней есть некий Grid, который ссылается на некую таблицу Table. Перед показыванием Table данные неким образом фильтруются. У внутренних заказчиков есть неодолимое желание иметь виртуальное поле для маркирования записей, их сортировки и фильтрации. Т.е. только наличие возможности выставить галки - этого маловасто. 1-е решение я стибрил у основных разработчиков системы - в некоей форме есть такие же виртуальные галки на основе вычисляемого поля. Есть дополнительная табличка Table1, в которую добавляются идентификаторы записей, и значение поля вычисляется по налличию идентификатора в табличке. НО! галки в этом решении не фильтруются и не сортируются. 2-е решение заключается в том, чобы галки хранились в табличке Table1. В этом случае галки должны и фильтроваться, и сортироваться. Записи в табличку попадают при нажатии на галку, при этом Grid как бы пользуется результатом сложного запроса и получает записи с галками и без. Вот при этом втором решениии и возникли проблемы. Теперь вопросы и проблемы: 1) Возможно ли сделать так, чтобы табличка Table1 была ВРЕМЕННОЙ? Спрашиваю потому, что мне кажется, что собрать результат запроса частично с сервера и частично с локального ящика будет сложновато. Тем более - решить вопрос о том, куда какие данные перенаправить после задания значений в полях. 2) Каким образом возможно обеспечить связывание табличек Table и Table1? Relation в Table1? Или только Table? Или JoinSource в ссылках на таблички в форме (кстати, JoinSource для Table уже занят) ? Да, если она временная, то тут поле "UserId" не нужно, но вот если она НЕ временная - тут уже простой связкой не отделаться, мне кажется... 3) Какие события на каком из объектов формы следует переопределить для того, чтобы обеспечить попадание новых записей в Table1? Спрашиваю потому, что modified или clicked для эл.уп. "checkbox" срабатывает через раз... И вообще галка ставится только одна и непойми как... В общем, вот такие вопросы, господа программисты. Надеюсь на помощь консультативного характера . Последний раз редактировалось Ихъ бин программикеер; 12.07.2006 в 14:21. |
|
12.07.2006, 14:33 | #2 |
Moderator
|
По-моему, самое оптимальное решение - добавить поле с этими самыми галками в Table, а не Table1. И ничего больше не надо программить.
__________________
Андрей. |
|
12.07.2006, 14:36 | #3 |
Administrator
|
Часто в аналогичных ситуациях когда хотят некую фитюльку, а Аксапта не разрешает ее сделать "в лоб" - решать приходиться комплексно - как корректируя изначальную постановку задачи, так и дорабатывая самостоятельно.
В Вашем случае возможно 3 варианта: 1-й и 2-й - это как Вы описали, причем в первом варианте не работает сортировка, а 2-й вариант - чреват сложностями. 3-й вариант - это добавление поля непосредственно в таблицу Table. С этими вариантами со словами: "Аксапта предлагает на выбор 3 варианта - без сортировки, с глюками и с дополнительным полем" имеет смысл обратиться к постановщику задачи - чтобы он выбрал (если для него это принципиально). "Скрещивание" плюсов одного варианта и другого - не допускается
__________________
Возможно сделать все. Вопрос времени |
|
12.07.2006, 14:39 | #4 |
NavAx
|
Цитата:
Сообщение от Ихъ бин программикеер
1) Возможно ли сделать так, чтобы табличка Table1 была ВРЕМЕННОЙ?
Цитата:
Сообщение от Ихъ бин программикеер
3) Какие события на каком из объектов формы следует переопределить для того, чтобы обеспечить попадание новых записей в Table1? Спрашиваю потому, что modified или clicked для эл.уп. "checkbox" срабатывает через раз... И вообще галка ставится только одна и непойми как...
__________________
Isn't it nice when things just work? |
|
12.07.2006, 14:41 | #5 |
NavAx
|
Цитата:
Сообщение от Dron AKA andy
По-моему, самое оптимальное решение - добавить поле с этими самыми галками в Table, а не Table1. И ничего больше не надо программить.
__________________
Isn't it nice when things just work? |
|
12.07.2006, 14:42 | #6 |
Участник
|
Если я решу проблему путем модификации Table, мои действия не одобрят . Я бы, вероятно, так и поступил, но, к сожалению или к счастью (в данном случае - скорее к сожалению), одно из условий внедрения доработок - минимальность изменений структуры данных. Т.е. добавлять свои таблицы допускается, модифицировать формы/отчеты в слое usp - тоже, а вот модификация структуры оригинальных таблиц - это дело весьма, так сказать, нежелательное вследствие потенциальных проблем при накатывании новой версии.
По поводу индивидуальности галок для сессии - конечно, есть такая необходимость, она решается путем добавления еще одного поля, "UserId". Последний раз редактировалось Ихъ бин программикеер; 12.07.2006 в 14:47. |
|
12.07.2006, 14:52 | #7 |
Участник
|
Цитата:
Сообщение от macklakov
можно сделать временный аналог Table, с добавочным полем
Цитата:
Сообщение от macklakov
Где-то ты напортачил, вслепую не скажешь. См. "Сопопставление открытых проводок"
|
|
12.07.2006, 14:52 | #8 |
NavAx
|
При таких ограничениях, вижу только 2 варианта:
1) Table1 на SQL сервере, на форме сложный запрос 2) Временная таблица, почти полностью аналогичная Table Цитата:
Сообщение от Ихъ бин программикеер
А вот теперь глупый вопрос - "что это такое? и при чем тут оно?"
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 12.07.2006 в 14:55. |
|
12.07.2006, 14:55 | #9 |
Moderator
|
Цитата:
Сообщение от macklakov
А если набор галочек должен быть индивидуальным для сессии?
__________________
Андрей. |
|
12.07.2006, 15:06 | #10 |
Роман Долгополов (RDOL)
|
Технически аксапта позволяет сделать соединение постоянной и временной таблицы, но это чревато проблемами производительности такого решения, ибо содениение будет делать не сервер бд, а сама аксапта и для его выполенения содержимое Table будет сначала считано полностью. Если у вас в Table записей немного, то не все так страшно, если же это, например, таблица проводок, то форма может открываться часами
Посмотрите вот эти темы Про вывод данных нескольких датасорсов в один грид Не корректно отображаюстя данные Про всякие хитрые условия фильтрации Оптимизация запроса - ranges Про сортировку джойненых датасорсов Сортировка в гриде |
|
12.07.2006, 16:01 | #11 |
Участник
|
В результате, я все-таки решил пересмотреть первоначальную постановку задачи и сделать не так, как предлагают, а так, как это наименее заморочно .
Теперь постановка выглядит примерно как "Ввести на основе платежного поручения", вкладка "Выбранные заявки" (это "Журнал банковских выписок/Строки") с точностью до наоборот - надо вывести на вкладке не те, которые отмечены, а те, которые не отмечены . В связи с этим, думаю, тему стоит закрыть. Всем большое спасибо за участие в обсуждении! |
|