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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.05.2011, 16:14   #1  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от pitersky Посмотреть сообщение
Ужасное решение. Просто ужасное. НЕ делайте так никогда.
Надо было создать табличку с полями EmplId/BenefitType/BenefitDescription. В BenefitType записать все возможные типы льгот (создать соответствующий Enum или использовать таблицу льгот, если она есть), в BenefitDescription - то, что относится по типу к EmplId. А дальше на EmplTable создаёте закладку, на которой отображаете льготы для конкретного человека.
Если надо всё-таки в одну строку выводить (именно выводить, а не хранить!!!) - нарисуйте соответствующую формочку. Но я не вижу в этом особого смысла.
Всё это уже есть. просто наши HR хотят всё видеть сразу. Поэтому создаётся такая никому не нужная таблица в классе, который будет по ночам обноблять в batch.
поэтому кажется forupdate несколько не в тему
в начале есть
delete_from MyTbl;

и в конце каждой итерации MyTbl.insert();

Попробую заменить
if(BenefitTbl != NULL) на if (BenefitTbl.RecId != 0)
Хотя с дебагером заходит в if , но значение почему-то не меняет
Старый 25.05.2011, 16:31   #2  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,514 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от timaluhs Посмотреть сообщение
Всё это уже есть. просто наши HR хотят всё видеть сразу.
Мне кажется, что это не тот случай, когда надо под HR прогибаться (извините за слэнг). Полученная таблица крайне ненаглядна и неудобна в работе. Могу предположить, что утром это копипастят в Excel и дальше работают автофильтрами, отбирая нужное. Если это так, то может проще нарисовать им нужную выгрузку, а не плодить лишние таблицы?
Цитата:
Сообщение от Krasher Посмотреть сообщение
Вот собственно и первое предложение по оптимизации. Вместо delete_from и потом нового её заполнения, почему не использовать .update() только того, что изменилось
С точки здения быстродействия update хуже, потому что обновляемую запись надо сначала найти. В то же время delete_from работает очень быстро. Если не жалко RecId, то лучше пересоздавать
__________________
С уважением,
Вячеслав
Старый 25.05.2011, 16:33   #3  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от pitersky Посмотреть сообщение
Если это так, то может проще нарисовать им нужную выгрузку, а не плодить лишние таблицы?
а как это сделать?
Старый 25.05.2011, 16:38   #4  
pitersky is offline
pitersky
северный Будда
Аватар для pitersky
Ex AND Project
Соотечественники
 
1,514 / 435 (18) +++++++
Регистрация: 26.09.2007
Адрес: Солнечная система
Цитата:
Сообщение от timaluhs Посмотреть сообщение
а как это сделать?
А что тут сложного? Делаете цикл по EmplTable (это строка выгрузки), внутри него делаете вывод в Excel данных по каждому типу льгот (делая запросы к таблице льгот по типу и EmplId)
__________________
С уважением,
Вячеслав
Старый 25.05.2011, 16:53   #5  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
а как это сделать?
Точно также как вы делали вставку в таблицу, только вместо инициализации полей таблицы найденными значениями, отправляйте эти значения в excel или лучше во временную таблицу ADORecordset, а уже её заполненную одним махом в excel (так будет быстрее )
Есть ещё конечно вариант с OLAP и RS, но это не обязательно
Программное добавление столбцов в отчёт

И на будущее, если необходимо сделать в таблице 27 столбцов одного типа, отличающихся только индексом, то используйте расширенный тип данных основанный на масиве полей (стандартный пример - тип Dimension)

Последний раз редактировалось S.Kuskov; 25.05.2011 в 17:18.
Старый 26.05.2011, 08:44   #6  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Не уверена что excel устроит. Я спрошу у HR. Там ещё должна быть ещё фильтрация по типу льгот, которую они хотят делать по уровню доступа(не знаю как по русски) кто что может видеть. т.е. поставщики машин - только машины и всё что с ними связано, сотовая связь - отдельно, но и т.п. а кто-то может всё.

Цитата:
Сообщение от S.Kuskov Посмотреть сообщение
И на будущее, если необходимо сделать в таблице 27 столбцов одного типа, отличающихся только индексом, то используйте расширенный тип данных основанный на масиве полей (стандартный пример - тип Dimension)
На самом деле однотипных полей не 27 , штук 15. И для каждого 2 характеристики. То есть создавать типа 3х мерный массив на 15 полей? пока не очень понятно, попробую разобраться
Старый 26.05.2011, 09:20   #7  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,448 / 1792 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
Цитата:
Сообщение от timaluhs Посмотреть сообщение
Не уверена что excel устроит. Я спрошу у HR. Там ещё должна быть ещё фильтрация по типу льгот, которую они хотят делать по уровню доступа(не знаю как по русски) кто что может видеть. т.е. поставщики машин - только машины и всё что с ними связано, сотовая связь - отдельно, но и т.п. а кто-то может всё.
Вы имеете в виду RLS (record level security)? Права доступа на уровне записей.
Пусть отчёт в Excel формируют сами пользователи под своими правами. Тогда в Excel попадут только те данные, к которым у них есть доступ.
Скрытие поля

Цитата:
Сообщение от timaluhs Посмотреть сообщение
На самом деле однотипных полей не 27 , штук 15. И для каждого 2 характеристики. То есть создавать типа 3х мерный массив на 15 полей? пока не очень понятно, попробую разобраться
Для хранения характеристик можно сделать ещё два масива по 15 элементов, под каждую характеристику свой масив.

Последний раз редактировалось S.Kuskov; 26.05.2011 в 09:27.
Старый 26.05.2011, 10:00   #8  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
а что делать с enum?
С дебагером захожу внутрь цикла - вижу как значение меняется с No на Yes.
захожу в БД - 0, хотя есть поля-enum которые принимают правильное значение
поменяла с if(MyTbl != NULL) на if(MyTbl.RecID != 0) та же петрушка
Старый 25.05.2011, 16:35   #9  
timaluhs is offline
timaluhs
newborn in DAX
Аватар для timaluhs
 
102 / 10 (1) +
Регистрация: 16.12.2010
Адрес: Израиль
Цитата:
Сообщение от pitersky Посмотреть сообщение
С точки здения быстродействия update хуже, потому что обновляемую запись надо сначала найти. В то же время delete_from работает очень быстро. Если не жалко RecId, то лучше пересоздавать

подозреваю что HR не заботит проблема с RecID
а искать то что надо обновить кажется ещё непригляднее
Теги
noyes

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Легкое поведение поля BlockImage в журналах coolibin DAX: Программирование 9 28.11.2008 10:34
Объясните странное поведение enum'ов Deep Dreamer DAX: Программирование 6 09.04.2007 23:44
Непонятное поведение векторных полей в QueryBuildDataSource. Lemming DAX: Программирование 2 12.05.2005 17:43
Непонятное поведение критериев в отчете nicko DAX: Программирование 2 13.04.2005 15:48
Можно ли изменить Enum типа NoYes или PrintMedium? funnut DAX: Программирование 1 08.07.2004 14:21

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

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

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