записки, в которые можно заглянуть, когда понадобится
Копирование полей из шапки в строки
Много по этой теме писалось (например).
Есть парочка замечаний как упростить процесс:
1. Класс PurchTable2LineField
метод lineUpdateDescription
в секцию switch-default добавить код, который отработает для любого нового поля, чтобы не плодить ветвления каждый раз
2. Таблица PurchTable2LineParameters
изменить метод initiate, добавив параметр для принудительной инициализации
3. Класс PurchTable2LineParametersForm
в методе initPurchTable2LineParameterFields использовать добавленный параметр для инициализации.
После этих исправлений любое новое поле из группы Table2LineField будет появляться в форме настроек без лишних телодвижений.
Остается только:
4. Для добавления parm&set методов в AxBC классы можно использовать джобик
После чего в созданных set-методах строк документа надо добавить кусочек
Есть парочка замечаний как упростить процесс:
1. Класс PurchTable2LineField
метод lineUpdateDescription
в секцию switch-default добавить код, который отработает для любого нового поля, чтобы не плодить ветвления каждый раз
X++:
default: lineUpdateDescription = fieldid2pname(tablenum(PurchTable), fieldExt2Id(this.fieldId())); if(! lineUpdateDescription) throw error(strfmt("@SYS19306",funcname()));
изменить метод 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; } }
в методе initPurchTable2LineParameterFields использовать добавленный параметр для инициализации.
После этих исправлений любое новое поле из группы Table2LineField будет появляться в форме настроек без лишних телодвижений.
Остается только:
4. Для добавления parm&set методов в AxBC классы можно использовать джобик
X++:
AxGenerateAxBCClass axGenerateAxBCClass;
;
axGenerateAxBCClass = AxGenerateAxBCClass::newTableId(tableNum(PurchTable));
axGenerateAxBCClass.run();
X++:
this.setAxPurchTableFields(); if (this.isAxPurchTableFieldsSet() || this.axPurchTable().isFieldModified(fieldnum(PurchTable, <>))) { this.parm<>(this.axPurchTable().parm<>()); }
Всего комментариев 0