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

записки, в которые можно заглянуть, когда понадобится
Оценить эту запись

Копирование полей из шапки в строки

Запись от Wamr размещена 26.02.2010 в 19:21
Обновил(-а) Wamr 26.02.2010 в 19:27

Много по этой теме писалось (например).

Есть парочка замечаний как упростить процесс:

1. Класс PurchTable2LineField
метод lineUpdateDescription
в секцию switch-default добавить код, который отработает для любого нового поля, чтобы не плодить ветвления каждый раз
X++:
        default:
            lineUpdateDescription =  fieldid2pname(tablenum(PurchTable), fieldExt2Id(this.fieldId()));
            if(! lineUpdateDescription)
                throw error(strfmt("@SYS19306",funcname()));
2. Таблица PurchTable2LineParameters
изменить метод initiate, добавив параметр для принудительной инициализации
X++:
server static void initiate(boolean _force = false)
{
    PurchTable2LineParameters   purchTable2LineParameters;
    container                   header2LineFieldIds;
    int                         pos = 1;

    if (_force || !PurchTable2LineParameters::initiated())
    {
        header2LineFieldIds = PurchTable2LineParameters::header2LineFieldIdList();

        ttsbegin;

        while (pos <= conlen(header2LineFieldIds))
        {
            if(! PurchTable2LineParameters::find(conpeek(header2LineFieldIds, pos)))
            {
                purchTable2LineParameters.clear();
                purchTable2LineParameters.initValue();
                purchTable2LineParameters.FieldId           = conpeek(header2LineFieldIds, pos);
                purchTable2LineParameters.Table2LineUpdate  = TradeTable2LineUpdate::Prompt;
                purchTable2LineParameters.insert();
            }
            pos++;
        }

        ttscommit;
    }
}
3. Класс PurchTable2LineParametersForm
в методе initPurchTable2LineParameterFields использовать добавленный параметр для инициализации.

После этих исправлений любое новое поле из группы Table2LineField будет появляться в форме настроек без лишних телодвижений.

Остается только:
4. Для добавления parm&set методов в AxBC классы можно использовать джобик
X++:
    AxGenerateAxBCClass     axGenerateAxBCClass;
    ;
    
    axGenerateAxBCClass = AxGenerateAxBCClass::newTableId(tableNum(PurchTable));
    axGenerateAxBCClass.run();
После чего в созданных set-методах строк документа надо добавить кусочек
X++:
    this.setAxPurchTableFields();

    if (this.isAxPurchTableFieldsSet() || this.axPurchTable().isFieldModified(fieldnum(PurchTable, <>)))
    {
        this.parm<>(this.axPurchTable().parm<>());
    }
Размещено в Без категории
Просмотров 50449 Комментарии 0
Всего комментариев 0

Комментарии

 


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