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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 31.01.2006, 13:26   #1  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов
Вообще-то, даже чисто логически, вывод будет прямо противополжным. Одна групповая команда по всякому быстрее работает чем куча одиночных команд в цикле.
1. Вы почему то обсуждаете конкретную реализацию, а не принцип. Принцип - считаем проводки от конца, а не от начала времен.
2. Вы забываете об аналитике. Аналитика у каждой номенклатуры - разная. Вообще говоря, мало кто хочет получить остатки на произвольную дату. Запрос UNRW является неправильным, поскольку не учитывает параметры в группе аналитики. Но я это дело пропустил, поскольку посчитал неважным.

ОДНАКО: если вы говорите о групповой обработке, то расскажите как вы обработаете аналитике корректно в групповой обработке?

Еще раз: уважаемые, подумайте.
__________________
полезное на axForum, github, vk, coub.
Старый 31.01.2006, 14:40   #2  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy
1. Вы почему то обсуждаете конкретную реализацию, а не принцип. Принцип - считаем проводки от конца, а не от начала времен.
Как минимум, спорный.

Если структура базы корректна, то, должно быть все-равно идем с начала в конец или с конца в начало. Результат должен быть одинаковый. По крайней мере в штуках.

Если же рассматривается вопрос, что "с начала времен" просто физически больше записей и, как следствие, уйдет больше времени на их обработку, то опять все зависит от конкретных условий.

В общем случае, от текущей даты будет быстрее. А в конкретном, надо смотреть на месте.

Цитата:
Сообщение от mazzy
2. Вы забываете об аналитике. Аналитика у каждой номенклатуры - разная. Вообще говоря, мало кто хочет получить остатки на произвольную дату.
...
ОДНАКО: если вы говорите о групповой обработке, то расскажите как вы обработаете аналитике корректно в групповой обработке?
Не знаю, у меня как раз пользователи хотят получить остатки не в разрезе складской аналитики, а по конкретному реквизиту аналитики. Т.е. "вообще все остатки вот по этому складу". Просто соответствующий фильтр на InventDim.

Или что Вы понимаете под термином "аналитика номенклатуры" применительно к расчету остатков?
Старый 31.01.2006, 14:46   #3  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Владимир Максимов
Т.е. "вообще все остатки вот по этому складу". Просто соответствующий фильтр на InventDim.

Или что Вы понимаете под термином "аналитика номенклатуры" применительно к расчету остатков?
Извините. Сейчас используется термин Складская аналитика.
Конурация, Цвет, Размер, Склад, Ячейка, Партия, ... ГТД(!)

Я не верю, что для всех аналитик пользователи будут хотеть "получить остатки не в разрезе складской аналитики, а по конкретному реквизиту аналитики"

Конечно, если у вас используется ТОЛЬКО склад...
Причем НЕ БЫВАЕТ аналитики с выключенным складом (обычно это услуги)...
Если ваши пользователи НЕ ХОТЯТ видеть отчет в разрезе всех (или нескольких выбранны) аналитик...
__________________
полезное на axForum, github, vk, coub.
Старый 31.01.2006, 15:16   #4  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от mazzy
Я не верю, что для всех аналитик пользователи будут хотеть "получить остатки не в разрезе складской аналитики, а по конкретному реквизиту аналитики"
...
Если ваши пользователи НЕ ХОТЯТ видеть отчет в разрезе всех (или нескольких выбранны) аналитик...
Видимо, мне пока везет (или не везет, это как посмотреть). Но именно это от меня и хотят (или пользователи не хотят)

Хорошо. Если говорить "в общем случае". Почему при расчете остатка на дату от текущей даты назад в разрезе складских аналитик недостаточно будет добавить группировку по соответствующим полям InventDim?

Т.е. логика та же, что и в классе: берем текущий остаток по InventSum, из него вычитаем сумму InventTrans до нужной даты. Это 2 последовательных запроса.

Каждый запрос имеет группировку по нужным полям InventDim.

Какие здесь проблемы? Чем это принципиально отличается от работы классов InventSumDate?
Старый 31.01.2006, 15:52   #5  
chel is offline
chel
Участник
 
153 / 10 (1) +
Регистрация: 02.09.2003
Цитата:
Сообщение от Владимир Максимов
Т.е. логика та же, что и в классе: берем текущий остаток по InventSum, из него вычитаем сумму InventTrans до нужной даты. Это 2 последовательных запроса.

Каждый запрос имеет группировку по нужным полям InventDim.

