09.09.2015, 16:30 | #1 |
Программер
|
Запрос выдает не все данные
Простой перебор строк while select myTable, без всяких условий. В таблице 8 записей, но выбираются только 4. Как такое может быть?
Такое поведение не на пустом месте. Такое поведение на стандартом функционале. И возможно что-то делается специально, чтобы был такой результат. Но что именно найти не могу. Поэтому нужно узнать, каким образом такое можно сделать. Последний раз редактировалось vasiliy; 09.09.2015 в 16:32. |
|
09.09.2015, 16:35 | #2 |
Гость
|
Компания одна?
|
|
09.09.2015, 16:39 | #3 |
Программер
|
Компания одна.
|
|
09.09.2015, 16:47 | #4 |
Участник
|
А внутри цикла данные случайно не апдейтятся? А кэширование таблицы какое?
|
|
09.09.2015, 17:00 | #5 |
Программер
|
Кэширование FoundAndEmpty.
Более детально, это таблица в управлении складом whsTmpWorkLine. В цикле никаких апдейтов. И даже условий where никаких. |
|
09.09.2015, 17:09 | #6 |
Участник
|
Цитата:
ax2009 и ниже: по этой таблице включен RLS и у табличной где то вызван метод myTable.recordLevelSecurity(true); |
|
09.09.2015, 17:10 | #7 |
Программер
|
Кэширование не влияет. Подставлял forupdate, менял у таблицы свойтво на none. Результат тот же.
|
|
09.09.2015, 17:11 | #8 |
Участник
|
судя по названию таблицы, у вас ax2012.
и похоже это временная таблица. для временной таблицы в каждом экземпляре табличной переменной находится свой набор записей. как проверяете, что в таблице 8 или 4 записи? проверяете одну и ту же табличную переменную или разные? |
|
09.09.2015, 17:14 | #9 |
Программер
|
да, у нас 2012
если в дебагере оборвать выполнение, в таблице остается 8 записей. у таблицы свойство tableType = Regular |
|
09.09.2015, 17:19 | #10 |
Программер
|
Нет, никаких наследований.
|
|
09.09.2015, 17:32 | #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). |
09.09.2015, 17:42 | #12 |
Программер
|
запрос в базу без условий также
X++: FROM WHSTMPWORKLINE T1 WHERE ((PARTITION=?) AND (DATAAREAID=?)) |
|
09.09.2015, 17:47 | #13 |
Программер
|
В этом то и дело. Через job я также создавал и все читалось нормально. А вот при работе функций читает не все.
Эксперимент, это функция Обработать, на форме Все волны (упр. складом) (обработка волны, создание работ и пополнения). В частности у нас два раза вызывается \Classes\WHSWorkCreateReplenishment. И там есть метод findReplenishmentPutLocation. Вот при втором проходе и не читаются записи созданные при первом проходе. |
|
09.09.2015, 17:52 | #14 |
Гость
|
А можете посмотреть чем у 8 записей заполнены DataAreaID и PARTITION?
Просто смущает что нет явного задания. Можете свойства SaveDataPerCompany и SaveDataPerPartition + прочее в No поставить? |
|
09.09.2015, 18:08 | #15 |
Программер
|
dataArea и Partition у всех записей одинаковые.
|
|
09.09.2015, 18:21 | #16 |
Участник
|
поставьте точки останова в методах aosValidateInsert и aosValidateDelete и попробуйте потрейсить ваш эксперимент
|
|
|
За это сообщение автора поблагодарили: gl00mie (2). |
09.09.2015, 22:30 | #17 |
Участник
|
Цитата:
Что-то вроде: X++: select generateonly RecId from YourTable; // (можно добавить условия while, если есть) info(YourTable.getSQLStatement()); |
|
10.09.2015, 07:20 | #18 |
Мрачный тип
|
Системным хроноложеством не грешили на данной таблице ?
Нет ли в структуре таблицы полей ValidFrom, ValidTo ?
__________________
Мы летаем, кружимся, нагоняем ужасы ... |
|
|
За это сообщение автора поблагодарили: mazzy (2). |
10.09.2015, 08:25 | #19 |
Участник
|
Цитата:
ax2012 - почему не находит по RecID УЖЕ существующую запись? |
|
10.09.2015, 12:15 | #20 |
Программер
|
validTimeStateFieldType = None
|
|
|
|