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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.11.2010, 16:06   #1  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Найти класс отображающий расшифровку номенклатуры
Здравствуйте уважаемые !!

Подскажите пожалуйста какой класс работает при отображинии название номеклатуры, когда номер выделеляется мышкой.

Заранее благодарен.
__________________
Александр
Старый 23.11.2010, 16:15   #2  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
выплывающие подскзаки?
За это сообщение автора поблагодарили: tolstjak (1).
Старый 23.11.2010, 17:04   #3  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Немного не то.
Хотелось использовать эту подсказку в отчете. Как это можно сделать?
__________________
Александр
Старый 23.11.2010, 19:11   #4  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Хотелось использовать эту подсказку в отчете. Как это можно сделать?
Если текст подсказки, то через toolTipRecord() достается
X++:
{
    InventTable inventTable;
    ;
    select firstonly inventTable;
    box::info( inventTable.toolTipRecord() );
}
За это сообщение автора поблагодарили: tolstjak (1), S.Kuskov (2).
Старый 24.11.2010, 08:18   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,438 / 1775 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Хотелось использовать эту подсказку в отчете.
Какое-то странное у вас требование к отчёту. Неужели нужно показыват именно текст всплывающей подсказки? Сомневаюсь, что требование звучит именно так. Скорее необходимо показывать информацию, которая именно на данный момент совпадает с текстом подсказки. Представьте что какие-то модификации или переход на следующую версию изменят алгоритм отображения подсказки. Как должен вести себя ваш отчёт?
Старый 24.11.2010, 10:41   #6  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
Какое-то странное у вас требование к отчёту. Неужели нужно показыват именно текст всплывающей подсказки? Сомневаюсь, что требование звучит именно так. Скорее необходимо показывать информацию, которая именно на данный момент совпадает с текстом подсказки. Представьте что какие-то модификации или переход на следующую версию изменят алгоритм отображения подсказки. Как должен вести себя ваш отчёт?
Прошу прощения, но требование к отчету нормальные. А подход к его формированию следующий: чем меньше кода написано. тем лучше. Если можно использовать уже имеющееся в системе, это надо делать. А пример с номенклатуром, может быть не совсем удачным. Посмотрите на подсказку на форме проводок номенклатурного справочника, когда курсор подводите с полю в столбце Код. Хотя надо признать, что этот метод (toolTipRecord() ) хорош, но в данном отчете не пригодился. Клиентам как всегда захотелось увидеть больше....
__________________
Александр
Старый 24.11.2010, 12:19   #7  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
А подход к его формированию следующий: чем меньше кода написано. тем лучше.
Мне кажется, это не совсем тот случай, когда надо экономить на коде. Ведь текст toolTipRecord может быть легко воспроизведен с помощью несложного шаблона для функции strFmt:
X++:
{
    InventTable inventTable;
    ;
    select firstonly inventTable;
    info( inventTable.toolTipRecord());
    info( strFmt('Номенклатура: %1, %2', inventTable.ItemId, inventTable.ItemName));
}
Т.е. для включения в отчет эквивалентной информации имеем два обращения к табличной переменной (inventTable.ItemId, inventTable.ItemName) вместо одного (inventTable.toolTipRecord). Не думаю, что это стоить считать лишним кодом. Зато два поля вы можете поместить в разные поля отчета, сделав его гораздо гибче, чем всё в одном "флаконе", к тому же с избыточным словом "Номенклатура"...
За это сообщение автора поблагодарили: Poleax (1).
Старый 24.11.2010, 16:44   #8  
tolstjak is offline
tolstjak
Участник
 
