26.02.2003, 12:07 | #1 |
Участник
|
Сохранение запроса
Кто-нибудь пробовал сохранять Query в поле таблицы? Использование методов query.pack() и query.unpack() не устраивает, т.к. они сохраняют только один датасорс (то есть если мы при интерактивном редактировании запроса добавим дочерний источник данных, он сохранен не будет). Ппоробовал воспользоваться классом SysQueryEdit, но он тоже не очень правильно работает с дочерними датасорсами...
|
|
26.02.2003, 12:30 | #2 |
----------------
|
Цитата:
Использование методов query.pack() и query.unpack() не устраивает, т.к. они сохраняют только один датасорс (то есть если мы при интерактивном редактировании запроса добавим дочерний источник данных, он сохранен не будет)
|
|
26.02.2003, 12:33 | #3 |
сибиряк
|
может я не того dataSource принимаю за дочернего, но у меня они сохраняются. Другая проблемма, что я не знаю способа удалить их оттуда
__________________
С уважением, Вячеслав. |
|
26.02.2003, 12:36 | #4 |
----------------
|
Простых способов удаления нет. Где-то на форуме был самописный классик выполняющий данную операцию.
|
|
26.02.2003, 12:44 | #5 |
Участник
|
1. Зачем?
2. Чем не устраивают статические query, а в таблице хранить имена этих статических query? 3. Чем не устраивает динамическое создание Query на лету? 4. Думал о том, что сохраненный в таблице Query может быть восстановлен на другой конфигурации, где таких таблиц и полей нет? Будешь делать обработчик ошибок? В какой момент после чтения из таблицы ты собираешься включать обработчик ошибок? Что он будет делать? Опиши хотя бы на верхнем уровне? Он будет проверять идентификаторы таблиц и полей? 5. Повторю вопрос: чем не устраивает динамическое создание Query на лету? 6. И снова повторю вопрос: Ты все еще уверен, что не хочешь использовать статические Query? |
|
26.02.2003, 12:53 | #6 |
сибиряк
|
Цитата:
Изначально опубликовано Wamr
Простых способов удаления нет. Где-то на форуме был самописный классик выполняющий данную операцию. А вот простых (несамописных) способов действительно кажется нет
__________________
С уважением, Вячеслав. |
|
26.02.2003, 12:54 | #7 |
Moderator
|
Я вот так сохранял. Работает.
PHP код:
|
|
26.02.2003, 12:55 | #8 |
Moderator
|
Цитата:
Использование методов query.pack() и query.unpack() не устраивает
|
|
26.02.2003, 13:01 | #9 |
Участник
|
Цитата:
А можно полюбопытствовать как изменял, сохранял, проверял?
PHP код:
Честно говоря, не понимаю, как получилось сохранить дочерний датасорс, который был добавлен интерактивно. В хелпе к методу Query.pack() так и сказано, что динамические ссылки не сохраняются... 2 mazzy. Нужно это для того, чтобы генерить настраиваемые отчеты (не стандартные репорты, а, скажем, web-отчеты). Сначала настраивается таблица, откуда должны браться данные, потом для этой таблицы настраиваются фильтры, то есть Query. Причем часто кроме фильтров на поля собственно таблицы необходимо наложить ограничения на связанные тыблицы (элементарный пример - получение суммарной стоимости запасов на каком-либо складе, как известно, для этого приходится связывать InventSum и InventDim и делать фильтр по InventDim.InventLocation). Статические запросы не устраивают тем, что их сначала надо делать в AOD, а хотелось бы, чтобы настройка осуществлялась без этого. |
|
26.02.2003, 13:03 | #10 |
----------------
|
Цитата:
SavedQuery.Query = q.pack(); //как вариант qr.pack(), тоже не работает
SavedQuery.Query = qr.query().pack(); "динамические ссылки" - это dynalink... точно не сохраняются |
|
26.02.2003, 13:13 | #11 |
Участник
|
Цитата:
Остался 3ий вариант:
SavedQuery.Query = qr.query().pack(); |
|
26.02.2003, 13:24 | #12 |
Участник
|
тогда я не понял.
о чем вопрос то? 1. о сохранени параметров запроса (LastValue) 2. о том, чтобы сохранить где-нибудь сам запрос, его структуру? если 2 вариант, то думаю стоит посмотреть на мастер отчетов. он и генерит динамически и сохраняет. Причем сохраняет даже в АОТе. Нужно выкинуть из него интерфейс и оставить ядро. ИХМО, неправильный это подход. ИХМО, от незнания. Количество вариантов запросов конечно и не так уж и велико. Измеряется десятками. ИХМО, проще предварительно подумать что нужно и сделать запросы статическими. ИХМО, это на порядок уменьшит ваши общие трудозатраты на эту задачу. Т.е. ИХМО не стоит делать универсальную хренотень, которая будет работать с всего лишь с десятками объектов. Она не окупится на таком небольшом количестве. Стоит просто перечислить эти несколько десятков запросов. Сильно сэкономите на разработке хренотени С другой стороны разработка подобной хренотени сильно поднимет квалификацию ваших программистов. Но это уже сами выбирайте что вам больше нужно. |
|
26.02.2003, 13:34 | #13 |
----------------
|
Пришлось писать пример... вроде работает
или я не уловил идею? dynalinks в данном контексте вообще не существует PHP код:
|
|
26.02.2003, 13:42 | #14 |
Участник
|
Цитата:
Т.е. ИХМО не стоит делать универсальную хренотень, которая будет работать с всего лишь с десятками объектов. Она не окупится на таком небольшом количестве. Стоит просто перечислить эти несколько десятков запросов. Сильно сэкономите на разработке хренотени
Цитата:
о чем вопрос то?
1. о сохранени параметров запроса (LastValue) 2. о том, чтобы сохранить где-нибудь сам запрос, его структуру? 2 Wamr. Dynalinks добавляются не в коде, а интерактивно в форме редактирования запроса. Они-то и не сохраняются. |
|
26.02.2003, 13:55 | #15 |
Участник
|
Цитата:
Изначально опубликовано Peter Savintsev
В том-то и дело, что совсем не факт, что объектов будет десяток. даже с точностью +-10? тогда почти уверен, что вы получите больший эффект если потратите усилия на то чтобы определится что вам нужно и узнать в каких рамках вы будете работать. Скорее всего ваша проблема в том, что разные менеджеры не договорились о результате, который хотят получить. И ставят задачу вам в надежде, что вы предоставите им волшебную кнопку. Серебрянной пули нет. Как и волшебной кнопки, впрочем Цитата:
Изначально опубликовано Peter Savintsev
Или ты предлагаешь для каждого фильтра создавать свой Query? ИМХО очень нерационально. НО в Аксапте есть стандартные средства как задать в статический Query диапазон. Может стоит разобраться со статическими Query? И почему нерационально, если Query в АОТе для этого и предназначены - хранить запросы. Почему выбран именно путь программирования и вы решили тратить свои ресурсы на замену стандартного механизма вашим? Может дело в том, что вы просто сами не знаете что будет нужно? Цитата:
Изначально опубликовано Peter Savintsev
Да, в сохранении именно параметров запроса. Но не просто всех ренджей и сортировки. А еще и всех присодиненных источниках данных, которые, как известно в форме редактирования добавляются через контекстное меню (сначала выбирается тип связи 1:n или n:1, поотм присоединяемая таблица). в форме редактирования диапазонов (Ctrl+F3, форма SysQuery) можно сохранить запрос с диапазонами. Насколько я помню там сохраняется все в том числе добавленные таблицы. Чем не устраивает? |
|
26.02.2003, 14:02 | #16 |
Участник
|
Цитата:
в форме редактирования диапазонов (Ctrl+F3, форма SysQuery) можно сохранить запрос с диапазонами. Насколько я помню там сохраняется все в том числе добавленные таблицы. Чем не устраивает?
|
|
26.02.2003, 15:02 | #17 |
Участник
|
Хм... сохранять можно под разными именами.
и не только последнее значение. |
|
26.02.2003, 17:58 | #18 |
----------------
|
Dynalinks
Цитата:
... всех присодиненных источниках данных, которые, как известно в форме редактирования добавляются через контекстное меню (сначала выбирается тип связи 1:n или n:1, поотм присоединяемая таблица).
НЕ существует визуального средства добавления dynalink-ов. Dynalink - это связь некоторого DS в Query с внешним курсором, а не с другим DS в том же Query |
|
27.02.2003, 04:30 | #19 |
Участник
|
Цитата:
Так вот, это НЕ Dynalinks, а добавление новых dataSource в Query.
НЕ существует визуального средства добавления dynalink-ов. PHP код:
Использование SysLastValue не подходит еще и потому, что там сохраняются объекты индивидуально для каждого пользователя, что не удовлетворяет постановке задачи. |
|