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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 07.08.2013, 20:30   #1  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Уникальность PartyIdIdx
Разбирал как система обращается с emplTable.PartyId
Нашел куски кода когда неявно предполагалась уникальность этого поля.
Плюс есть метод findByPartyId на sys слое.

Но индекс по этому полю неуникальный.

Аналогичная ситуация с CustTable.

А с VendTable еще веселее. Индекс был неуникальный а где то примерно с 8-го или с 7-го роллапа - уникальный.

Коллеги, как же правильно обращаться с этим полем ?
И если оно неуникальное, то зачем в коде в ряде мест с ним обращаются как с уникальным значением ?

p.s.
Ax 2009
Старый 08.08.2013, 09:56   #2  
ansoft is offline
ansoft
Участник
Аватар для ansoft
 
123 / 37 (2) +++
Регистрация: 20.10.2005
Цитата:
Нашел куски кода когда неявно предполагалась уникальность этого поля
Неявно? EmplTable - > validateWrite (RU5):
X++:
    if (!this.PartyId)
    {
        ret = ret && checkFailed(strfmt("@SYS122460"));
    }
    else if (!this.validateUniquePartyId())
    {
        // The PartyId is already related to another employee in the same company.
        ret = ret && checkFailed(strfmt("@SYS123373", "@SYS36113", this.PartyId));
    }
X++:
public boolean validateUniquePartyId()
{
    boolean     retValue = true;
    EmplTable   emplTableLocal;
    ;

    select
        count(RecId) from emplTableLocal
    where
        emplTableLocal.PartyId  ==  this.PartyId &&
        emplTableLocal.EmplId   !=  this.EmplId;

    if (emplTableLocal.RecId)
    {
        retValue = false;
    }

    return retValue;
}
По моему мнению:
1) Физ. лица в компании должны быть сопоставлены с каталогом как один к одному
2) Поставщики, Клиенты возможно как многие к одному, ввиду необособленных подразделений или обособленных или холдингов и т.п. и т.д.

Интересно узнать мнение тех кто глубоко в этом разбирался...

P.S. Оправдать неуникальность индекса можно было бы только выводом более информативного сообщения, однако сообщение о не уникальности при такой проверке не будет, а вот при вставке записей кодом это может оказать "медвежью услугу"

Последний раз редактировалось ansoft; 08.08.2013 в 10:09.
За это сообщение автора поблагодарили: Logger (3).
Теги
dirparty

 


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

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

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