07.12.2006, 16:03 | #1 |
Участник
|
Табличка InventJournalTable ...
Здраствыйте ,
С самой табличкой InentJournalTable всё хорошо . Дело в том что немогу сделать изменения связанные с InventJournalTrans . Я сделал для InventJournalTrans таблички и в форме InventJournalTransfer копирование от InventSum . Всё хорошо работает . Но вот когда от InventJournalTable переходим к строкам InventJournalTrans и пока здесь пусто , то в табличке InventJournalTable нету данных SessionId . Так вот - копирую несколько строк , обновляю InventJournalTrans_ds и задаю проверит данные . Я получаю известие , что "журнал такой не неиспользуеться" . После проверки ясно - нету SessionId . Когда я закрываю форму InventJournalTransfer и повторно поднимаю ету форму - тогда всё хорошо . Я хочу отказаться от етого повторного поднимания формы InventJournalTransfer . Всем етим владеет два класса - InventJournalFormTrans_Movement с наследствием от JournalFormTrans и JournalTableData . Кажеться что было бы достаточно JournalTableData - updateBlock() метод . Но он не дает желаемых результатов - он задает SesionId , но снимает InUse . Если я не очень ясно выложил свою проблему - простите ... . Буду благодарен за всякую помочь С уважением , Римантас |
|
08.12.2006, 13:56 | #2 |
----------------
|
Цитата:
переходим к строкам InventJournalTrans и пока здесь пусто , то в табличке InventJournalTable нету данных SessionId
|
|
11.12.2006, 10:00 | #3 |
Участник
|
Простите - ничего конкретного . Если небыло проблемы , я здесь не писал и не просил помощи . И ето сообщение "стандартном функционале SessionId есть - ставится вместе с InUse" мне ничем не помогает .
Попробую выложит проблему продробнее . Воть какие шаги : - спускаем журналы "Переноса" , создаём новый и переходим к его строкам ; - спускаем запрос "В наличии" , выбираем ныжные позиции и скопируем содержимое в клипборд . Здесь есть мною сделан бутоннчик и вот его метод : Код: TextBuffer tb; InventSum invSum; Str cStr; InventDim invDim; super(); if ( InventSum_ds.anyMarked() ) { if ( box::yesNo( "Копировать в память ?", DialogButton::Ok, "Вопрос" ) ) { tb = new TextBuffer(); tb.appendText( "InventSumRec\n"); // для опознавания invSum = InventSum_ds.getFirst(1); while ( invSum.ItemId ) { invDim = invSum.inventDim(); if ( invDim ) { cStr = invSum.ItemId+"|"+invDim.InventDimId+"|"+num2str(invSum.AvailPhysical,12,3,1,0)+"|"; tb.appendText(cStr+"\n"); } invSum = InventSum_ds.getNext(); } tb.toClipboard(); } } else { if ( box::yesNo( "Копировать ету запись в память ?", DialogButton::Ok, "Вопрос" ) ) { tb = new TextBuffer(); tb.appendText( "InventSumRec\n"); invSum = InventSum_ds.cursor(); invDim = invSum.inventDim(); if ( invDim ) { cStr = invSum.ItemId+"|"+invDim.InventDimId+"|"+num2str(invSum.AvailPhysical,12,3,1,0)+"|"; tb.appendText(cStr+"\n"); } tb.toClipboard(); } } Код: void clicked() { InventJournalTable invJTbl; TextBuffer buffer; InventJournalTrans invJTrf; Str cStr,cStr1; Args a = new Args(); Int journalTypeId,m; Int curSessionId = new xSession().sessionId(); buffer = new TextBuffer(); buffer.fromClipboard(); if ( buffer.subStr(1,12) == "InventSumRec" ) { if ( box::yesNo( "Скопировать из памяти ?", DialogButton::Ok, "Вопрос" ) ) { invJTbl = journalFormTrans.JournalTableData().journalTable(); journalTypeId = invJTbl.journalType; cStr1 = strfmt("%1",journalTypeId); a.record(invJTbl); a.parm(strfmt("%1",journalTypeId)); a.caller(journalFormTrans); new Menufunction(menuItemActionStr(InventJournalCopyInventSum), MenuItemType::Action).run(a); InventJournalTrans_ds.research(); } } } Код: static void main(Args args) { InventJournalTable inventJournalTable; InventJournalTrans inventJournalTrans; InventJournalCopyInvSum inventJournalCopy = InventJournalCopyInvSum::construct(); ContManage aInvSum; Str UT_Param,cStr; Str cRegc = "InventSumRec"; Int n; TextBuffer buffer; InventJournalFormTrans_Movement journalFormTrans; ; buffer = new TextBuffer(); buffer.fromClipboard(); if ( buffer.subStr(1,strlen(cRegc)) == cRegc ) { inventJournalCopy.getLast(); if ( args && args.dataset() == tablenum(InventJournalTable)) { inventJournalTable = args.record(); inventJournalCopy.parmJournalIdFrom(inventJournalTable.JournalId); inventJournalCopy.parmJournalNameId(inventJournalTable.JournalNameId); journalFormTrans = args.caller(); cStr = args.parm(); UT_param = substr(cStr,1,1); inventJournalCopy.parmUT_Parameter(UT_param); inventJournalCopy.parmUT_journFormTrans(journalFormTrans); inventJournalCopy.parmUT_buffer(buffer); inventJournalCopy.parmInventLocationIdFrom(InventDim::find(InventJournalTrans::findJournalId(inventJournalTable.JournalId).InventDimId).InventLocationId); inventJournalCopy.parmInventLocationIdTo(InventDim::find(InventJournalTrans::findJournalId(inventJournalTable.JournalId).ToInventDimId).InventLocationId); } if (inventJournalCopy.prompt()) { inventJournalCopy.run(); } } } Код: journalTableData = this.parmUT_journFormTrans().JournalTableData(); invJTbl = journalTableData.journalTable(); inventJournalTransData = journalTableData.JournalStatic().newJournalTransData(invJTrf,journalTableData); ... вставим/проверяем новые записи ( здесь всё хорошо ) ... if ( lNew ) // если действительно сделал новых записей { if ( !journalTabledata.journalTable().SessionId ) { journalTableData.updateBlock(JournalBlockLevel::InUse,JournalBlockLevel::InUse,true); } } Код: new Menufunction(menuItemActionStr(InventJournalCopyInventSum), MenuItemType::Action).run(a); InventJournalTrans_ds.research(); ... if ( lNew ) { вот здесь обновлять journalFormTrans и journalTableData . Только незнаю как ... :( } С уважением , Римантас |
|
11.12.2006, 10:37 | #4 |
Участник
|
Тфу .... А бывает так - писал писал письмо и стукнуло по голове . Так вот проблема решилась совсем простейшим способом . После вызова классы копирования , просто проверил ешё раз новые записи в форме InvetJournalTransfer :
Код: void clicked() { InventJournalTable invJTbl; TextBuffer buffer; InventJournalTrans invJTrf; Str cStr,cStr1; Args a = new Args(); Int journalTypeId; Real n,z; buffer = new TextBuffer(); buffer.fromClipboard(); if ( buffer.subStr(1,12) == "InventSumRec" ) { if ( box::yesNo( "Iklijuoti is atminties ?", DialogButton::Ok, "Klausimas" ) ) { invJTbl = journalFormTrans.JournalTableData().journalTable(); journalTypeId = invJTbl.journalType; cStr1 = strfmt("%1",journalTypeId); z = InventJournalTrans::lastLineNum(invJTbl.JournalId); // сколько запицей перед копированием ; a.record(invJTbl); a.parm(strfmt("%1",journalTypeId)); a.caller(journalFormTrans); new Menufunction(menuItemActionStr(InventJournalCopyInventSum), MenuItemType::Action).run(a); // класса копирования n = InventJournalTrans::lastLineNum(invJTbl.JournalId); // if ( n > z ) // есть ли новых записей { while select inventJournalTrans where inventJournalTrans.JournalId == invJTbl.JournalId { if ( inventJournalTrans.LineNum > z ) inventJournalTrans.validateWrite(); } invJTbl.NumOfLines = round(n,0); InventJournalTrans_ds.research(); } } } } С ыважением , Римантас |
|