|
13.10.2016, 17:15 | #1 |
Участник
|
Цитата:
вопрос опять о "произвольных запросах" и о сферических конях в вакууме типа "выбрать из таблицы". (из одной, карл!) для Аксапты, для прикладной программы уровня предприятия "произвольные запросы" - предельно редкое явление. встречающееся на уровне программирования ядра и функционала администрирования. запрос к ОДНОЙ таблице - встречается как правило только на этапе отладки или как запрос параметров (но для параметров точно нужно использовать find()). запрос к одной таблице, которая не является параметрами - редкое явление. а в версии 2012 и выше с искусственными ключами - исключительное явление. для Аксапты характерно очень прикладное программирование. для прикладного программирования "работать напрямую с таблицей" - антипаттерн. в прикладной программе типа аксапты обычно работают с набором взаимосвязанных таблиц!!!! работать с набором взаимосвязанных таблиц напрямую? нонсенс! Последний раз редактировалось mazzy; 13.10.2016 в 17:30. |
|
13.10.2016, 17:34 | #2 |
Участник
|
особенно, если в наборе есть таблицы, для которых включен Valid Time State
https://msdn.microsoft.com/en-us/library/gg861781.aspx |
|
13.10.2016, 20:25 | #3 |
Administrator
|
Цитата:
Цитата:
Сообщение от mazzy
Оп! Категорически не согласен!
вопрос опять о "произвольных запросах" и о сферических конях в вакууме типа "выбрать из таблицы". (из одной, карл!) для Аксапты, для прикладной программы уровня предприятия "произвольные запросы" - предельно редкое явление. встречающееся на уровне программирования ядра и функционала администрирования. для Аксапты характерно очень прикладное программирование. для прикладного программирования "работать напрямую с таблицей" - антипаттерн. в прикладной программе типа аксапты обычно работают с набором взаимосвязанных таблиц!!!! работать с набором взаимосвязанных таблиц напрямую? нонсенс! Цитата:
Сообщение от mazzy
особенно, если в наборе есть таблицы, для которых включен Valid Time State
https://msdn.microsoft.com/en-us/library/gg861781.aspx Итак, задача 1 Из этой задачи следует, что нужно выбрать из одной (да-да, из одной!) таблицы. В этом случае класс RecordReferenceList_RU очень хорошо помогает. Про прикладное программирование - хорошее замечание. Но... вопрос не ставился как "работать ли напрямую с таблицей или использовать промежуточный класс?". Автор как раз хотел использовать класс, а я ему советовал так не делать. Тут я был неправ, но хочу сказать, что без модификаций класса RecordReferenceList_RU его использовать будет не очень удобно - тогда действительно придется связываться с номерными сериями. Резюме: класс нужен, но не совсем такой, какой есть в штатной поставке. По поводу набора таблиц. Начиная с АХ 2012 и выше - надо будет помнить, что "простейший" справочник типа клиентов / номенклатуры и т.д. состоит не из одной таблицы, а из набора таблиц, связанных друг с другом и в данном случае ссылкой на одну запись в одной таблице можно не обойтись. Однако, автор указывает, что версия как раз АХ 2009, в которой еще многие справочники состоят из одной таблицы и поэтому решение предлагается именно для этой версии. Для версии АХ 2012 оно (решение) было бы другим. Соответственно таблиц, для которых включен Valid Time State в АХ 2009 нет и об этом в АХ 2009 не надо заморачиваться. Теперь задача 2 Цитата:
Т.о. если Вам надо: - выбрать произвольным образом записи из ОДНОЙ таблицы для ИСКЛЮЧИТЕЛЬНО целей дальнейшей фильтрации и / или отображения по ним - то можно использовать RecordReferenceList_RU - выбрать произвольным образом записи из одной или нескольких таблиц и в последующем их как-то обрабатывать "всевозможными преобразованиями", то нужно писать find-ы и делать логику в семействе классов (т.е. создавать ряд классов, занимающихся обработкой и поиском; выносить общий код в классы-родители и т.д.)
__________________
Возможно сделать все. Вопрос времени |
|
13.10.2016, 20:56 | #4 |
Участник
|
Цитата:
Сообщение от sukhanchik
Т.о. если Вам надо:
- выбрать произвольным образом записи из ОДНОЙ таблицы для ИСКЛЮЧИТЕЛЬНО целей дальнейшей фильтрации и / или отображения по ним - то можно использовать RecordReferenceList_RU - выбрать произвольным образом записи из одной или нескольких таблиц и в последующем их как-то обрабатывать "всевозможными преобразованиями", то нужно писать find-ы и делать логику в семействе классов (т.е. создавать ряд классов, занимающихся обработкой и поиском; выносить общий код в классы-родители и т.д.) ===================== Давай ))) тема: Выбор записей из таблицы произвольным запросом Цитата:
Цитата:
да, я тоже обратил внимание на единственное число. но подумал, что люди хотят не то, что спрашивают, и срашивают не то, что хотят. как обычно. ) но если предположить твою трактовку: а какой запрос по какой таблице аксапты ты бы назвал подходящим под определение "сложная и ветвистая логика запроса по одной таблице"? просто интересно. Цитата:
Сообщение от sukhanchik
В этом случае класс RecordReferenceList_RU очень хорошо помогает. Про прикладное программирование - хорошее замечание. Но... вопрос не ставился как "работать ли напрямую с таблицей или использовать промежуточный класс?". Автор как раз хотел использовать класс, а я ему советовал так не делать. Тут я был неправ, но хочу сказать, что без модификаций класса RecordReferenceList_RU его использовать будет не очень удобно - тогда действительно придется связываться с номерными сериями. Резюме: класс нужен, но не совсем такой, какой есть в штатной поставке.
а что ты имеешь в виду? что должно быть в таком классе? и чем это будет лучше чем набор отдельных запросов в сложной и ветвистой логике? Цитата:
да, ну, брось... я понимаю еще таблицу с проводками. в результате надо получить дебет-кредит с учетом сторно и какие-нибудь хитрые группировки. но группировки по одной таблице проводок, не заглядывая в справочники? а сложную и ветвистую логику для справочника из одной таблицы? дерево что ли? и что там сложного? в общем, не понимаю. Цитата:
читают то многие. а вопрос неплохой вроде. Цитата:
то может и не заморачиваться с "произвольным запросом" а сразу сделать нормальные классы? )))) |
|
13.10.2016, 21:15 | #5 |
Administrator
|
Цитата:
Цитата:
В свое время (АХ 4.0) у меня была задача поиска "закольцованных" движений. Соответственно, чтобы понять "кольцо" - нужно для каждой записи (каждого типа движения) применить свой алгоритм обработки. На выходе может получиться неопределенно много записей и тривиальный фильтр не подходит, соответственно ссылку на RecId найденных записей было удобно записывать в RecordReference_RU, а затем открывать стандартную форму InventTrans, отфильтрованную по отобранным движениям. Цитата:
да, я как-то незаметно стал ассоциировать "одну таблицу" со справочником. Каюсь. Цитата:
а) использовать что-то типа InventTrans, из которого еще не выкосили "лишние" поля б) сознательно денормализовать нормализованные Микрософтом таблицы для ускорения выборок. Цитата:
Цитата:
ну тут не поспоришь - конечно надо делать нормальные классы.
__________________
Возможно сделать все. Вопрос времени |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
13.10.2016, 21:35 | #6 |
Участник
|
Цитата:
Сообщение от sukhanchik
InventTrans В свое время (АХ 4.0) у меня была задача поиска "закольцованных" движений. Соответственно, чтобы понять "кольцо" - нужно для каждой записи (каждого типа движения) применить свой алгоритм обработки. На выходе может получиться неопределенно много записей и тривиальный фильтр не подходит, соответственно ссылку на RecId найденных записей было удобно записывать в RecordReference_RU, а затем открывать стандартную форму InventTrans, отфильтрованную по отобранным движениям. . |
|
Теги |
distinct, recordrefrencelist_ru, recordsortedlist, view |
|
|