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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.07.2006, 21:05   #21  
glibs is offline
glibs
Member
Сотрудники компании It Box
Most Valuable Professional
Лучший по профессии 2011
Лучший по профессии 2009
 
4,942 / 911 (40) +++++++
Регистрация: 10.06.2002
Адрес: I am from Kyiv, Ukraine. Now I am in Moscow. For private contacts: glibs@hotmail.com
Цитата:
Сообщение от Хочулия
...
А можно ли из InventSum удалить пустые строки
...
Можно, только работать потом не будет.
Цитата:
Сообщение от Хочулия
...
или чем аукнется тоже?
...
Как минимум отчеты по номенклатуре по остаткам и стоимости запасов на дату "поведет".
__________________
С уважением,
glibs®
За это сообщение автора поблагодарили: Logger (1).
Старый 27.05.2014, 18:01   #22  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от glibs Посмотреть сообщение
Можно, только работать потом не будет.

Как минимум отчеты по номенклатуре по остаткам и стоимости запасов на дату "поведет".
Спасибо.
А вы не могли бы подробнее раскрыть тему ?

Покопал классы
InventSumDate
InventSumDateDim
InventSumDatePhysical
InventSumDatePhysicalDim
InventSumDateValue
InventSumDateValueReport
InventSumDateValueReportDim

не нашел нигде зависимости от наличия закрытых Inventsum.
Исключение - метод
\Classes\InventSumDateValueReportDim\newParameters
X++:
server static InventSumDateValueReportDim newParameters(
    TransDate       _perDate,
    ItemId          _itemId,
    InventDim       _inventDimCriteria,
    InventDimParm   _inventDimParm

    )
{
    InventSumDateValueReportDim inventSumDateValueReportDim = new InventSumDateValueReportDim();
    InventDimParm           inventDimParmGroupBy;
    Query                   query;
    QueryRun                queryRun;
    InventDim               inventDim;
    ;

    inventSumDateValueReportDim.parmItemId(_itemId);
    inventSumDateValueReportDim.parmPerDate(_perDate);
    inventSumDateValueReportDim.parmInventDim(_inventDimCriteria);
    inventSumDateValueReportDim.parmInventDimParm(_inventDimParm);

    if (InventTable::find(_itemId).ItemDimCostPrice == NoYes::Yes)
    {
        inventDimParmGroupBy = _inventDimParm.data();
        inventDimParmGroupBy.setActiveItemDim(InventTable::find(_itemId).DimGroupId);
        inventSumDateValueReportDim.parmInventDimParm(inventDimParmGroupBy);

        query = InventSum::newQuery(null,_itemId,_inventDimCriteria,_inventDimParm,inventDimParmGroupBy);
        query.dataSourceTable(tablenum(InventSum)).findRange(fieldnum(InventSum,Closed)).value('');

        queryRun = new QueryRun(query);
        while (queryRun.next())
        {
            inventDim = queryRun.get(tablenum(InventDim));
            inventSumDateValueReportDim.parmInventDim(inventDim);
            inventSumDateValueReportDim.init();
        }

        inventSumDateValueReportDim.parmInventDimParm(_inventDimParm);
    }
    else
    {
    inventSumDateValueReportDim.init();
    }

    return inventSumDateValueReportDim;
}
Не подскажете зачем было делать цикл
X++:
        while (queryRun.next())
        {
            inventDim = queryRun.get(tablenum(InventDim));
            inventSumDateValueReportDim.parmInventDim(inventDim);
            inventSumDateValueReportDim.init();
        }
для номенклатурных аналитик ?
Старый 27.05.2014, 21:37   #23  
Pustik is offline
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Цитата:
Сообщение от glibs Посмотреть сообщение
Можно, только работать потом не будет.

Как минимум отчеты по номенклатуре по остаткам и стоимости запасов на дату "поведет".
а пересчет InventSum разве не решит проблему?
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.
Старый 28.05.2014, 09:46   #24  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Pustik Посмотреть сообщение
а пересчет InventSum разве не решит проблему?
Дык...
В этом собственно и проблема. Что Inventsum большой и держать closed записи не хочется.

