|
|
#1 |
|
Участник
|
Табличка InventJournalTable ...
Здраствыйте ,
С самой табличкой InentJournalTable всё хорошо . Дело в том что немогу сделать изменения связанные с InventJournalTrans . Я сделал для InventJournalTrans таблички и в форме InventJournalTransfer копирование от InventSum . Всё хорошо работает . Но вот когда от InventJournalTable переходим к строкам InventJournalTrans и пока здесь пусто , то в табличке InventJournalTable нету данных SessionId . Так вот - копирую несколько строк , обновляю InventJournalTrans_ds и задаю проверит данные . Я получаю известие , что "журнал такой не неиспользуеться" . После проверки ясно - нету SessionId . Когда я закрываю форму InventJournalTransfer и повторно поднимаю ету форму - тогда всё хорошо . Я хочу отказаться от етого повторного поднимания формы InventJournalTransfer .Всем етим владеет два класса - InventJournalFormTrans_Movement с наследствием от JournalFormTrans и JournalTableData . Кажеться что было бы достаточно JournalTableData - updateBlock() метод . Но он не дает желаемых результатов - он задает SesionId , но снимает InUse . Если я не очень ясно выложил свою проблему - простите ... . Буду благодарен за всякую помочь С уважением , Римантас |
|
|
|
|
#2 |
|
----------------
|
Цитата:
переходим к строкам InventJournalTrans и пока здесь пусто , то в табличке InventJournalTable нету данных SessionId
|
|
|
|
|
#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 . Только незнаю как ... :(
}С уважением , Римантас |
|
|
|
|
#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();
}
}
}
} ... Простите если я занял много времени с своими размышлениями ... С ыважением , Римантас |
|
|