10.09.2008, 10:46 | #1 |
Участник
|
Есть вопрос
ВСЕМ ДОБРЫЙ ДЕНЬ.
Есть программа. программа работает отлично,но надо мне всунуть в эту прогу 'индекатор состояния процесса' 'p = SysOperationProgress::newGeneral(#aviupdate, 'Client', 100); p.incCount();' как мне это сделать и если не трудно можно с обьяснением хотя бы чуть чуть . Спасибо большое за помощ. Новичек в программирование X++: { ProdJournalTable ProdJournalTable; ProdJournalRoute ProdJournalRoute; ProdJournalRoute ProdJournalRoute_1; ProdJournalRoute ProdJOurnalRoute_2; TmpProdJournalRouteOutTime tmpTable; ProdTable ProdTable; int nDay; ; delete_from tmpTable; while select createddate,journalid,posted from ProdJournalTable where ProdJournalTable.Posted==NOYES::No exists join ProdJournalRoute where ProdJournalRoute.JournalId==ProdJournalTable.JournalId&& (ProdJournalRoute.WrkCtrId == '113' || ProdJournalRoute.WrkCtrId == '135') { select ProdJournalRoute_1 order by oprnum desc where ProdJournalRoute_1.JournalId == ProdJournalTable.JournalId; select ProdTable where ProdTable.ProdId == ProdJournalRoute_1.ProdId; select ProdJournalRoute_2 where ProdJournalRoute_2.OprId like '045*' && ProdJournalRoute_2.JournalId == ProdJournalTable.JournalId; info ( strfmt("%1,%2,%3", ProdJournalTable.createdDate, ProdJournalTable.JournalId, toDay() - ProdJournalTable.createdDate) ); tmpTable.clear(); tmpTable.ITEMID =ProdTable.ItemId; tmpTable.WRKCTRID=ProdjournalRoute_1.WrkCtrId; tmpTable.Qty=ProdJournalRoute_1.QtyGood+ProdJournalRoute_1.QtyError; tmpTable.Days= toDay() - ProdJournalTable.createdDate; tmpTable.Normal=noYes::No; if ( tmpTable.WRKCTRID == '135') { nDay = 1; } if ( tmpTable.WRKCTRID == '113') { if (ProdJournalRoute_2 != NULL) { nDay=5; } else { nDay = 3; } } if (tmpTable.Days > nDay) tmpTable.Normal=NoYes::No; else tmpTable.Normal=NoYes::Yes ; tmpTable.insert(); } } |
|
10.09.2008, 10:51 | #2 |
Axapta
|
1. ВАЖНО: Называйте темы осмысленно, а не "есть вопрос" или "помогите-спасите-умираю".
2. Для оформления кода на X++ есть тег [xpp]. 3. Как правильно задать вопрос, что бы быть услышанным? |
|
10.09.2008, 10:54 | #3 |
Участник
|
Поверьте я стараюсь .Я еще тока учусь не все сразу буду лучше стараться спасибо
|
|
10.09.2008, 10:56 | #4 |
Ищущий знания...
|
Есть замечательная форма tutorial_Progress, посмотрите её. Там представлены варианты Progress-ов.
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.09.2008, 11:00 | #5 |
Участник
|
А где именно находиться эта форма tutorial_Progress
|
|
10.09.2008, 11:04 | #6 |
Ищущий знания...
|
В AOT узел Forms...
Вот пример использования SysOperationProgress, показал основные методы которые используются: X++: static void job_Progress(Args _args) { InventTable inventTable; SysOperationProgress sop; int cntItems; int selItem; #AviFiles ; cntItems = (select count(RecId) from InventTable).RecId; sop = SysOperationProgress::newGeneral(#AviSearch, 'Просмотр номенклатур', cntItems); // инициализируем sop sop.update(true); // выставляем параметр в true что бы наш прогресс бар обновлялся (точно не помню с каким интервалом) while select inventTable { selItem++; sop.setText(strFmt('Номенклатура %1 из %2', selItem, cntItems));// указываем какой текст писать в прогрессе sop.incCount();// заполняется строка состояния операции } sop.kill(); // завершаем прогресс }
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.09.2008, 11:10 | #7 |
Участник
|
спасибо ща попробую
|
|
10.09.2008, 13:53 | #8 |
Участник
|
Цитата:
Сообщение от lev
В AOT узел Forms...
Вот пример использования SysOperationProgress, показал основные методы которые используются: X++: static void job_Progress(Args _args) { InventTable inventTable; SysOperationProgress sop; int cntItems; int selItem; #AviFiles ; cntItems = (select count(RecId) from InventTable).RecId; sop = SysOperationProgress::newGeneral(#AviSearch, 'Просмотр номенклатур', cntItems); // инициализируем sop sop.update(true); // выставляем параметр в true что бы наш прогресс бар обновлялся (точно не помню с каким интервалом) while select inventTable { selItem++; sop.setText(strFmt('Номенклатура %1 из %2', selItem, cntItems));// указываем какой текст писать в прогрессе sop.incCount();// заполняется строка состояния операции } sop.kill(); // завершаем прогресс } Классно помогло спасибо.Ну а как сделать чтоб он считал все время строки которые будут обновляться я сделал 100 а если завтра их уже станет 135 как зделать так чтоб они считались А sop = SysOperationProgress::newGeneral('','',100); |
|
10.09.2008, 14:04 | #9 |
Участник
|
А для этого вам написали переменную cntItems, а вы заменили ее на 100....
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
10.09.2008, 14:07 | #10 |
Участник
|
Благодарю за ответ ща попробую
|
|
10.09.2008, 14:16 | #11 |
Ищущий знания...
|
Alex_KD прав.
X++: cntItems = (select count(RecId) from InventTable).RecId;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.09.2008, 14:52 | #12 |
Участник
|
|
|
10.09.2008, 14:56 | #13 |
Ищущий знания...
|
Цитата:
X++: int cntItems;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.09.2008, 15:00 | #14 |
Участник
|
Цитата:
int cntItems; вот так начало выглядит { ProdJournalTable ProdJournalTable; ProdJournalRoute ProdJournalRoute; ProdJournalRoute ProdJournalRoute_1; ProdJournalRoute ProdJOurnalRoute_2; TmpProdJournalRouteOutTime tmpTable; ProdTable ProdTable; int nDay; SysOperationProgress sop; int cntItems; ; delete_from tmpTable; cntItems = (select count(RecId) from tmpProdJournalRouteOutTime).RecId; sop = SysOperationProgress::newGeneral('','',cntItems); while select createddate,journalid,posted |
|
10.09.2008, 15:08 | #15 |
Ищущий знания...
|
наверное понял в чем дело.
у вас ищется кол-во записей во временной таблице как я посмотрю (tmpProdJournalRouteOutTime). т.е. у таблицы tmpProdJournalRouteOutTime свойство temporary установлено как "Да". такие таблицы не храняться в базе данных, поэтому и при выполнении присвоения вываливается такое сообщение. Усли таблица временная то лучше написать с использованием переменной: X++: select count(RecId) from tmpTable; cntItems = tmpTable.RecId;
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.09.2008, 15:11 | #16 |
Участник
|
Ща попробую
|
|
10.09.2008, 15:19 | #17 |
Участник
|
Пишет тоже самое, может я просто не все написал. вот это я не писал
sop.update(true); selItem++; sop.setText(strFmt('', selItem, cntItems)); sop.incCount();// Да а как вы делаете такие таблицы в ответе подскажите, а то я тупо копирую. |
|
10.09.2008, 15:26 | #18 |
Участник
|
В DAX4.0 recid типа int64.
поэтому и ругается - 64битное значение присваивается 32битному. ЗЫ Это не ошибка, это предупреждение.
__________________
AxAssist 2012 - Productivity Tool for Dynamics AX 2012/2009/4.0/3.0 |
|
10.09.2008, 15:36 | #19 |
Ищущий знания...
|
Да, я в сообщении поправил опечатку
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
10.09.2008, 15:37 | #20 |
Ищущий знания...
|
С эти сообщением можно жить, ничего страшного
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
Теги |
progress bar, tutorial |
|
|