![]() |
#101 |
Модератор
|
Быстрый (и простой) способ получить суммы и количества по InventTrans на дату - индексированный (или материализованный, в зависимости от СУБД) view. Из аксапты подхватывается
![]() Единственный косяк - возможные проблемы с блокировками и более тяжелая операция обновления таблицы
__________________
-ТСЯ или -ТЬСЯ ? |
|
![]() |
#102 |
Участник
|
В общем господа я перед Вами каюсь, мой запрос неправильный
![]() |
|
![]() |
#103 |
злыдень
|
Цитата:
Сообщение от Wamr
пора перемещаться на SQL.RU
Alexius дело говорит, слушайте его ![]() ![]()
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
![]() |
#104 |
Участник
|
Поскольку это все-таки форму по AXAPTA, а не филиал sql.ru, то я перевел это добро в синтаксис AXAPTA
PHP код:
Так вот, большая и жирная ложка дегдя в этой бочке меда заключается в том, что такой запрос выполняется МЕДЛЕННЕЕ, чем цикл по InventSumDatePhysicalDim:: onHandQty() На том же тестовом примере ЭТОТ запрос выполнялся примерно 1 час 20 минут. Через класс - около 50 минут. Результат одинаковый Хотя, справедливости ради, следует отметить, что этот же самый запрос написанный напрямую в Query Analyzer выполнился примерно за минуту. |
|
![]() |
#105 |
aka awas
|
Владимиру:
Вы удивитесь, посмотрев в профайлере как Аксапта выполняет этот запрос :-) |
|
![]() |
#106 |
злыдень
|
Вот...
В результате всех этих жутких обсуждений - написал крутую хрень из серии уголок проктолога ![]() Оборотная ведомость по товарам. Работает быстро. Только для MS SQL. выложил тут
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
![]() |
#107 |
Участник
|
Recoilme
1. Error Сообщение (15:57:10) Невозможно выбрать запись в '' ('') База данных SQL обнаружила ошибку. Info Сообщение (15:57:10) Описание ошибки SQL: [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid object name 'dbo.INVENTTRANS'. Info Сообщение (15:57:10) Оператор SQL: BEGIN TRANSACTION SELECT ITEMID, SUM(QTY) AS QTY, SUM(COSTAMOUNTPOSTED + COSTAMOUNTADJUSTMENT) AS COST FROM dbo.INVENTTRANS WHERE ( (CASE WHEN DateInvent='19000101' THEN DatePhysical ELSE DateInvent END) < '20060103') AND ( (CASE WHEN DateInvent='19000101' THEN DatePhysical ELSE DateInvent END) > '19000101') AND (dbo.INVENTTRANS.DATAAREAID = 'wrk') AND ( STATUSRECEIPT = 1 OR STATUSRECEIPT = 2 OR STATUSRECEIPT = 3 OR STATUSISSUE = 1 OR STATUSISSUE = 2 OR STATUSISSUE = 3 ) GROUP BY ITEMID COMMIT TRANSACTION У меня bmssa.InventTrans =) 2. Обязательно хочет excel файл, иначе выдает ошибку. Новый само не делает. |
|
![]() |
#108 |
злыдень
|
Цитата:
Сообщение от _AnK_
Recoilme
1. Error Сообщение (15:57:10) Невозможно выбрать запись в '' ('') База данных SQL обнаружила ошибку.
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
![]() |
#109 |
NavAx
|
2Recoilme на рабочей базе пробовал? Дело в том, что таблица очень горячая, и могут возникнуть блокировки. Причем происходят случайным образом, может 1-2 месяца проработать, а потом вдруг все зависнет. Намеренно воспроизвести практически невозможно, а при возникновении, приводит к неприятным последствиям
P.S. такие эффекты возникают при обращении к базе прямыми sql- запросами
__________________
Isn't it nice when things just work? Последний раз редактировалось macklakov; 09.02.2006 в 16:52. |
|
![]() |
#110 |
злыдень
|
Цитата:
Сообщение от macklakov
2Recoilme на рабочей базе пробовал? Дело в том, что таблица очень горячая, и могут возникнуть блокировки. Причем происходят случайным образом, может 1-2 месяца проработать, а потом вдруг все зависнет. Намеренно воспроизвести практически невозможно, а при возникновении, приводит к неприятным последствиям
![]() С другой стороны, имхо, насчет блокировок - инвентсам "горячей" на порядок, однако аксапта совсем не стесняется его "пользовать во всех позах"
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
![]() |
#111 |
NavAx
|
Цитата:
Сообщение от Recoilme
На боевой прогонял раз 10 пока отлаживал... Правда сами пользуемся отчетами на хранилище, чего и другим желаю
![]() С другой стороны, имхо, насчет блокировок - инвентсам "горячей" на порядок, однако аксапта совсем не стесняется его "пользовать во всех позах"
__________________
Isn't it nice when things just work? |
|
![]() |
#112 |
злыдень
|
Цитата:
Сообщение от macklakov
Да, но она это делает через свои интерфейсы, а не через прямой запрос
ЗЫ: через её интерфейсы у меня ни фига не получилось, потому что: PHP код:
http://axforum.info/forums/showthrea...ghlight=OPTION
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ Последний раз редактировалось Recoilme; 09.02.2006 в 17:20. |
|
![]() |
#113 |
Участник
|
Цитата:
Сообщение от Recoilme
//а как заставить аксапту не умничать в рамках отдельного запроса - мне неизвестно :
Управление опциями SQL запроса
__________________
Axapta v.3.0 sp5 kr2 |
|
![]() |
#114 |
злыдень
|
Цитата:
Сообщение от AndyD
А чем это не устраивает?
Управление опциями SQL запроса Цитата:
можно выключить и включить для всего соединения
__________________
Ибо зло есть лучшая сила человека. "Человек должен становиться все лучше и злее" -- так учу я. /Ф. Ницше/ |
|
![]() |
#115 |
Участник
|
Вот вы странный такой (я к создателю темы обращаюсь). У вас когда двести карандашей, вам обязательно их все из коробки доставать и держать в руках, чтобы в любой момент нужным чертить? Или всё-таки достаёте по мере надобности?
Как с формой в наличии. Любят некоторые. Вставлять её куда попало. Да ещё в разрезе партий смотреть на 40 тысяч номенклатур. Прокрутив десяток "окон" - "М-м-м-м. Надо же, на складе Х у меня партия 23423 номенклатуры 40393". Очень интересно. Не более. Никогда пользователь не сможет работать с количеством данных больше строк 5-10ти. Это простой закон it-эргономики. Вы это можете понять, я надеюсь. А пользователь - вряд ли, он не айтишник. Если он говорит что ему требуется смотреть на "вчера" и "сегодня" и "неделю назад" это значит что просто несвоевременно идут складские операции и\или в биз.-процессах бардак. Или у него в голове бардак. Но кому приятно такое автоматизировать? Ахапка - система онлайн. Остатки сейчас. Движения сейчас. Данные - сейчас. Для статистического анализа используются кубики. Для них - запросов писать не переписать. С какими угодно условиями. Легко и быстро. Не занимайтесь фигнёй. Или отучите от этого ваших постановщиков. |
|
![]() |
#116 |
Участник
|
Цитата:
Сообщение от LCh
Вот вы странный такой (я к создателю темы обращаюсь).
Ахапка - система онлайн. Остатки сейчас. Движения сейчас. Данные - сейчас. .... Для статистического анализа используются кубики. Для них - запросов писать не переписать. С какими угодно условиями. Легко и быстро. Не занимайтесь фигнёй. Или отучите от этого ваших постановщиков. Странный, ну наверно). Когда стану постановщиком задач неприменно воспользуюсь вашими советами по поводу идеологии работы в Аксапте, с коей я впрочем полностью согласен. Но: 1. Задача поставлена и решать ее надо. 2. Оборотка нужна была только в разрезе склада и только по одному выбранному товару. 3. Задача мною решена, причем оказалось что с использованием стандартных классов работает быстрее, чем с использованием запросов. Спасибо mazzy с классами разобрался подробнее. ![]() и наконец, я бы рад перестроить бизнес процессы некоторые и объяснить что у Аксапты своя идеология, но реалии таковы, что на данном этапе своего развития я разработчик, а не консалтер или аналитик, и не постановщик задач. ![]() |
|
![]() |
#117 |
Участник
|
Цитата:
Сообщение от Bars
Спасибо mazzy с классами разобрался подробнее.
![]() |
|
![]() |
#118 |
Участник
|
Цитата:
Сообщение от mazzy
На самом деле, спасибо стоит адресовать kvan'у и slava09.
![]() |
|
![]() |
#119 |
Участник
|
Цитата:
Сообщение от Recoilme
Вот...
В результате всех этих жутких обсуждений - написал крутую хрень из серии уголок проктолога ![]() Оборотная ведомость по товарам. Работает быстро. Только для MS SQL. |
|
![]() |
#120 |
Участник
|
Вкрался баг подмеченный Recoilme, некорректно работало определение наличия поля DataAreaId (компания) в таблицах, исправленный проектик прилагается.
|
|
|
За это сообщение автора поблагодарили: Recoilme (3). |
Теги |
остатки, ax3.0 |
|
![]() |
||||
Тема | Ответов | |||
Остатки на дату InventSumDatePhysical | 6 | |||
Остатки товара на определенную дату | 7 | |||
Скачут остатки | 3 | |||
Цена на дату создания заказа/закупки | 2 | |||
Остатки | 6 |
Опции темы | Поиск в этой теме |
Опции просмотра | |
|