AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 12.07.2006, 13:57   #1  
Ихъ бин программикеер is offline
Ихъ бин программикеер
Участник
 
23 / 10 (1) +
Регистрация: 12.07.2006
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  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
По-моему, самое оптимальное решение - добавить поле с этими самыми галками в Table, а не Table1. И ничего больше не надо программить.
__________________
Андрей.
Старый 12.07.2006, 14:36   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,311 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Часто в аналогичных ситуациях когда хотят некую фитюльку, а Аксапта не разрешает ее сделать "в лоб" - решать приходиться комплексно - как корректируя изначальную постановку задачи, так и дорабатывая самостоятельно.
В Вашем случае возможно 3 варианта: 1-й и 2-й - это как Вы описали, причем в первом варианте не работает сортировка, а 2-й вариант - чреват сложностями.
3-й вариант - это добавление поля непосредственно в таблицу Table. С этими вариантами со словами: "Аксапта предлагает на выбор 3 варианта - без сортировки, с глюками и с дополнительным полем" имеет смысл обратиться к постановщику задачи - чтобы он выбрал (если для него это принципиально). "Скрещивание" плюсов одного варианта и другого - не допускается
__________________
Возможно сделать все. Вопрос времени
Старый 12.07.2006, 14:39   #4  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Ихъ бин программикеер
1) Возможно ли сделать так, чтобы табличка Table1 была ВРЕМЕННОЙ?
Нет, т.к. при сортировке/фильтрации, выполняется запрос на SQL- сервер. Но можно сделать временный аналог Table, с добавочным полем
Цитата:
Сообщение от Ихъ бин программикеер
3) Какие события на каком из объектов формы следует переопределить для того, чтобы обеспечить попадание новых записей в Table1? Спрашиваю потому, что modified или clicked для эл.уп. "checkbox" срабатывает через раз... И вообще галка ставится только одна и непойми как...
Где-то ты напортачил, вслепую не скажешь. См. "Сопопставление открытых проводок"
__________________
Isn't it nice when things just work?
Старый 12.07.2006, 14:41   #5  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от Dron AKA andy
По-моему, самое оптимальное решение - добавить поле с этими самыми галками в Table, а не Table1. И ничего больше не надо программить.
А если набор галочек должен быть индивидуальным для сессии?
__________________
Isn't it nice when things just work?
Старый 12.07.2006, 14:42   #6  
Ихъ бин программикеер is offline
Ихъ бин программикеер
Участник
 
23 / 10 (1) +
Регистрация: 12.07.2006
Если я решу проблему путем модификации Table, мои действия не одобрят . Я бы, вероятно, так и поступил, но, к сожалению или к счастью (в данном случае - скорее к сожалению), одно из условий внедрения доработок - минимальность изменений структуры данных. Т.е. добавлять свои таблицы допускается, модифицировать формы/отчеты в слое usp - тоже, а вот модификация структуры оригинальных таблиц - это дело весьма, так сказать, нежелательное вследствие потенциальных проблем при накатывании новой версии.

По поводу индивидуальности галок для сессии - конечно, есть такая необходимость, она решается путем добавления еще одного поля, "UserId".

Последний раз редактировалось Ихъ бин программикеер; 12.07.2006 в 14:47.
Старый 12.07.2006, 14:52   #7  
Ихъ бин программикеер is offline
Ихъ бин программикеер
Участник
 
23 / 10 (1) +
Регистрация: 12.07.2006
Цитата:
Сообщение от macklakov
можно сделать временный аналог Table, с добавочным полем
нереально в силу того, что в таблице несколько десятков, если не сотен, тысяч записей.
Цитата:
Сообщение от macklakov
Где-то ты напортачил, вслепую не скажешь. См. "Сопопставление открытых проводок"
А вот теперь глупый вопрос - "что это такое? и при чем тут оно?"
Старый 12.07.2006, 14:52   #8  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,233 / 974 (37) +++++++
Регистрация: 03.04.2002
При таких ограничениях, вижу только 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  
Dron AKA andy is offline
Dron AKA andy
Moderator
 
944 / 253 (10) ++++++
Регистрация: 27.03.2002
Адрес: Москва
Цитата:
Сообщение от macklakov
А если набор галочек должен быть индивидуальным для сессии?
Вообще-то да, не подумал... Тогда только доп. таблица с полями Галка, id_сессии, Ссылка_на_Table1.
__________________
Андрей.
Старый 12.07.2006, 15:06   #10  
db is offline
db
Роман Долгополов (RDOL)
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
 
393 / 692 (24) +++++++
Регистрация: 01.04.2004
Адрес: Москва
Технически аксапта позволяет сделать соединение постоянной и временной таблицы, но это чревато проблемами производительности такого решения, ибо содениение будет делать не сервер бд, а сама аксапта и для его выполенения содержимое Table будет сначала считано полностью. Если у вас в Table записей немного, то не все так страшно, если же это, например, таблица проводок, то форма может открываться часами

Посмотрите вот эти темы

Про вывод данных нескольких датасорсов в один грид
Не корректно отображаюстя данные

Про всякие хитрые условия фильтрации
Оптимизация запроса - ranges

Про сортировку джойненых датасорсов
Сортировка в гриде
Старый 12.07.2006, 16:01   #11  
Ихъ бин программикеер is offline
Ихъ бин программикеер
Участник
 
23 / 10 (1) +
Регистрация: 12.07.2006
В результате, я все-таки решил пересмотреть первоначальную постановку задачи и сделать не так, как предлагают, а так, как это наименее заморочно .

Теперь постановка выглядит примерно как "Ввести на основе платежного поручения", вкладка "Выбранные заявки" (это "Журнал банковских выписок/Строки") с точностью до наоборот - надо вывести на вкладке не те, которые отмечены, а те, которые не отмечены .

В связи с этим, думаю, тему стоит закрыть. Всем большое спасибо за участие в обсуждении!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axaptapedia: Table Methods Generator Blog bot DAX Blogs 0 13.02.2009 02:05
referencing grid columns, finding selected records Sveta1978 DAX in English 4 15.12.2007 15:19
Table Scan через QueryRun maximka DAX: Программирование 8 05.10.2007 10:46
Данные в Grid из таблиц, связанных по Outer Join cherv DAX: Программирование 2 17.02.2007 01:36
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:04.