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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.01.2004, 18:36   #1  
AndSoft is offline
AndSoft
Участник
 
135 / 12 (1) ++
Регистрация: 22.05.2003
Адрес: Москва
Thumbs up Многоуровневый справочник
Недавно я убил немного времени чтобы создать многоуровневый справочник в Аксапта. Причем решение работает на MsSQL2000 и не используется рекурсия.
В группе дерева отображаются как элементы самой группы так и элементы вложенной подветви.Что у меня получилось можно посмотреть на вложенном скрин шоте. Если что обращайтесь.
Изображения
 
Старый 19.02.2007, 16:22   #2  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
кстати про controlMethodOverloadObject.

можно ли использовать более одного обхекта обработчика одновременно (у меня не получилось)
Старый 19.02.2007, 16:52   #3  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от belugin Посмотреть сообщение
кстати про controlMethodOverloadObject.

можно ли использовать более одного обхекта обработчика одновременно (у меня не получилось)
controlMethodOverloadObject это метод класса FormRun, поэтому у каждого его наследника может быть свой обработчик. Я делал у нескольких форм разные обработчики. Что касается моего классификатора, то если у формы уже был обработчик controlMethodOverloadObject, а я заменяю его своим, то естейственно первый обработчик действовать не будет. Я не нашел в Аксапте форм, которые используют controlMethodOverloadObject, поэтому это не существенно.
Старый 19.02.2007, 17:27   #4  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
Цитата:
Сообщение от Lucky13 Посмотреть сообщение
Я не нашел в Аксапте форм, которые используют controlMethodOverloadObject, поэтому это не существенно.
SysDataAreaVirtual, например. Правда в ней вряд ли классификатор Ваш будет использоваться.
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 20.02.2007, 10:15   #5  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от Maxim Gorbunov Посмотреть сообщение
SysDataAreaVirtual, например. Правда в ней вряд ли классификатор Ваш будет использоваться.
А как Вы определили, что на этой форме используется controlMethodOverloadObject? В ней нет вызовов this.controlMethodOverloadObject().
Старый 20.02.2007, 10:40   #6  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
\Forms\SysDataAreaVirtual
X++:
class FormRun extends ObjectRun
{
    // ...
    SysListPanelRelationTable   listPanel1;
    // ...
}

void init()
{
    // ...
    listPanel1 = sysListPanelRelationTable::newForm(element, ... );
    // ....
}
\Classes\SysListPanelRelationTable
X++:
static SysListPanelRelationTable newForm(FormRun formRun, ... )
{
    // ...
    SysListPanelRelationTable SysListPanel = SysListPanelRelationTable::construct();
    // ...
    SysListPanel.parmFormRun(formRun);
    // ...
    SysListPanel.build();
    // ...
}
\Classes\SysListPanel
X++:
protected void build()
{
    // ...
    formRun.controlMethodOverload(true);

    if (!formRun.controlMethodOverloadObject())
        formRun.controlMethodOverloadObject(this);
    // ...
}
Короче говоря, не только в формах надо было искать, но и в классах. Этот метод используется как минимум во всех формах, где есть контрол следующего вида:

То есть два списка, в одном из которых перечислены выбранные элементы, а в другом - оставшиеся.
Изображения
 
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 20.02.2007, 12:11   #7  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Вы правы. Я не увидел, где formRun передается в класс. Оказывается вместо него element, что одно и тоже
X++:
listPanel1 = sysListPanelRelationTable::newForm(element, ... );
Мой классификатор встраивается только на формы, где есть хотя бы один источник и есть Tab с вкладкой Overview (Обзор), поэтому даже если пользователь захочте использовать классификатор на выше указанной форме, то ничего не изменится.
Старый 21.02.2007, 14:27   #8  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Многоуровневый классификатор
Внимание!!! Проект содержит системный класс SysSetupFormRun. Будьте внимательны при импорте.

