| 
			
			 | 
		#1 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
			
			
			Запрос выдает не все данные
			 
			
			Простой перебор строк while select myTable, без всяких условий. В таблице 8 записей, но выбираются только 4. Как такое может быть? 
		
		
		
		
		
		
		
		
			Такое поведение не на пустом месте. Такое поведение на стандартом функционале. И возможно что-то делается специально, чтобы был такой результат. Но что именно найти не могу. Поэтому нужно узнать, каким образом такое можно сделать. Последний раз редактировалось vasiliy; 09.09.2015 в 16:32.  | 
| 
	
 | 
| 
			
			 | 
		#2 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Компания одна?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#3 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Компания одна.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#4 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А внутри цикла данные случайно не апдейтятся? А кэширование таблицы какое?
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#5 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Кэширование FoundAndEmpty. 
		
		
		
		
		
		
		
	Более детально, это таблица в управлении складом whsTmpWorkLine. В цикле никаких апдейтов. И даже условий where никаких.  | 
| 
	
 | 
| 
			
			 | 
		#6 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
ax2009 и ниже: по этой таблице включен RLS и у табличной где то вызван метод myTable.recordLevelSecurity(true);  | 
| 
	
 | 
| 
			
			 | 
		#7 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Кэширование не влияет. Подставлял forupdate, менял у таблицы свойтво на none. Результат тот же.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#8 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			судя по названию таблицы, у вас ax2012. 
		
		
		
		
		
		
		
	и похоже это временная таблица. для временной таблицы в каждом экземпляре табличной переменной находится свой набор записей. как проверяете, что в таблице 8 или 4 записи? проверяете одну и ту же табличную переменную или разные?  | 
| 
	
 | 
| 
			
			 | 
		#9 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			да, у нас 2012 
		
		
		
		
		
		
		
	если в дебагере оборвать выполнение, в таблице остается 8 записей. у таблицы свойство tableType = Regular  | 
| 
	
 | 
| 
			
			 | 
		#10 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Нет, никаких наследований.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#11 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А можно привести полностью эксперимент? 
		
		
		
		
		
		
		
		
			Просто смотрю как создается для примера в классе WhsWorkCreate метод createTempLine там кроме insert есть и delete. В общем сложно как то без чистоты эксперимента. X++: WHSTmpWorkLine WHSTmpWorkLine;
    int i;
    while select WHSTmpWorkLine
    {
        info(strFmt("%1", WHSTmpWorkLine.recID));
        
    }        
    /*
    for (i =1; i <= 8; i++)
    {
        WHSTmpWorkLine.clear();
        WHSTmpWorkLine.WorkCreateId = '1';
        WHSTmpWorkLine.setLineNum();
        WHSTmpWorkLine.doInsert();
    }        
    */
    info("s");Последний раз редактировалось axm2013; 09.09.2015 в 17:42.  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2). | |
| 
			
			 | 
		#12 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			запрос в базу без условий также  
		
		
		
		
		
		
		
	X++: FROM WHSTMPWORKLINE T1 WHERE ((PARTITION=?) AND (DATAAREAID=?))  | 
| 
	
 | 
| 
			
			 | 
		#13 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			В этом то и дело. Через job я также создавал и все читалось нормально. А вот при работе функций читает не все. 
		
		
		
		
		
		
		
	Эксперимент, это функция Обработать, на форме Все волны (упр. складом) (обработка волны, создание работ и пополнения). В частности у нас два раза вызывается \Classes\WHSWorkCreateReplenishment. И там есть метод findReplenishmentPutLocation. Вот при втором проходе и не читаются записи созданные при первом проходе.  | 
| 
	
 | 
| 
			
			 | 
		#14 | 
| 
			
			 Гость 
		
			
	 | 
	
	
	
		
		
		
		 
			
			А можете посмотреть чем у 8 записей заполнены DataAreaID и PARTITION? 
		
		
		
		
		
		
		
	Просто смущает что нет явного задания. Можете свойства SaveDataPerCompany и SaveDataPerPartition + прочее в No поставить?  | 
| 
	
 | 
| 
			
			 | 
		#15 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			dataArea и Partition у всех записей одинаковые.
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
			
			 | 
		#16 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 
			
			поставьте точки останова в методах aosValidateInsert и aosValidateDelete и попробуйте потрейсить ваш эксперимент
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: gl00mie (2). | |
| 
			
			 | 
		#17 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
Что-то вроде: X++: select generateonly RecId from YourTable; // (можно добавить условия while, если есть) info(YourTable.getSQLStatement());  | 
| 
	
 | 
| 
			
			 | 
		#18 | 
| 
			
			 Мрачный тип 
		
			
	 | 
	
	
	
		
		
		
		 
			
			Системным хроноложеством не грешили на данной таблице ? 
		
		
		
		
		
		
			Нет ли в структуре таблицы полей ValidFrom, ValidTo ? 
				__________________ 
		
		
		
		
	Мы летаем, кружимся, нагоняем ужасы ...  | 
| 
	
 | 
|
| За это сообщение автора поблагодарили: mazzy (2). | |
| 
			
			 | 
		#19 | 
| 
			
			 Участник 
		
			
	 | 
	
	
	
		
		
		
		 Цитата: 
	
ax2012 - почему не находит по RecID УЖЕ существующую запись?  | 
| 
	
 | 
| 
			
			 | 
		#20 | 
| 
			
			 Программер 
		
			
	 | 
	
	
	
		
		
		
		 
			
			validTimeStateFieldType = None
		 
		
		
		
		
		
		
		
	 | 
| 
	
 | 
| 
	
	 | 
	
		
		
  |