AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.09.2015, 16:30   #1  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Запрос выдает не все данные
Простой перебор строк while select myTable, без всяких условий. В таблице 8 записей, но выбираются только 4. Как такое может быть?

Такое поведение не на пустом месте. Такое поведение на стандартом функционале. И возможно что-то делается специально, чтобы был такой результат. Но что именно найти не могу. Поэтому нужно узнать, каким образом такое можно сделать.

Последний раз редактировалось vasiliy; 09.09.2015 в 16:32.
Старый 09.09.2015, 16:35   #2  
axm2013
Гость
 
n/a
Компания одна?
Старый 09.09.2015, 16:39   #3  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Компания одна.
Старый 09.09.2015, 16:47   #4  
A_BAS is offline
A_BAS
Участник
Аватар для A_BAS
 
77 / 48 (2) +++
Регистрация: 19.04.2012
А внутри цикла данные случайно не апдейтятся? А кэширование таблицы какое?
Старый 09.09.2015, 17:00   #5  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Кэширование FoundAndEmpty.

Более детально, это таблица в управлении складом whsTmpWorkLine.

В цикле никаких апдейтов. И даже условий where никаких.
Старый 09.09.2015, 17:09   #6  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от vasiliy Посмотреть сообщение
Простой перебор строк while select myTable, без всяких условий. В таблице 8 записей, но выбираются только 4. Как такое может быть?
ax2012: по этой таблице включен XDS в
ax2009 и ниже: по этой таблице включен RLS и у табличной где то вызван метод myTable.recordLevelSecurity(true);
Старый 09.09.2015, 17:10   #7  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Кэширование не влияет. Подставлял forupdate, менял у таблицы свойтво на none. Результат тот же.
Старый 09.09.2015, 17:11   #8  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от vasiliy Посмотреть сообщение
Более детально, это таблица в управлении складом whsTmpWorkLine.
судя по названию таблицы, у вас ax2012.

и похоже это временная таблица.
для временной таблицы в каждом экземпляре табличной переменной находится свой набор записей.

как проверяете, что в таблице 8 или 4 записи? проверяете одну и ту же табличную переменную или разные?
Старый 09.09.2015, 17:14   #9  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
да, у нас 2012
если в дебагере оборвать выполнение, в таблице остается 8 записей.
у таблицы свойство tableType = Regular
Старый 09.09.2015, 17:19   #10  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
Нет, никаких наследований.
Старый 09.09.2015, 17:32   #11  
axm2013
Гость
 
n/a
А можно привести полностью эксперимент?
Просто смотрю как создается для примера в классе 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");
Такой код к примеру работает корректно и 8 записей выдает честно.

Последний раз редактировалось axm2013; 09.09.2015 в 17:42.
За это сообщение автора поблагодарили: mazzy (2).
Старый 09.09.2015, 17:42   #12  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
запрос в базу без условий также
X++:
FROM WHSTMPWORKLINE T1 WHERE ((PARTITION=?) AND (DATAAREAID=?))
Старый 09.09.2015, 17:47   #13  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
В этом то и дело. Через job я также создавал и все читалось нормально. А вот при работе функций читает не все.
Эксперимент, это функция Обработать, на форме Все волны (упр. складом) (обработка волны, создание работ и пополнения).
В частности у нас два раза вызывается \Classes\WHSWorkCreateReplenishment.
И там есть метод findReplenishmentPutLocation. Вот при втором проходе и не читаются записи созданные при первом проходе.
Старый 09.09.2015, 17:52   #14  
axm2013
Гость
 
n/a
А можете посмотреть чем у 8 записей заполнены DataAreaID и PARTITION?
Просто смущает что нет явного задания. Можете свойства SaveDataPerCompany и SaveDataPerPartition + прочее в No поставить?
Старый 09.09.2015, 18:08   #15  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
dataArea и Partition у всех записей одинаковые.
Старый 09.09.2015, 18:21   #16  
A_BAS is offline
A_BAS
Участник
Аватар для A_BAS
 
77 / 48 (2) +++
Регистрация: 19.04.2012
поставьте точки останова в методах aosValidateInsert и aosValidateDelete и попробуйте потрейсить ваш эксперимент
За это сообщение автора поблагодарили: gl00mie (2).
Старый 09.09.2015, 22:30   #17  
Cardagant is offline
Cardagant
Участник
 
317 / 54 (2) ++++
Регистрация: 11.10.2011
Цитата:
Сообщение от vasiliy Посмотреть сообщение
В этом то и дело. Через job я также создавал и все читалось нормально. А вот при работе функций читает не все.
Возможно, что-то прояснит просмотр простого запроса (без while) непосредственно в месте вызова while к этой же табличной переменной?

Что-то вроде:
X++:
select generateonly RecId from YourTable; // (можно добавить условия while, если есть)

info(YourTable.getSQLStatement());
Старый 10.09.2015, 07:20   #18  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
886 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Системным хроноложеством не грешили на данной таблице ?
Нет ли в структуре таблицы полей ValidFrom, ValidTo ?
__________________
Мы летаем, кружимся, нагоняем ужасы ...
За это сообщение автора поблагодарили: mazzy (2).
Старый 10.09.2015, 08:25   #19  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Системным хроноложеством не грешили на данной таблице ?
Нет ли в структуре таблицы полей ValidFrom, ValidTo ?
точно. и у меня такой вопрос был
ax2012 - почему не находит по RecID УЖЕ существующую запись?
Старый 10.09.2015, 12:15   #20  
vasiliy is offline
vasiliy
Программер
 
288 / 17 (1) ++
Регистрация: 21.10.2004
Адрес: E-burg
validTimeStateFieldType = None
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как класс->запрос->форма. Как такое создать? kitty DAX: Программирование 16 09.09.2014 12:52
черновики (заказы) - могут удаляться. Поэтому данные в заказах хранить нельзя. Фактические данные нужно протаскивать в документы. mazzy DAX: Функционал 58 23.04.2014 09:35
Что за компании в демоданных AX2012 R2? Почему такие данные? mazzy DAX: Функционал 2 21.05.2013 01:18
При загрузке портала выдает запрос на ввод логина и пароля zelibobis DAX: Администрирование 2 01.02.2008 16:37
OR-запрос выдает ошибку murad DAX: Программирование 5 28.05.2006 15:01

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:01.