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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.01.2011, 12:45   #1  
AvrDen is offline
AvrDen
Участник
 
134 / 26 (1) +++
Регистрация: 04.08.2005
Адрес: Усть-Каменогорск
Цитата:
Сообщение от pitersky Посмотреть сообщение
В вашем случае как раз и подошёл бы способ, предложенный Tasmanian Devil. Напишите метод, который по завершении обработки строк накладной проверяет, можно ли изменить статус заказа.
Да я так и попробую. Посмотрим как это повлияет.
Старый 13.01.2011, 12:54   #2  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,821 / 402 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от AvrDen Посмотреть сообщение
Да я так и попробую. Посмотрим как это повлияет.
простое убирание обновления статуса в разноске из цикла в конец отработки всех строк, скорее всего мало повлияет на скороть обработки:
1. это не самая тяжелая операция
2. updateStatus вызывается еще при обновлении строк заказа
Старый 13.01.2011, 13:34   #3  
AvrDen is offline
AvrDen
Участник
 
134 / 26 (1) +++
Регистрация: 04.08.2005
Адрес: Усть-Каменогорск
Цитата:
Сообщение от ice Посмотреть сообщение
простое убирание обновления статуса в разноске из цикла в конец отработки всех строк, скорее всего мало повлияет на скороть обработки:
1. это не самая тяжелая операция
2. updateStatus вызывается еще при обновлении строк заказа
При анализе нашли, что больше тормоза происходят в методе salesLine.lowestSalesStatus, который вызываеться из salesTable.updateBackStatus. Скорее всего из-за того что нет индекса по SalesId,SalesStatus в таблице salesLine. В итоге получается что при обработке заказа больше 1000 строк на обработку одной строки уходит порядка 10 сек.
Старый 13.01.2011, 13:43   #4  
ice is offline
ice
Участник
Аватар для ice
Лучший по профессии 2014
 
1,821 / 402 (17) +++++++
Регистрация: 23.03.2006
Цитата:
Сообщение от AvrDen Посмотреть сообщение
При анализе нашли, что больше тормоза происходят в методе salesLine.lowestSalesStatus, который вызываеться из salesTable.updateBackStatus. Скорее всего из-за того что нет индекса по SalesId,SalesStatus в таблице salesLine. В итоге получается что при обработке заказа больше 1000 строк на обработку одной строки уходит порядка 10 сек.
раз так, то добавьте нужный индекс. а лучше включите трассировку sql-запросов и посмотрите, какие конкретно запросы тормозят

Последний раз редактировалось ice; 13.01.2011 в 13:47.
Старый 13.01.2011, 13:49   #5  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от ice Посмотреть сообщение
раз так, то добавьте нужный индекс
угу.
а еще лучше - удаляйте старые уже обработанные заказы

при правильном кодировании все параметры из заказа должны переноситься в документы.
при правильном кодировании ни отчеты, ни обработки не должны обращаться к старым заказам
при правильном кодировании обработанные заказы могут автоматически удалятся (см. параметр модуля)
функционал умеет также "сокращать" строки заказа, автоматически убирая уже обработанную часть.

если обработанные заказы удаляются, то на логическом уровне получается красивая картина:
УЖЕ сделанное находится в фактических документах
ОЖИДАЕМОЕ в ближайшем будущем находится в заказах
__________________
полезное на axForum, github, vk, coub.
Старый 13.01.2011, 14:07   #6  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,514 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от mazzy Посмотреть сообщение
угу.
а еще лучше - удаляйте старые уже обработанные заказы
При всём уважении к этому подходу - ни разу не видел на внедрениях, чтобы он применялся. Думаю, что бухгалтерия встанет на дыбы, но такого не допустит.
__________________
С уважением,
Вячеслав
Старый 13.01.2011, 14:18   #7  
AvrDen is offline
AvrDen
Участник
 
134 / 26 (1) +++
Регистрация: 04.08.2005
Адрес: Усть-Каменогорск
Цитата:
Сообщение от mazzy Посмотреть сообщение
угу.
а еще лучше - удаляйте старые уже обработанные заказы
У нас это требование руководства - хранить "историю"....
Старый 13.01.2011, 14:25   #8  
someOne is offline
someOne
Участник
Аватар для someOne
 
174 / 432 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от AvrDen Посмотреть сообщение
У нас это требование руководства - хранить "историю"....
Не самое лучшее решение...

А вы предлагали альтернативные варианты руководству ?

Чем не устраивает хранение истории обработанных счетов на оплату например ?
Там есть вся необходимая информация по истории заказа.

Не удаляя строки заказов вы неизбежно будете получать тормоза. Со временем будет только хуже.
Старый 13.01.2011, 14:15   #9  
AvrDen is offline
AvrDen
Участник
 
134 / 26 (1) +++
Регистрация: 04.08.2005
Адрес: Усть-Каменогорск
Цитата:
Сообщение от ice Посмотреть сообщение
раз так, то добавьте нужный индекс. а лучше включите трассировку sql-запросов и посмотрите, какие конкретно запросы тормозят
Да в трассировке и нашли что тормозит

X++:
    select minof(SalesStatus) from salesLine
        where   salesLine.SalesId       == salesId              &&
                salesLine.SalesStatus   >  SalesStatus::None;
Старый 13.01.2011, 14:27   #10  
Zabr is offline
Zabr
Участник
Axapta Retail User
 
1,202 / 345 (14) ++++++
Регистрация: 26.06.2002
Адрес: Москва
Цитата:
Сообщение от AvrDen Посмотреть сообщение
При анализе нашли, что больше тормоза происходят в методе salesLine.lowestSalesStatus, который вызываеться из salesTable.updateBackStatus. Скорее всего из-за того что нет индекса по SalesId,SalesStatus в таблице salesLine. В итоге получается что при обработке заказа больше 1000 строк на обработку одной строки уходит порядка 10 сек.
Не очень понятно, поможет ли индекс, ведь в том запросе второе поле SalesStatus сравнивается не на совпадение, а на "больше". По идее, индекс дает эффект только при условии на равенство... или я не прав ?
Теги
как правильно

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание производственного заказа программно ena_ax DAX: Программирование 7 23.09.2011 11:38
Цены в строке заказа меняются при изменении шапки заказа s.alex DAX: Функционал 8 14.04.2009 11:27
Статус "Отменено" в строках заказа oleg61858 DAX: База знаний и проекты 12 16.10.2007 23:28
Цена на дату создания заказа/закупки George Nordic DAX: Функционал 2 29.06.2005 15:56
Сообщение по обработке строк заказа... Venera DAX: Функционал 5 21.06.2004 13:51

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

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

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