Все-таки есть разница 65 мультов записей в табличке или 2,5
Старый 28.05.2014, 10:30   #25  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
Цитата:
Сообщение от Logger Посмотреть сообщение
Дык...
В этом собственно и проблема. Что Inventsum большой и держать closed записи не хочется.

Все-таки есть разница 65 мультов записей в табличке или 2,5
Может быть Вам имеет смысл сделать партиционирование таблицы на уровне SQL и положить Закрытые записи на другой диск, а на быстром диске оставить только открытые?
__________________
Айрат Вильданов.
skype: vildanov.a
За это сообщение автора поблагодарили: Logger (1).
Старый 28.05.2014, 11:02   #26  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от AraraT® Посмотреть сообщение
Может быть Вам имеет смысл сделать партиционирование таблицы на уровне SQL и положить Закрытые записи на другой диск, а на быстром диске оставить только открытые?
Возможно и так. Подумывал над этим.
Но мне кажется что хирургия это более надежный метод. Но более стремный.

А вы явные противопоказания к удалению закрытых записей знаете ?
Старый 17.09.2014, 02:04   #27  
Kasper is offline
Kasper
Участник
 
34 / 19 (1) ++
Регистрация: 30.11.2005
Полная проверка INVENTSUM
Задача проверки INVENTSUM возникает довольно часто.
Постарался решить эту проблему в общем случае. Написал статью
http://yaroslavbat.blogspot.com/2014...apta-2009.html
Хотел здесь новую тему создать (отклики собрать, если кто попробует), но прав нет
Отзывы буду приветствовать
Старый 17.09.2014, 08:35   #28  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Цитата:
Сообщение от Kasper Посмотреть сообщение
Задача проверки INVENTSUM возникает довольно часто.
Постарался решить эту проблему в общем случае. Написал статью
http://yaroslavbat.blogspot.com/2014...apta-2009.html
Хотел здесь новую тему создать (отклики собрать, если кто попробует), но прав нет
Отзывы буду приветствовать
Для этого есть класс InventSumReCalcItem. И периодическая операция.
Старый 17.09.2014, 12:46   #29  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Kasper Посмотреть сообщение
Задача проверки INVENTSUM возникает довольно часто.
В 2009 не проверял. А акс3 наша которая работала 6 лет запускал проверку. Все сошлось с интвентрансом до последней циферки.
Цитата:
Постарался решить эту проблему в общем случае. Написал статью
http://yaroslavbat.blogspot.com/2014...apta-2009.html
Хотел здесь новую тему создать (отклики собрать, если кто попробует), но прав нет
Отзывы буду приветствовать
Ужос) Приветствуется как исследование акс и sql, но пользоваться этим промышленно не стоит)
Старый 18.09.2014, 11:42   #30  
Kasper is offline
Kasper
Участник
 
34 / 19 (1) ++
Регистрация: 30.11.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
Дык...
В этом собственно и проблема. Что Inventsum большой и держать closed записи не хочется.

Все-таки есть разница 65 мультов записей в табличке или 2,5
Уважаемый Logger, попробуйте запустить мой скрипт, но НЕ делая commit -- пока только посмотрим логи. Я не могу вам квалифицированно ответить на вопрос, нужно ли держать closed записи, но может после запуска скрипта часть из 65 мультов сама уйдёт ? Не по причине, что они closed, а потому что они необоснованные (не базируются на INVENTTRANS)
Напишите, ушло ли что ни-будь и сколько, а ещё лучше, прикрепите сюда логи, там посмотрим...
Старый 18.09.2014, 11:57   #31  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Kasper Посмотреть сообщение
Уважаемый Logger, попробуйте запустить мой скрипт, но НЕ делая commit -- пока только посмотрим логи. Я не могу вам квалифицированно ответить на вопрос, нужно ли держать closed записи, но может после запуска скрипта часть из 65 мультов сама уйдёт ? Не по причине, что они closed, а потому что они необоснованные (не базируются на INVENTTRANS)
Напишите, ушло ли что ни-будь и сколько, а ещё лучше, прикрепите сюда логи, там посмотрим...
Спасибо, посмотрю.
По живой рабочей с кучей пользователей стремновато это делать.