440 / 16 (1) ++
Регистрация: 05.01.2003
Цитата:
Сообщение от Gustav Посмотреть сообщение
Мне кажется, это не совсем тот случай, когда надо экономить на коде. ..... Зато два поля вы можете поместить в разные поля отчета, сделав его гораздо гибче, чем всё в одном "флаконе", к тому же с избыточным словом "Номенклатура"...
Возможно Вы правы, но взгляните на подсказку на форме проводок номенклатурного справочника, там такого кода без использования tool..... будет значительно больше. И разумеется я никому не навязываю свое мнение.
__________________
Александр
За это сообщение автора поблагодарили: Gustav (2).
Старый 24.11.2010, 20:11   #9  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от tolstjak Посмотреть сообщение
Посмотрите на подсказку на форме проводок номенклатурного справочника, когда курсор подводите с полю в столбце Код.
Цитата:
Сообщение от tolstjak Посмотреть сообщение
...там такого кода без использования tool..... будет значительно больше
Взглянул. Интересно, спасибо. Не понял, как делается - в super toolTip'а не пустили, а также как этим можно просто воспользоваться, например, в отчете? Не из формы же читать всякий раз... Хотя чисто технически возможно:
X++:
static void Job_ToolTipViaFormControl(Args _args)
{
    Args            args;
    FormRun         formRun;
    InventTrans     inventTrans;
    ;

    inventTrans.clear();

    // последовательно раскомментируем записи по одной и позапускаем
    select firstonly inventTrans where inventTrans.TransType == InventTransType::Purch;
    //select firstonly inventTrans where inventTrans.TransType == InventTransType::InventTransaction;
    //select firstonly inventTrans where inventTrans.TransType == InventTransType::InventTransfer;

    args = new Args(formstr(InventTrans));
    args.record(inventTrans);

    formRun = classFactory.formRunClass(args);
    formRun.init();
    //formRun.design().visible(false);  // раскомментируй для невидимости формы
    formRun.run();

    box::info(formRun.design().controlName('InventTrans_TransRefId').toolTip());

    formRun.wait();     // ЗАкомментируй для невидимости формы
    //formRun.close();  // раскомментируй для невидимости формы
}
Попробовал исполнить по аналогии - что-то получилось, привожу ниже. В switch прописал только те типы движения, которые встречаются у нас в системе. При желании список легко расширяется.
X++:
static void Job_ToolTipImitation(Args _args)
{
    // имитация текста всплывающей подсказки на поле Код в форме складских проводок

    InventTrans inventTrans;
    Common      common;
    str         ourToolTipText;
    DictTable   dictTable;
    ;

    // последовательно раскомментируем записи по одной и позапускаем
    select firstonly inventTrans where inventTrans.TransType == InventTransType::Purch;
    //select firstonly inventTrans where inventTrans.TransType == InventTransType::InventTransaction;
    //select firstonly inventTrans where inventTrans.TransType == InventTransType::InventTransfer;

    switch (inventTrans.TransType)
    {
        case InventTransType::Purch : // Закупка
            common = PurchTable::find(inventTrans.TransRefId);
            break;

        case InventTransType::InventTransaction : // Проводка
        case InventTransType::InventTransfer    : // Перенос
            common = InventJournalTable::find(inventTrans.TransRefId);
            break;

        default:
            box::stop('Непредусмотренный случай.');
            return;
    }

    // создадим через strFmt нашу собственную подсказку
    dictTable = new DictTable(common.TableId);
    ourToolTipText = strFmt('%1: %2, %3',
                        new DictField(common.TableId, dictTable.titleField1()).label(), // Закупка   // Журнал
                        common.(dictTable.titleField1()),                               // PurchId   // JournalId
                        common.(dictTable.titleField2()));                              // PurchName // Description

    // для сравнения отобразим обе версии подсказки друг под другом
    box::info(strFmt('%1\n%2', common.toolTipRecord(),  // фирменная
                               ourToolTipText ));       // самопальная
В общем, кода - не смертельное количество. Хотя и не 2 строки
Старый 24.11.2010, 20:46   #10  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2479 (88) +++++++++
Регистрация: 20.08.2005
Цитата:
Сообщение от Gustav Посмотреть сообщение
Взглянул. Интересно, спасибо. Не понял, как делается - в super toolTip'а не пустили, а также как этим можно просто воспользоваться, например, в отчете? Не из формы же читать всякий раз... Хотя чисто технически возможно:
Не надо так сложно
Есть метод ToolTipField()
X++:
...
select firstonly inventTrans where inventTrans.TransType == InventTransType::Purch;
info(inventTrans.ToolTipField(fieldNum(InventTrans, TransRefId)));
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: Gustav (6).
Старый 24.11.2010, 21:06   #11  
Gustav is offline
Gustav
Moderator
Аватар для Gustav
SAP
Лучший по профессии 2009
 
1,858 / 1152 (42) ++++++++
Регистрация: 24.01.2006
Адрес: Санкт-Петербург
Записей в блоге: 19
Цитата:
Сообщение от AndyD Посмотреть сообщение
Не надо так сложно
Есть метод ToolTipField()
X++:
...
select firstonly inventTrans where inventTrans.TransType == InventTransType::Purch;
info(inventTrans.ToolTipField(fieldNum(InventTrans, TransRefId)));
Да уж...И в этом случае tolstjak абсолютно прав, и проще разобрать на две колонки текст столь легко полученного toolTip'а, чем сначала определять, из какой же таблицы надо получить 2 поля...
В общем, I'm impressed!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Планирование номенклатуры с типом Основное средство AlexeyBP DAX: Функционал 19 29.01.2009 07:42
класс InventSumDateValueReportDim Физические запасы? Poleax DAX: Программирование 12 01.07.2008 15:27
Проблема с передачей контролов из формы в класс matew DAX: Программирование 0 28.04.2008 17:37
Не могу изменить название номенклатуры slava09 DAX: Функционал 14 21.03.2007 18:01
Конфигуратор продуции - создание новой номенклатуры против создания новой конфигураци OliaM DAX: Функционал 6 15.04.2005 20:11

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

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

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