Краткое руководство по настройке классификатора:
1. Указать список форм, на которых будет использоваться классификатор на форме AbstractClassSetup.
2. Создать уровни классификатора на форме AbstractClassTree. Для этого необходимо выбрать форму, на вкладке обзор создать корневой уровень классификатора, а затем добавить остальные уровни на вкладке дерево.
3. Указать какие записи принадлежат каким классам, нажав кнопку "Открыть" на форме AbstractClassTree. После этого выделить требуемые записи и нажать кнопку "Добавить".
4. Чтобы выводилась информация о том, каким уровням пренадлежит запись необходимо в метод active источника добавить следующий код: (например, для InventTable)
X++:
AbstractClass::loadItemClassName(element.design().controlName('AbstractClassList'), TableNum(InventTable), inventTable.RecId);
другого способа, к сожалению, пока не нашел.

Принимаются любые замечания и пожелания.
А также идеи по поводу того, как избавиться от последней модификации формы (добавление кода в метод active).
Вложения
Тип файла: xpo MultiLevelClass.xpo (133.7 Кб, 353 просмотров)

Последний раз редактировалось Lucky13; 21.02.2007 в 15:19.
За это сообщение автора поблагодарили: raz (6).
Старый 21.02.2007, 17:46   #9  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Попробовал загрузить в 4-ку
Отругалось:

Ошибка времени выполнения: В SysSetupFormRun (Объект), не найден исполнимый код метода "new".

Трассировка стека

(C)\Classes\SysSetupFormRun\new
(C)\Classes\SysSetupFormRun\construct - line 13
(C)\Classes\ClassFactory\formRunClassOnClient - line 5
(C)\Classes\ClassFactory\FormRunClass - line 3
(C)\Classes\HelpGenerator\showURL
(C)\Forms\SysInfologBrowser\Methods\executeAction - line 20
__________________
С уважением Шатохин Святослав.
Старый 22.02.2007, 09:09   #10  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Не факт что в 4-ке класс SysSetupFormRun остался таким же как в 3.0. Если Вы просто загрузили проект, то возможны ошибки. Лучше взять код, добавленный мной в метод init данного класса (он отмечен) и добавить его в аналогичный метод в 4-ке. Ну и соответственно объявить все недостающие переменные. Если Вы именно так и сделали, то даже не знаю что посоветовать. Метод new не изменялся, менялся только init. В какой строке выдается ошибка?
Старый 22.02.2007, 13:22   #11  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Мне нехватает следующих функций:

1. strdelRight;
2. strleftpos;

Можно их выложить?

С SysSetupFormRun разобрался.
Еще проблемы с методом Icon: не может найти идентификатор ресурса: 827. Пока подставил 0.
__________________
С уважением Шатохин Святослав.

Последний раз редактировалось slava09; 22.02.2007 в 13:28.
Старый 22.02.2007, 13:43   #12  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от slava09 Посмотреть сообщение
Мне нехватает следующих функций:

1. strdelRight;
2. strleftpos;

Можно их выложить?

С SysSetupFormRun разобрался.
Еще проблемы с методом Icon: не может найти идентификатор ресурса: 827. Пока подставил 0.
Это самодельные функции, они у меня в Global. Настолько к ним привык, что уже путаю со стандартными. Вот некоторые из них, в том числе и те что нужны в этом проекте.

X++:
static str strdelright(str s, int cnt)
{
    return strdel(s, strlen(s)-cnt+1, cnt);
}
static str strdelleft(str s, int cnt)
{
    return strdel(s, 1, cnt);
}
static int strLeftPos(str s, str ss)
{
    return strfind(s, ss, 1, strlen(s));
}
static int strRightPos(str s, str ss)
{
    int len = strlen(s);
    ;
    return strfind(s, ss, len, -len);
}
static str strRight(str s, int p)
{
    return substr(s, strlen(s)-p+1, p);
}
static str strMid(str s, int p1, int p2)
{
    return substr(s, p1, p2-p1+1);
}
static str strLeft(str s, int p)
{
    return substr(s, 1, p);
}
С иконкой наверное проблема 4-ки. Используются только стандартные иконки
Старый 22.02.2007, 13:59   #13  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Спасибо. Помогло.
Теперь при добавлении записи в иерархию матюкается так:

