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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.07.2007, 19:33   #6  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от blokva Посмотреть сообщение
Бывали таки моменты, когда напрмер некорректно грузились справочники, например спецификации, конфигурации и т.д. в другую базу, например из рабочей базы, в тестовую, при этом "забывали" обновить и номенклатурный справочник!
При попытке перейти из строки спецификации по номенклатуре, которой нет в справочнике, переход осуществлялся, но выбирала первуюопавшуюся!
Возможно, конкретно maze не помогу, но тем не менее позвольте запоститься тоже.

У нас были такие случаи пользовательского недовольства. В таблице "Номера серий/лотов" существует запись с инв.номером ОС, которого нет в справочнике основных средств (ну, бывают и такие "издержки"). При попытке перейти по правой кнопке мышки в меню "Перейти к основной таблице" из поля "Инв. номер ОС" переход осуществляется в таблицу "Основные средства", но не на этот несуществующий код ОС , а на следующий существующий в этой таблице. Причем, коды ОС могут отличаться лишь в последнем знаке, и пользователь, наметивший конкретное действие для несуществующего ОСа, не обратив внимания, начинает осуществлять это действие совсем с другим ОС.

Покумекав, сваял такое нехитрое перекрытие для jumpRef поля "Инв.номер ОС" формы "Номера серий/лотов" (\Forms\InventSerial\Data Sources\InventSerial\Fields\RassetId\Methods\jumpRef):
X++:
public void jumpRef()
{
    Args args;
    FormRun formRun;
    RAssetTable assetTable;
    ;

    select assetTable where assetTable.AccountNum == element.design().controlName('Add_RassetId').valueStr();

    args = new Args(formstr(RAssetTable));

    if (assetTable)
    {
        args.lookupField(fieldNum(RAssetTable, AccountNum));
        args.lookupValue(assetTable.AccountNum);
    }
    else
    {
        box::warning('В основной таблице отсутствует значение, на которое можно было бы перейти!','Нет совпадения');
        args.record(assetTable); // будет пустая форма
    }

    formRun = classFactory.formRunClass(args);

    formRun.init();
    formRun.run();
    formRun.detach();

    //super();
}
Т.е. если запись существует, то позиционируемся на нее, а если нет, то предъявляется пустая форма, как индикатор отсутствия записи. Пользователи удовлетворены (в этом конкретном случае).

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

P.S. Еще на заметку по теме (и для себя тоже):
JumpRef в диалоге
Спозиционироваться на запись
Как реализовать опцию Go to the Main Table

Последний раз редактировалось Gustav; 04.07.2007 в 09:27. Причина: добавил ссылки
Теги
ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Переход к основной таблице договоров KolesOlya DAX: Программирование 12 11.04.2007 10:28
Как реализован переход к основной таблице как в общем журнале petr DAX: Программирование 4 15.09.2005 19:00
Переход на правильную запись при Переходе к основной таблице. - 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, время: 08:52.