Какие здесь проблемы? Чем это принципиально отличается от работы классов InventSumDate?
При этом подходе основной проблемой будет то, что между запросом к InventSum и запросом к InventTrans (если они будут делаться не по одной номенклатуре, то они будут не очень быстрые), кто-то успеет наделать складских проводок.
Пример из жизни:
1. Исходные данные
Есть одна проводка по номенклатуре 01.01.06 +10 шт
Остаток = 10 шт
Сегодня 31.01.06
2. Начинаем формировать отчет на 15.01.06. Делаем запрос к Sum, получаем 10 шт
3. Кто-то в это время формирует проводку +15 шт
4. Делаем запрос к InventTrans, получаем 15 шт
5. Рассчитываем остатки на 15.01.06: 10шт-15шт = -5 шт
Так что при активной работе с базой этот подход не работает.
А одним запросом при развесистой аналитике - сделать не получится.
Старый 31.01.2006, 16:30   #6  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,713 / 1201 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от chel
При этом подходе основной проблемой будет то, что между запросом к InventSum и запросом к InventTrans (если они будут делаться не по одной номенклатуре, то они будут не очень быстрые), кто-то успеет наделать складских проводок.
Вы "вскрывали" код класса InventSumDate?

Там по одному артикулу выполняется несколько последовательных запросов. Все с участием InventTrans. Т.е. Ваше возражение в той же степени применимо и к стандартному классу. Хотя, конечно, вероятность ниже.

Цитата:
Сообщение от chel
Так что при активной работе с базой этот подход не работает.
ЭТА проблема решается чисто организационными средствами. Например, выполнение отчетов на вчерашней копии базы данных.

Кроме того, поскольку речь идет о статистических отчетах, то даже если точность в пределах 5%, то считаем, что расчет выполнен точно.

Цитата:
Сообщение от chel
А одним запросом при развесистой аналитике - сделать не получится.
Если я ищу разность данных из 2 таблиц (InventSum и InventTrans), то одним запросом средствами AXAPTA это не получиться в любом случае. Вне зависимости от факт учета аналитики.

То же самое делает и стандарный класс InventSumDate. Но по каждому артикулу в отдельности.
Старый 31.01.2006, 16:55   #7  
komar is offline
komar
Шаман форума
Аватар для komar
Ex AND Project
 
5,571 / 600 (32) +++++++
Регистрация: 24.05.2002
Цитата:
Сообщение от Владимир Максимов
ЭТА проблема решается чисто организационными средствами. Например, выполнение отчетов на вчерашней копии базы данных.
Это уже целая методология олучения ответа о товарных остатках получается!
Если отчеты выполнять копиях базы, то кроме возникновения необходимости содержать вторую инсталляцию с доступом к ней определенных пользователей (запрещено лицензией!!) также возникнет и вопрос - а зачем тогда вообще использовать промышленные СУБД (на многочисленных копиях базы собирались отчеты с древних версиях 1С и систем на FoxPro лет 10 назад!)
__________________
All information in this post is strictly confidential. If you have read it in error, please forget it immediately.
Старый 01.02.2006, 12:16   #8  
ALES is offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Регистрация: 11.08.2004
Цитата:
Сообщение от Владимир Максимов
ЭТА проблема решается чисто организационными средствами. Например, выполнение отчетов на вчерашней копии базы данных.
Это скорее осутствие "остатков на время"
Старый 01.02.2006, 12:18   #9  
ALES is offline
ALES
Участник
Злыдни
 
220 / 45 (2) +++
Регистрация: 11.08.2004
Цитата:
Сообщение от chel
2. Начинаем формировать отчет на 15.01.06. Делаем запрос к Sum, получаем 10 шт
3. Кто-то в это время формирует проводку +15 шт
4. Делаем запрос к InventTrans, получаем 15 шт
Транзакцию ведь можно и корректно написать
Старый 02.02.2006, 10:56   #10  
chel is offline
chel
Участник
 
153 / 10 (1) +
Регистрация: 02.09.2003
Цитата:
Сообщение от ALES
Транзакцию ведь можно и корректно написать
Какую транзакцию? Мы данные получаем в отчете двумя последовательными запросами. Для этого в транзакции, которая выбирает данные, надо установить уровень изоляции "serializable". Разве это можно сделать для одной транзакции в аксапте?
Теги
остатки, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Остатки на дату InventSumDatePhysical Raven Melancholic DAX: Программирование 6 10.05.2007 15:29
Остатки товара на определенную дату Lucky13 DAX: Программирование 7 27.03.2007 14:27
Скачут остатки Def DAX: Программирование 3 03.05.2006 14:27
Цена на дату создания заказа/закупки George Nordic DAX: Функционал 2 29.06.2005 15:56
Остатки dog37 DAX: Программирование 6 02.06.2005 11:25

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

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

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