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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 19.02.2009, 17:59   #1  
DreamCreator is offline
DreamCreator
Moderator
Аватар для DreamCreator
Axapta Retail User
 
553 / 45 (3) +++
Регистрация: 04.11.2004
Адрес: Казань
Особенности настройки RLS на склад
Доброго времени суток!
Может кому-нибудь пригодится.

Сегодня настраивал RLS на InventLocation, в запросе зафиксировал один склад. Далее попытался создать строчку в Заказе - оформить продажу с другого склада, отличного от настроенного в RLS, строчка создается. Аналогично пытаюсь создать в Мягком Чеке, при попытке сохранить - выходит ошибка Склад такой-то не существует. Это при том что выполняется один и тот же код из SalesLine.

Код генерирующий ошибку InventTableModule.checkInventLocationId
X++:
boolean checkInventLocationId(InventLocationId inventLocation, boolean mandatoryCheck = true)
{
    boolean         ok = true;

    if (inventLocation && ! InventLocation::exist(inventLocation))
        ok = checkFailed(strFmt("@SYS5001",inventLocation));
..
Причем если я в МЧ пытаюсь пройти этот кусочек отладчиком - ошибки не возникает. Поэтому истинных причин такого различия в поведении мне выяснить не удалось.

Проблему решила доработка
X++:
static boolean exist(InventLocationId _inventLocation)
{
    return _inventLocation && InventLocation::find(_inventLocation).RecId;
    
    //return _inventLocation && (select firstonly inventLocation
    //            index hint InventLocationIdx
    //            where inventLocation.inventLocationId == _inventLocation
    //       ).recId != 0;
}

static InventLocation find(InventLocationId _inventLocation, boolean _update = false)
{
    InventLocation inventLocation;
    ;

    inventLocation.recordLevelSecurity(true); // drc 9.02.2009

    inventLocation.selectForUpdate(_update);

    if (_inventLocation)
        select firstonly inventLocation
            index hint InventLocationIdx
            where inventLocation.inventLocationId == _inventLocation;

    return inventLocation;
}
Теперь и в заказах и в МЧ при попытке создать строчку с другим складом (отличным от настроенного в RLS) выходит сообщение что склад не существует. Что и требовалось.

Последний раз редактировалось DreamCreator; 19.02.2009 в 18:02.
За это сообщение автора поблагодарили: mazzy (2).
Теги
ax3.0, axapta retail, rls

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Gustav: Unsorted, или Записки DAX-дилетанта - II Gustav DAX Blogs 39 20.05.2009 15:34
Внешний склад vey DAX: Функционал 0 05.07.2006 11:38
Особенности работы RLS Glue DAX: Администрирование 1 06.03.2006 09:17
Проблема с RLS и SecurityKey. oip DAX: Программирование 3 22.12.2005 17:26
Сводное планирование и основной склад PSA DAX: Функционал 11 20.12.2004 15:16

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

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

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