AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: База знаний и проекты
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 01.03.2007, 09:36   #1  
slava ist offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Registriert seit: 28.12.2001
Ort: Москва
Фильтр на DataSource из clipBoard
В копилку "бесполезного"

Задача: множество отчетов, данные выкидываются в excel. Соответственно, иногда необходимо найти запись в справочнике Аксапты, по коду. Копируем ячейку с кодом, лезем в аксапту, открываем форму справочника, фильтруемся...
Вот, что бы убрать это "фильтруемся", и предлагаю следующий код (в нем ничего сложного):
X++:
void buf2range(FormDataSource     _formDS)
{
    TextBuffer          textBuffer = new TextBuffer();
    DictTable           dictTable;
    SysDictField        dictField;
    Common              common;
    QueryBuildRange     queryBuildRange;
    ;
    if (_formDS     &&
        WinAPI::isControlButtonDown())      // можно убрать "только при нажатом Ctrl".
    {
        textBuffer.fromClipboard();

        dictTable       = new DictTable(_formDS.cursor().TableId);

        if (dictTable.isMap()   ||
            dictTable.isView()  ||
          ! dictTable.primaryKeyField())
            break;

        dictField       = new SysDictField(dictTable.id(),
                                           dictTable.primaryKeyField());
        if ((dictField.baseType()   == Types::String    ||
             dictField.baseType()   == Types::RString)  &&
             dictField.fieldSize()  >= textBuffer.size())
        {
            common      = dictTable.makeRecord();

            select recId from common
                        where common.(dictField.id())  == textBuffer.getText();

            if (common)
            {
                queryBuildRange = SysQuery::findOrCreateRange(_formDS.query().dataSourceNo(_formDS.query().levelTable(dictTable.id())),
                                                              dictField.id());

                if (queryBuildRange && ! queryBuildRange.value())
                    queryBuildRange.value(queryValue(textBuffer.getText()));
            }
        }
    }
}
Метод можно поместить в класс SysSetupFormRun, и вызывать из метода init() этого класса:
X++:
public void init()
{
    ;
    super();
    SysSecurityFormSetup::loadSecurity(this);

    // --> Slava, 01/02-07 /*  */
    if (this.objectSet())
        this.AA_process(this.objectSet());
    // <-- Slava, 01/02-07
}
__________________
С уважением, Вячеслав.
 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Динамическое создание DataSource на форме, и добавление элементов дизайна. epack DAX: Программирование 12 24.11.2010 15:31
Обновление таблицы в DataSource при ее изменении Андре DAX: База знаний и проекты 7 22.04.2008 13:16
Два DataSource на одну временную таблицу mou DAX: Программирование 4 22.03.2008 11:00
Заполнение DataSource из постоянной и временной таблиц m_ax DAX: Программирование 2 21.06.2007 13:08
Грид и поле в строке, не связанное с DataSource NataLee DAX: Программирование 2 26.01.2004 17:02

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 18:53 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.