Еще заметил что в скрипте есть строки вида
X++:
using T1 b on a.DATAAREAID = b.DATAAREAID and a.ITEMID = b.ITEMID and a.INVENTDIMID = b.INVENTDIMID
Вы умудрились свою аксапту запустить в режиме CaseInsensitive ?
Или просто забыли добавить
SUSTR(NLS_LOWER(a.DATAAREAID),1,4)
и
SUSTR(NLS_LOWER(a.ITEMID),1,20)

?
Старый 18.09.2014, 12:13   #32  
Kasper is offline
Kasper
Участник
 
34 / 19 (1) ++
Регистрация: 30.11.2005
Стоп !

Все Аксапты, которые я видел за последний год, работали в режиме CASE INCENSITIVE. Я вот поленился мануал почитать по установке SQL для Аксы, но считал что SQL для Аксы должен ставиться всегда регистронезависимым. Исходя из этого я и не делал приведение к регистру.

У Вас не так ?

На боевом приложении делать не надо

Последний раз редактировалось Kasper; 18.09.2014 в 12:15.
Старый 18.09.2014, 13:02   #33  
Kasper is offline
Kasper
Участник
 
34 / 19 (1) ++
Регистрация: 30.11.2005
Цитата:
Сообщение от Logger Посмотреть сообщение
Спасибо, посмотрю.
Вы умудрились свою аксапту запустить в режиме CaseInsensitive ?
?
Нет, похоже всё верно.
Вот, смотрю Axapta 2009 Installation Guide. Там написано:
During installation, you must choose a collation method that meets the following requirements:
Includes a sort order that is case-insensitive, accent-sensitive, kana-sensitive, and width-insensitive.


Поэтому у меня всё верно. Разве у Вас Акса работает в регистрозависимом режиме ? Мы говорим об Аксе 2009 ?
Старый 18.09.2014, 13:30   #34  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я почему-то решил что у вас оракл.
Видимо из-за баннеров

Вот и спросил.
Скрипт просматривал только по диагонали.

Чем вас не устроил InventSumReCalcItem о котором raz написал ?
Старый 21.09.2014, 21:56   #35  
Kasper is offline
Kasper
Участник
 
34 / 19 (1) ++
Регистрация: 30.11.2005
Доработал пост в блоге, учёл все комментарии.
Годится ?

Цитата:
Сообщение от Logger Посмотреть сообщение
Чем вас не устроил InventSumReCalcItem о котором raz написал ?
По правде говоря, я об этом классе не знал. Класс выполняет ту-же работу. Но скрипт, перед тем, как что-то сделать -- предоставляет лог. Скрипт можно использовать для экспресс-диагностики

Цитата:
Сообщение от Logger Посмотреть сообщение
А вы явные противопоказания к удалению закрытых записей знаете ?
Квалифицированный ответ можно получить только от вендора, но можно порассуждать.
Допустим есть чистая настроенная база. Пока ещё ни одной складской проводки.
В складской картотеке есть одна номенклатура -- "Ведро"
И вот вы купили одно ведро и сразу же его продали. Нажимаем кнопку "Запасы". Видим - Ведро, количество - 0.
А если закрытую строку из InventSum удалить, то в форме "Запасы" будет пусто. Так не должно быть.

Так ?
Старый 22.09.2014, 06:51   #36  
Perc is offline
Perc
Участник
 
