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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.05.2006, 15:49   #1  
akvi is offline
akvi
Участник
 
119 / 12 (1) ++
Регистрация: 31.03.2003
Адрес: Москва
Переход к основной таблице номенклатуры
Здравствуйте, уважаемые коллеги!

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

Для остальных таблиц указанная операция перехода работает нормально

На форуме искал, ничего по этой проблеме не нашел. Может, кто-то сталкивался с подобным?

Ax 3.0 SP4
Старый 22.05.2006, 16:05   #2  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
А у вас порядок сортировки на форме справочника номенклатур по коду или по какому-либо другому полю?
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: DreamCreator (2).
Старый 22.05.2006, 16:40   #3  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1293 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
Скорее всего, вы поменяли индекс на датасорсе в форме номенклатурного справочника.
Старый 23.05.2006, 15:56   #4  
akvi is offline
akvi
Участник
 
119 / 12 (1) ++
Регистрация: 31.03.2003
Адрес: Москва
Изменений индекса и сортировки не делал, все стандартное.
Старый 23.05.2006, 16:25   #5  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Если у вас есть возможность, попробуйте промониторить запрос, идущий на сервер при переходе.
В нормальных условиях на сервер должен уходить запрос вида
X++:
select ...
from  INVENTTABLE A, ...
where A.DataAreaId = '' and A.ItemId >= 'Код номенклатуры' and ...
order by A.DataAreaId, A.ItemId
т.е. в этом случае первая запись из полученного набора будет та, на которую был совершен переход

PS Возможно, у вас на форме при инициализации чистятся element.args().lookupField() или element.args().lookupValue()
__________________
Axapta v.3.0 sp5 kr2

Последний раз редактировалось AndyD; 23.05.2006 в 16:28.
Старый 23.05.2006, 19:52   #6  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
Есть вариант - перекрыть метод на поле ист. данных откуда переходим к основной таблице
Код:
 
public void jumpRef()
{
    Args            args1;
    FormRun         formRun;
    InventTable    inventTable;
    ;
    select firstonly inventTable where inventTable.ItemId == DataSources.ItemId;
    args1 = new Args(formstr(InventTable));
    args1.record(inventTable);
    formRun = classFactory.formRunClass(args1);
    formRun.init();
    formRun.run();
    formRun.detach();
}
Но это, конечно не выход из положения, т.к. придется перекрывать метод jumpRef на многих формах.
Да, еще на форме InventTable придеться дописывать в executeQuery что то типа.

Код:
 
    if (element.args().dataset())
       InventTable_DS.findRecord(element.args().record());
Мне это когда-то очень помогло решить такую же проблемму, но не с InventTable, может кому пригодится.
Старый 23.05.2006, 23:37   #7  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
При таком подходе, если справочник номенклатур большой, то ждать разультата придется долго.
__________________
Axapta v.3.0 sp5 kr2
Старый 24.05.2006, 06:02   #8  
denny is offline
denny
Участник
 
93 / 29 (1) +++
Регистрация: 16.11.2003
Адрес: Novosibirsk
Рискну высказать еще одно предположение: не было ли на форме "Номенклатурные единицы" программных модификаций, накладывающий фильтры? Номенклатура, к который Вы переходите, может не отвечать условиям программного range - вследствие этого курсор переходит на совершенно другую запись.
Старый 24.05.2006, 08:36   #9  
AraraT® is offline
AraraT®
Участник
1C
 
158 / 106 (4) +++++
Регистрация: 13.01.2006
Адрес: Республика Татарстан, г. Казань
А вы переходите к основной таблице по коду номенклатуры или по ее названию?
Старый 24.05.2006, 09:07   #10  
akvi is offline
akvi
Участник
 
119 / 12 (1) ++
Регистрация: 31.03.2003
Адрес: Москва
Цитата:
Сообщение от denny
...не было ли на форме "Номенклатурные единицы" программных модификаций, накладывающий фильтры? Номенклатура, к который Вы переходите, может не отвечать условиям программного range - вследствие этого курсор переходит на совершенно другую запись.
Есть такие модификации: к форме прикручен классификатор. Но в стандартном состоянии он отключен, т.е. выводится вся таблица и, значит, фильтра нет.

Цитата:
Сообщение от AraraT®
А вы переходите к основной таблице по коду номенклатуры или по ее названию?
Перехожу, конечно же, по коду
Старый 24.05.2006, 11:15   #11  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от akvi
Есть такие модификации

Если модификации создают query и datasource формы заново, то никакой связи с внешними таблицами и формами не будет.

Ваш код должен брать текущий queryRun формы и модифицировать его.
Ни в коем случае не пересоздавать.

Т.е. в форма следующий код инициализации датасорса является неправильным, поскольку датасорс пересоздается
X++:
query q = new Query();
q.addRange(....)
...
this.query(q);
а такой код является правильным
X++:
super();
this.query().addRange(...)
...
Еще более правильным является код
X++:
super();
SysQuery::findOrCreateRange(this.query(),....);
...
Кроме того, не забывайте, что init должен только инициализировать query.
Устанавливать значения в range нужно в методе executeQuery.

Теоретически можно и не заниматься всей этой "чепухой" и лепить полностью новый запрос в init'е. Вы почувстуете разницу как раз при переходе к основной таблице, при привязке вашей формы к другим (dynaLink) и на прочих интересных вкусностях (например, работа RLS)...

Просто делайте модификации корректно. Если уж начали их делать.
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2006, 12:03   #12  
akvi is offline
akvi
Участник
 
119 / 12 (1) ++
Регистрация: 31.03.2003
Адрес: Москва
Цитата:
Сообщение от mazzy
Просто делайте модификации корректно. Если уж начали их делать.
Дело в том, что модификации были сделаны в 2.5 и там переход работал. А сейчас мы перешли на 3.0 SP4, и работать перестало
Старый 24.05.2006, 11:17   #13  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от akvi
Перехожу, конечно же, по коду
Еще одно.
Если ваш код содержит специальные символы .,?*"\ или пробел, то такой код нужно экранировать при передаче в range.

Используйте SysQuery::Value() чтобы гарантировано экранировать спец.символы.
Посмотрите этот метод, чтобы разобраться что и как экранируется.
__________________
полезное на axForum, github, vk, coub.
Старый 24.05.2006, 14:59   #14  
AxPr-r is offline
AxPr-r
Участник
Axapta Retail User
 
44 / 11 (1) +
Регистрация: 13.03.2006
Цитата:
Сообщение от AndyD
При таком подходе, если справочник номенклатур большой, то ждать разультата придется долго.
да, согласен, но справочник к которому это было "прикручено" содержал порядка 2-3 тыс. записей, поэтому "тормозов" не было
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Переход к основной таблице maze DAX: Функционал 9 04.07.2007 16:18
Переход к основной таблице договоров KolesOlya DAX: Программирование 12 11.04.2007 10:28
Переход на правильную запись при Переходе к основной таблице. - 2 Anais DAX: Программирование 2 01.11.2004 17:14
Переход к основной таблице в Ax3 Wamr DAX: Программирование 0 03.08.2004 17:58
Переход на правильную запись при Переходе к основной таблице. Anais DAX: Программирование 11 29.06.2004 19:16
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

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

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

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