Сообщение (12:56:13)
Невозможно создать запись в Ссылки абстрактного классификатора (AbstractClassReference).
Запись уже существует.
__________________
С уважением Шатохин Святослав.
Старый 22.02.2007, 14:34   #14  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от slava09 Посмотреть сообщение
Спасибо. Помогло.
Теперь при добавлении записи в иерархию матюкается так:

Сообщение (12:56:13)
Невозможно создать запись в Ссылки абстрактного классификатора (AbstractClassReference).
Запись уже существует.
Наверное эта запись уже добавлена в данный класс. Это ошибка. Выложил hotfix
Вложения
Тип файла: xpo AbstractClassReference_hotfix.xpo (6.6 Кб, 327 просмотров)
Старый 22.02.2007, 16:04   #15  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Теперь при выборе элемента дерева (у меня это в справочнике номенклатур) ругается таким образом:

Сообщение (15:02:56)
Недопустимая комбинация поля/поля ссылки.
__________________
С уважением Шатохин Святослав.
Старый 22.02.2007, 16:15   #16  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
А какое у Вас получилось название класса в дереве, который Вы выбираете?
Попробуйте импортировать вложенный файл, если не поможет может проблема в RecId? Я слышал что в 4-ке recID по другому считается.
Вложения
Тип файла: xpo FormMethodHandler_hotfix.xpo (10.3 Кб, 329 просмотров)

Последний раз редактировалось Lucky13; 22.02.2007 в 16:30.
Старый 23.02.2007, 13:43   #17  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Помогло. А что делают кнопки "Вверх", "Вниз"?
__________________
С уважением Шатохин Святослав.
Старый 24.02.2007, 18:26   #18  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от slava09 Посмотреть сообщение
Помогло. А что делают кнопки "Вверх", "Вниз"?
Перемещают выделенный класс на уровень вверх или вниз, изменяя при этом код уровня.
Старый 26.02.2007, 13:03   #19  
slava09 is offline
slava09
Участник
Аватар для slava09
MCBMSS
Дети Юза
1C
 
1,642 / 237 (11) ++++++
Регистрация: 06.03.2003
Адрес: Украина, Киев
Глючновато работает. Какие-то непонятные вещи делает...
__________________
С уважением Шатохин Святослав.
Старый 26.02.2007, 14:00   #20  
Lucky13 is offline
Lucky13
Участник
1C
 
714 / 198 (8) ++++++
Регистрация: 21.10.2004
Цитата:
Сообщение от slava09 Посмотреть сообщение
Глючновато работает. Какие-то непонятные вещи делает...
Если Вы про кнопки Вверх/вниз, то они действительно немного глючные. Этот функционал добавлен недавно и я еще пока не до конца понимаю как все это должно работать. Изначальная задача - добавить возможность изменять порядок классов в дереве, но коды уровня должны сохранять первоначальный порядок.
Теги
дерево, классификация, номенклатура, управление запасами, ax3.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Справочник банков twilight DAX: Функционал 17 16.12.2013 11:43
Нужен справочник ОКОФ для ОС Lyuberetskaya DAX: Функционал 12 30.03.2011 15:01
Что такое "Справочник"? Macross DAX: Функционал 6 05.02.2008 11:09
Насущное - справочник номенклатуры. Операторы делают массу ошибок. Что делать? zzerf DAX: Функционал 24 13.12.2007 11:18
Справочник цехов tolstjak DAX: Функционал 9 05.03.2003 11:37

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 19:36.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.