194 / 57 (2) ++++
Регистрация: 05.03.2005
Цитата:
Сообщение от Kasper Посмотреть сообщение
А если закрытую строку из InventSum удалить, то в форме "Запасы" будет пусто. Так не должно быть.
Почему это так не должно быть. Ведь до того как ведро купили так было! И ничего страшного не произошло. В перечне есть на остатках нет.
Старый 22.09.2014, 07:59   #37  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
А разве закрытой строка становится не после сопоставления закрытием склада? По-моему алгоритм закрытия как-то использует информацию из InventSum? Или я ошибаюсь? И точно ли не понадобятся такие закрытые строки в InventSum в случае открытия (отмены закрытия) склада?
Старый 22.09.2014, 10:10   #38  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от Kasper Посмотреть сообщение
А если закрытую строку из InventSum удалить, то в форме "Запасы" будет пусто. Так не должно быть.

Так ?
Строго говоря - не должно так быть.
Но я думаю ради производительности с этим можно смириться.

Или доработать форму "Запасы", чтобы все равно показывала записи.
Старый 22.09.2014, 10:57   #39  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
А разве закрытой строка становится не после сопоставления закрытием склада? По-моему алгоритм закрытия как-то использует информацию из InventSum? Или я ошибаюсь? И точно ли не понадобятся такие закрытые строки в InventSum в случае открытия (отмены закрытия) склада?
На Inventsum.Insert() и Inventsum.update()
есть такой код :
X++:
    this.closedQty = this.isAllQtyFieldsZero();
    this.closed    = this.isAllValueFieldsZero() && this.closedQty;
(еще есть аналогичный код в хранимке, которая обновляет остаток в InvnetSum)

А в методах тупо идет сравнение количественных и суммовых полей с нулем.
На закрытие склад ей пофигу. Просто как правило суммовые поля выравниваются после закрытия что приводит к их обнулению и взведению галки closed. Но такое может быть и без закрытия склада.

Закрытие склада, насколько я помню не использует InventSum.
Табличка InventSum упоминается в методах
\Classes\InventCostClosingCancel_WorkInvent\checkAndDeleteVirtualTransfer
\Classes\InventCostClosingCancel_WorkInvent\deleteVirtualTransfers

но не для выборки из базы или фильтрации, а как накопительная переменная в памяти.


Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
И точно ли не понадобятся такие закрытые строки в InventSum в случае открытия (отмены закрытия) склада?
По идее, они просто создадутся вновь если Аксапте потребуется остаток сделать отличным от нуля. Но я сам не проверял.
Старый 22.09.2014, 11:01   #40  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,940 / 3229 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Я бы еще подправил метод
\Classes\InventSumDateEngine\selectInventOnHand
вот это место
X++:
    insert_recordset inventSumDateTrans (ItemId, PostedQty, ReceivedQty, DeductedQty, PickedQty, RegisteredQty, PostedValue,
                                         #InventDimFields, ParmId, TransType)
        select ItemId, sum(PostedQty), sum(Received), sum(Deducted), sum(Picked), sum(Registered), sum(PostedValue)
        from inventSum
        group by ItemId
        where inventSum.Closed == NoYes::Yes
        join #InventDimFields, parmId /*scalar*/, inventSumDateType /*scalar*/
            from inventDim
            group by #InventDimFields
            where inventDim.InventDimId == inventSum.InventDimId
        exists join inventTrans
            where inventTrans.ItemId      == inventSum.ItemId
               && inventTrans.InventDimId == inventSum.InventDimId
               && inventTrans.DateStatus  >= perDate;
здесь код явно закладывается на наличие закрытых записей. Легко исправляется.

Насколько я помню используется только в одном отчете по остаткам.
Теги
inventsum, остатки, остатки на дату

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
RecordSet у inventSum CasperSKY DAX: Программирование 3 21.03.2008 15:52
Ошибка при разноске складских движений Starling DAX: Администрирование 9 12.10.2007 14:21
Можно ли чистить InventSum? DreamCreator DAX: Программирование 19 05.12.2006 15:38
Проверка уникальности ItemDimIdx в InventSum DreamCreator DAX: Программирование 15 06.12.2005 17:23
Форма InventOnhandItem, Почему RecID у InventSum в этой форме всегда 0? Кирилл DAX: Программирование 2 25.05.2004 18:15

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

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

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