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). |
29.07.2008, 09:37 | #2 |
Участник
|
Если уж идти до конца, то пропущено добавление в метод setTableFields класса AxXXXTable вызова нового метода установки:
this.setNewField(); И, насколько я помню, метод должен называться не NewField, а parmNewField |
|
29.07.2008, 10:12 | #3 |
Участник
|
Вообще для генерации AIF объектов есть визард - я не уверен, что он может добавлять в существующие классы, но, по крайней мере, можно посмотреть его код или даже доработать
|
|
29.07.2008, 21:59 | #4 |
китайский стажер
|
|
|
29.07.2008, 22:01 | #5 |
китайский стажер
|
Цитата:
4.3 Adjust the method SetTableFields() in the axSalesLine class. Add the call of the new method NewField(). |
|
04.02.2009, 17:12 | #6 |
:o)
|
вопрос:
если я хочу синхронизировать просто обновление полей в строках в зависимости от "шапки", то как будет "красивее/правильнее"? выполнить пункт 3 или добавить метод на форме и вызвать его в modified + маленький подвопрос (сейчас реализовала с методом на форме) обновление поля происходит только после перехода на любое др. поле или нажатия Ctrl+S - это нормально или всё же надо где-то чего-то дописать?
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
04.02.2009, 17:23 | #7 |
:o)
|
Цитата:
Сообщение от jeky
вопрос:
если я хочу синхронизировать просто обновление полей в строках в зависимости от "шапки", то как будет "красивее/правильнее"? выполнить пункт 3 или добавить метод на форме и вызвать его в modified + маленький подвопрос (сейчас реализовала с методом на форме) обновление поля происходит только после перехода на любое др. поле или нажатия Ctrl+S - это нормально или всё же надо где-то чего-то дописать?
__________________
"Только на Бога не может быть обиды - если смерть пошлет, значит, жизни пришел предел, на то рождался,- а за все остальное на Земле есть и должен быть спрос!." Чингиз Торекулович Айтматов. |
|
Теги |
aif, документация, заказ на продажу, как правильно, программно |
|
|