16.08.2013, 09:11 | #1 |
Участник
|
Создание шаблона номенклатуры
Здравствуйте уважаемые участники форума!
Столкнулся с задачей: При создании шаблона номенклатуры(шаблон пользователя) появляется форма которая имеет два поля "Наименование" и "Описание" необходимо чтобы в поле "Наименование" подтягивалось имя номенклатуры. Суть проблемы: Не могу из формы SysRecordInfo передать ItemId в класс SysRecordTemplatePromptOnCreate. Версия системы: Microsoft Dynamics AX 2009 Kernel version: 5.0.1500.6491 Application version: 5.0.1500.3761 Localization version: Eastern Europe Solution Version : RU HRP 5.0.1500.2116.1 |
|
16.08.2013, 10:27 | #2 |
Участник
|
Самое простое что пришло в голову :
класс SysRecordTemplateStorageUser метод set : X++: public Common set() { ListEnumerator enumerator = list.getEnumerator(); ; // добавим if (enumerator.moveNext()) common = enumerator.current(); enumerator.reset(); if (!description) // передадим common [description,details] = this.promptOnCreate(common); if (description) { enumerator.moveNext(); common = enumerator.current(); xSysLastValue::getLast(this); this.validateDescription(description, value); value += [[description, false, this.packList(),details]]; xSysLastValue::saveLast(this); } return null; } X++: protected container promptOnCreate(common _common = null) { SysRecordTemplatePromptOnCreate dialog1 = new SysRecordTemplatePromptOnCreate(); ; // добавим // передадим ItemName if (_common && _common.TableId == tableNum(InventTable)) { dialog1.setDescription(common.(fieldNum(InventTable, ItemName))); } if (dialog1.prompt()) { dialog1.getFromDialog(); return [dialog1.getDescription(), dialog1.getDetails()]; } return ['','']; } метод ClassDeclaration: X++: // This is a framework class. Customizing this class may cause problems with future upgrades to the software. class SysRecordTemplatePromptOnCreate extends RunBase { // здесь сделаем так //FormRun dialogForm; Object dialogForm; SysRecordTemplateDescription description; SysRecordTemplateDetails details; #define.CurrentVersion(1) #localmacro.CurrentList description, details #endmacro } X++: public Object dialog() { Args args = new Args(formstr(SysRecordTemplatePromptOnCreate)); ; dialogForm = classfactory.formRunClass(args); dialogForm.init(); // передадим в форму ItemName dialogForm.setDescription(description); return dialogForm; } X++: void setDescription(SysRecordTemplateDescription _description)
{
;
description = _description;
} создать метод X++: void setDescription(SysRecordTemplateDescription _description)
{
;
Description.text(_description);
}
__________________
-Ты в гномиков веришь? -Нет. -А они в тебя верят, смотри, не подведи их. Последний раз редактировалось Pustik; 16.08.2013 в 11:30. |
|
16.08.2013, 10:32 | #3 |
Участник
|
Можно как-то так:
Класс SysRecordTemplateStorageUser: X++: public Common set() { ListEnumerator enumerator = list.getEnumerator(); ; // Добавить { if (enumerator.moveNext()) common = enumerator.current(); else common = null; enumerator.reset(); // } if (!description) [description,details] = this.promptOnCreate(common); // добавить common if (description) { enumerator.moveNext(); common = enumerator.current(); xSysLastValue::getLast(this); this.validateDescription(description, value); value += [[description, false, this.packList(),details]]; xSysLastValue::saveLast(this); } return null; } X++: protected container promptOnCreate(common _common = null) // Добавить (common _common = null) { SysRecordTemplatePromptOnCreate dialog1 = new SysRecordTemplatePromptOnCreate(); ; // Добавить { if (_common && _common.TableId == tableNum(InventTable)) dialog1.setDescription(_common.(fieldNum(InventTable, ItemName))); // } if (dialog1.prompt()) { dialog1.getFromDialog(); return [dialog1.getDescription(), dialog1.getDetails()]; } return ['','']; } X++: public Object dialog() { Args args = new Args(formstr(SysRecordTemplatePromptOnCreate)); Object objForm; ; dialogForm = classfactory.formRunClass(args); dialogForm.init(); // Добавить { if (description) { objForm = dialogForm; objForm.setDescription(description); } // } return dialogForm; } X++: // Добавить { public void setDescription(SysRecordTemplateDescription _description) { ; description = _description; } // } X++: // Добавить { public void setDescription(SysRecordTemplateDetails _details) { ; description.text(_details); } // } Последний раз редактировалось ansoft; 16.08.2013 в 10:44. |
|
16.08.2013, 12:15 | #4 |
Участник
|
Огромное спасибо!!!
|
|
|
|