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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 09.06.2015, 13:37   #1  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Фундаментальный продукт, позволяющий избавиться от мелкого программерства стоит дороже и правильное его позиционирование не даст умереть с голоду.
К счастью, нету таких - и не надо Потому что все эти "фундаментальные продукты" не всякий консультант нормально использовать может, а клиент не понимает, зачем ему ради "одного-единственного поля" пытаются продать дорогущий "комбайн" + кучу часов консалтинга для его настройки.
Цитата:
Сообщение от TasmanianDevil Посмотреть сообщение
Хорошо, по навигации все отловится через SysSetupFormRun - а при редактированиии записи?
Узко мыслите Кроме виндового клиента у Аксапты еще есть веб-клиент Корпоративного портала, есть всякие там интеграции, в т.ч. через Excel какой-нить, и там эти "фундаментальные продукты", висящие гроздью на SysSetupFormRun, просто идут лесом. А всё потому, что идет попытка смешать бизнес-логику с презентационной. Подсвечивание поля как доступного/недоступного для редактирования на форме, - это сугубо презентационная логика, которую при желании можно и обойти. Если же требуется реализовать запрет на изменение поля в рамках бизнес-логики, то это нужно делать явно не на xRecord.modifiedField() и прочих FormDataSource.active()
Старый 09.06.2015, 17:20   #2  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Кстати, не так уж много таблиц в системе, задействованных в большом количестве форм. Чтобы примерно оценить, стоит ли игра свеч, можно воспользоваться таким джобом (как пользоваться - см. комментарии):
X++:
static void ShowMostUsedTables(Args _args)
{
////////////////////////////////////////////////////////////////
// С заданными ниже параметрами Job работает около 5-7 секунд, меняйте с осторожностью:)

    #define.DSCountCriteria     (10)        // критерий попадания в "ТОП" (минимальное количество ссылающихся DS)
    #define.TableFilter         ("*")       // доп. фильтр, например: "Invent*", "Ledger*", "Vend*"
////////////////////////////////////////////////////////////////
    xRefReferences      xref;
    xRefPaths           forms, tables;

    RecordSortedList    sortedList = new RecordSortedList(tablenum(xRefPaths));

    ;
    sortedList.sortOrder(fieldnum(xRefPaths, ApplObjectPathRecId), fieldnum(xRefPaths, RecId));
    
    // перебрать таблицы
    while select Path, RecId from tables
        group by tables.Path, RecId
        where     tables.Path like "\\\\Data Dictionary\\\\Tables\\\\" + #TableFilter   
            &&  !(tables.Path like "*\\\\Tables\\\\?*\\\\*")                            // исключить все подузлы
    // подсчитать ссылки "Чем используется"
    join    count (RecId) from xref                                                     
        where   xref.referencePathRecId     == tables.RecId
            &&  xref.line                   == 0                                        // исключить ссылки из X++ кода
    // наложить фильтр на ссылки
    exists join forms                                                                   
        where   forms.RecId     == xref.xRefPathRecId
            &&    forms.Path    like "\\\\Forms\\\\?*\\\\Data Sources\\\\*"             // интересуют DS форм
            &&  !(forms.Path    like "*\\\\Fields\\\\*")                                // не интересуют поля и прочее
            &&  !(forms.Path    like "*\\\\Ranges\\\\*")
            &&  !(forms.Path    like "*\\\\Sorting\\\\*")                    
    {
        if (xref.RecId >= #DSCountCriteria)
        {
            tables.ApplObjectPathRecId = -xref.RecId;  // минус - для убывающей сортировки
            sortedList.ins(tables);
        }
    }
    setprefix(strfmt("Найдено %1 таблиц (по фильтру %2) с количеством ссылающихся FormDS >= %3", sortedList.len(), #TableFilter, #DSCountCriteria));
    info("Сount of FormDS; TableName");

    sortedList.first(tables);
    do{
        info(strfmt("%1; %2", -tables.ApplObjectPathRecId, tables.pathName()));
    } 
    while (sortedList.next(tables));
}
На кастомизированной DAX2009 "Топ" выглядит примерно так (см. вложение):
Изображения
 
__________________
Старый 10.06.2015, 09:00   #3  
slava is offline
slava
сибиряк
Самостоятельные клиенты AX
 
468 / 23 (1) +++
Регистрация: 28.12.2001
Адрес: Москва
Цитата:
Сообщение от Ruff Посмотреть сообщение
Чтобы примерно оценить, стоит ли игра свеч,
Сюда вряд ли попадут автоматически присоединяемые datasource Dir* и т.п...
__________________
С уважением, Вячеслав.
Старый 10.06.2015, 15:10   #4  
TasmanianDevil is offline
TasmanianDevil
Мрачный тип
Аватар для TasmanianDevil
Злыдни
 
887 / 389 (14) ++++++
Регистрация: 24.01.2005
Адрес: Томск
Цитата:
Сообщение от gl00mie Посмотреть сообщение
К счастью, нету таких - и не надо
Вот за все и за всех говорить - точно не надо.
По крайней мере одна фундаментальная доработка в виде расширения RLS по доступности редактирования/удаления видимых записей (записей целиком, а не отдельных полей, как у топикстартера) является востребованной и не раз запрашивалась здесь на форуме.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Потому что все эти "фундаментальные продукты" не всякий консультант нормально использовать может,
Опять-таки не надо за все и про всех. Всякий путь ищет себе другую работу, если при наличии адекватной документации, где изложена цель/объем изменений и приложена подробная инструкция, этот всякий имеет проблемы с использованием востребованной клиентом разработки.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
а клиент не понимает, зачем ему ради "одного-единственного поля" пытаются продать дорогущий "комбайн" + кучу часов консалтинга для его настройки.
Понятия не имею о чем Вы говорите. Видимо потому, что подавляющее большинство времени работаю на клиенте и делаю доработки по его осознанным и выстраданным потребностям.

Цитата:
Сообщение от gl00mie Посмотреть сообщение
Узко мыслите
Дык чего ждать от низкорожденного IT-чандалы, не понимающего местами необъятного широкомыслия разработческих брахманов из MBS, воплотивших в системе божественную безупречность и логичность
__________________
Мы летаем, кружимся, нагоняем ужасы ...
За это сообщение автора поблагодарили: slava (1).
Теги
field, код, свойства

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Kashperuk Ivan: Tutorial: AX 2012 - Invalid field access or Accessing unretrieved fields Blog bot DAX Blogs 0 29.10.2011 05:18
DynamicsAxSCM: The InventTrans table. Explore various field usages. Blog bot DAX Blogs 0 09.11.2010 19:10
Как можно управлять элементом Grid из кода? vitk DAX: Программирование 4 26.08.2004 16:02
DS по временной таблице странно обновлляется ArturK DAX: Программирование 2 29.07.2004 19:27
Что и как можно резать? George Nordic DAX: Администрирование 1 11.05.2004 18:44

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

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

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