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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.03.2011, 16:49   #1  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Вопрос [к fed] по InventCostClosing
Возможно, мой вопрос неправильный, но спрошу всё же.Закрытие склада, класс InventCostClosing, метод createInventCostList() (версия Ax4.0), там 4 похожих куска кода:
X++:
    while select forceplaceholders ItemId from inventTable
        index hint TypeIdx
        where inventTable.ItemType == ItemType::Item
    exists join inventTrans
        index hint OpenItemIdx
        where inventTrans.ValueOpen == InventTransOpen::Yes     &&
              inventTrans.ItemId    == inventTable.ItemId
    {
        this.createInventCostListItem(inventTable.ItemId,recordInsertList);
    }
Вопрос: может, стоит добавить еще условие по попаданию inventTrans.DateFinancial в закрываемый период? например, для ускорения расчета. Или это ничего не даст и вообще неправильно?
Старый 03.03.2011, 17:22   #2  
fed is offline
fed
Moderator
Аватар для fed
Ex AND Project
Соотечественники
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
2,909 / 5730 (197) ++++++++++
Регистрация: 13.03.2002
Адрес: Hüfingen,DE
Цитата:
Сообщение от Zabr Посмотреть сообщение
Возможно, мой вопрос неправильный, но спрошу всё же.Закрытие склада, класс InventCostClosing, метод createInventCostList() (версия Ax4.0), там 4 похожих куска кода:
X++:
    while select forceplaceholders ItemId from inventTable
        index hint TypeIdx
        where inventTable.ItemType == ItemType::Item
    exists join inventTrans
        index hint OpenItemIdx
        where inventTrans.ValueOpen == InventTransOpen::Yes     &&
              inventTrans.ItemId    == inventTable.ItemId
    {
        this.createInventCostListItem(inventTable.ItemId,recordInsertList);
    }
Вопрос: может, стоит добавить еще условие по попаданию inventTrans.DateFinancial в закрываемый период? например, для ускорения расчета. Или это ничего не даст и вообще неправильно?
Это даст большие проблемы с доначислением накладных расходов в прошлом периоде. Например - была у вас продажа и покупка в прошлом периоде. Они при каком-то закрытии склада сопоставились и закрылись. Потом на закупку доначислили накладные расходы или просто переоценили. Проводка (приходная) оказалась открытой.При нормальном закрытии склада, коррекция будет перетащена на расходную проводку. Но если вы добавите условие по дате, то система (если других движений по этой номенклатуре не было), эту проводку проигнорирует и сальдо так и зависнет на складском счете.

Во вторых - я не думаю что вы что-то сильно ускорите. В текущей реализации вы просто создаете запись в inventCostList, потом система загружает только приходные проводки (поскольку если расходные проводки в открытом периоде есть, то ваше предложение точно не сработало бы и мы можем этот вариант в рассмотрение не брать), а потом не найдя расходных проводок просто тихо забывает про данную номенклатуру. То есть - сэконоите вы от силы процентов 10-15 времени и только на НУЛЕВОЙ итерации закрытия. Которая сама по себе обычно занимает процентов 15 времени закрытия. Соответственно, сэкономите вы 2-3 процента общего времени закрытия, а всяких рисков дополнительных получите по полной программе.

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

Последний раз редактировалось fed; 03.03.2011 в 17:31.
Старый 03.03.2011, 17:25   #3  
BOAL is offline
BOAL
Участник
Аватар для BOAL
MCBMSS
Злыдни
1C
Лучший по профессии 2015
 
621 / 453 (17) +++++++
Регистрация: 28.04.2003
Адрес: Москва
Закрытие склада может брать проводки от начала времен, если эта партия пошла в дело только сейчас, сотв, ее отсекать нельзя по дате. Тогда уж только расходные фильтровать. Но и по ним может что-то измениться, если в прошлое кто-то добрый наразносил что-то.

Код по закрытию я не помню уже, это так, мысли в тему.
Если учет поставлен четко на процедурах блокировки закрытых периодов, то можно сделать настроечки на отсечения не нужного, но только по расходной части все равно, чтоб приходы брались все (но это тоже от модели складской зависит и аналитик).
Старый 03.03.2011, 17:27   #4  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Может я не понял вопрос, но как насчет закрытия проводок проведенных датой больше закрытия?
Странно было бы делать закрытие по проводкам, которых как бы еще не было на дату закрытия.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по Проектам PSA DAX: Функционал 35 19.01.2007 22:26
Вопрос по проектам Фиксированная цена PSA DAX: Функционал 9 29.06.2006 14:23
Вопрос по финансам Лиса* DAX: Функционал 8 04.10.2004 14:19
расчеты с персоналом. НДФЛ. вопрос чайника shumelka DAX: Функционал 2 25.03.2004 11:36
Вопрос к пользователю при сохранении данных в таблице Anais DAX: Программирование 1 19.03.2004 10:28

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

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

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