| 
	 | 
| 
			
			 | 
		#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();
         }
      }
   }
}   ... Простите если я занял много времени с своими размышлениями ...   С ыважением , Римантас  | 
| 
	
 |