Показать сообщение отдельно
Старый 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 строки