29.07.2008, 01:12 | #1 |
китайский стажер
|
Добавление новых строк в SalesLine
Пришлось написать коротенькую шпаргалку, у которой две цели:
1) При добавлении новых полей в SalesLine и SalesTable поддерживать стандартный механизм обновления строк из заголовка. 2) Поддерживать обновление новых полей при работе с AIF. Не думаю, что это великие знания, но может кому-нибудь полезно будет, раз мне это было полезно. Собрано из двух статей: - (http://www.fotovallescrivia.it/publi...rder-lines.htm - http://axapta.mazzy.ru/lib/salestable2line/ На английском 1. Add new fields to SalesTable and place new fields which should be updated in SalesLine to group HeaderToLineUpdate. 2. Add new fields to SalesLine. 3 How to use standard mechanism to update fields in Salesline from Salestable 3.1 SalesTable2LineField class, modify the LineUpdateDescription() method. Add the new fields from SalesTable you want to copy to SalesLines. SalesTable2LineField::lineDescription(). The text line will be used in the dialog for lines updating. eg: X++: case fieldnum(salesTable, NewField) : return fieldid2pName(tableNum(SalesLine), fieldnum(salesLine, NewField)); break; 3.3 Add instructions into method SalesLineType::initFromSalesTable() to initialize values in order lines used by default. The method will be called when you create a new line. 4. Next for AIF: 4.1 AxSalesTable class: Add a parameter set and get method eg: X++: public NewField NewField (NewField _NewField = Value) { if (!prmisdefault(_NewField )) { this.setField(fieldNum(SalesTable, NewField ), _NewField ); } return SalesTable.NewField ; } X++: protected void setNewField () { if (this.isMethodExecuted(funcName())) { return; } if (this.isFieldSetExternally(fieldNum(SalesTable, NewField ))) { if (this.isSetMethodsCalledFromSave()) { return; } } else { if (this.isFieldSet(fieldNum(SalesTable, NewField ))) { return; } if (!this.NewField ()) { if (this.isSetMethodsCalledFromSave()) { this.NewField (Value); } } } } 4.2 Do the same for class axSalesLine: eg: X++: public NewField NewField(NewField _NewField= Value) { if (!prmisdefault(_NewField)) { this.setField(fieldNum(SalesLine, NewField), _NewField); } return salesLine.NewField; } X++: protected void SetNewField() { if (this.isMethodExecuted(funcName(), fieldNum(SalesLine, NewField))) { return; } this.setAxSalesTableFields(); if (this.isAxSalesTableFieldsSet() || this.AxSalesTable().isFieldModified(fieldNum(SalesTable, NewField))) { this.NewField(this.AxSalesTable().NewField()); } } |
|
|
За это сообщение автора поблагодарили: Logger (1), jeky (1). |
Теги |
aif, документация, заказ на продажу, как правильно, программно |
|
|