AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.08.2013, 09:11   #1  
kazpiez is offline
kazpiez
Участник
 
11 / 10 (1) +
Регистрация: 05.08.2013
Создание шаблона номенклатуры
Здравствуйте уважаемые участники форума!

Столкнулся с задачей: При создании шаблона номенклатуры(шаблон пользователя) появляется форма которая имеет два поля "Наименование" и "Описание" необходимо чтобы в поле "Наименование" подтягивалось имя номенклатуры.
Суть проблемы: Не могу из формы 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  
online
Pustik
Участник
 
807 / 372 (14) ++++++
Регистрация: 04.06.2004
Самое простое что пришло в голову :
класс 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;
}
класс SysRecordTemplateStorage метод promptOnCreate :
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 ['',''];
}
класс SysRecordTemplateStorage :
метод 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
}
метод dialog
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;
}
форма SysRecordTemplatePromptOnCreate
создать метод
X++:
void setDescription(SysRecordTemplateDescription  _description)
{
    ;
    Description.text(_description);
}
Это так на скорую руку.
__________________
-Ты в гномиков веришь?
-Нет.
-А они в тебя верят, смотри, не подведи их.

Последний раз редактировалось Pustik; 16.08.2013 в 11:30.
Старый 16.08.2013, 10:32   #3  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Можно как-то так:

Класс 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;
}
Класс SysRecordTemplateStorage:
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 ['',''];
}
Класс SysRecordTemplatePromptOnCreate:
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;
}
// }
В форме SysRecordTemplatePromptOnCreate создать метод:
X++:
// Добавить {
public void setDescription(SysRecordTemplateDetails _details)
{
    ;
    description.text(_details);
}
// }

Последний раз редактировалось ansoft; 16.08.2013 в 10:44.
Старый 16.08.2013, 12:15   #4  
kazpiez is offline
kazpiez
Участник
 
11 / 10 (1) +
Регистрация: 05.08.2013
Огромное спасибо!!!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
axforum blogs: О заполнении Наименования и Кода номенклатуры в печатной форме Накладной (Ax2009 ru7) Blog bot DAX Blogs 0 07.06.2011 09:11
Создание номенклатуры с использ. axInventTable класса. Можно ли запретить использование шаблонов записей? Hub DAX: Программирование 2 03.09.2008 15:12
создание номенклатуры АКС DAX: Функционал 10 28.11.2007 13:02
Конфигуратор продуции - создание новой номенклатуры против создания новой конфигураци OliaM DAX: Функционал 6 15.04.2005 20:11
Создание нескольких экземпляров Word на основе шаблона axaLearner DAX: Программирование 5 03.01.2005 16:12
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

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