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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 04.10.2005, 14:58   #1  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
->
Положим есть такая таблица:
----------------------------------------------------------------------------------
code name user_creator user_master user_finmanager
----------------------------------------------------------------------------------

В ней записи (удивляет? ), первые два поля не интересны. Поля, начинающиеся на "user_" содержат имена пользователей. Пользователь может попадать в разные поля, в несколько сразу или ни в одно вообще.
Задача: отображать уважаемому USERID только те записи, в которых он фигурирует.

Может мне не хватает знаний, но решить такую задачу только фильтрами я не нашел возможным. Решение: отобрать по критериям и создать временную таблицу.
Но далее есть необходимость дать возможность пользователям переходить в карточку доступной записи, редактировать там её, а так же в карточке добавлять новую запись...

С отображением списка по врем.таблице проблем нет. Список readonly.
Но вот организовать переход в карточку, да с возможность редактирования, вставки, удаления... Говорят, надо кодить тригеры validate..
Правильное-ли направление мысли?
Вроятно я задачу изначально неправильно пытаюсь разрешить?..
Может кто поделится соображениями.
Спасибо!
Старый 04.10.2005, 15:01   #2  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Вообще, временные таблицы часто оказываются очень удобными, но когда возникает желание приделать к ним интерфейс, возникает много "но".

Может кто подскажет, где можно посмотреть примеры или обсуждение подобного?
Старый 04.10.2005, 15:08   #3  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Цитата:
Сообщение от e-statik
Может мне не хватает знаний, но решить такую задачу только фильтрами я не нашел возможным.

Почему?
__________________
MBS Certified Master in Navision Developer
Старый 04.10.2005, 15:11   #4  
Alterant is offline
Alterant
Участник
 
378 / 10 (1) +
Регистрация: 31.03.2004
Насколько я понял Вам нужен ИЛИ фильтр. Действительно в навике его установить нельзя. Обычно такую задачу решают пометкой записей (установкой свойства MARK) и отображением только помеченых записей.
Старый 04.10.2005, 15:16   #5  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
Можно еще юзеров развернуть вертикально, тогда таблица примет вид:

code name user user_action (user_creator,user_master,user_finmanager)
Старый 04.10.2005, 15:20   #6  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Добавить поле, которое будет включать в себя значение полей
user_creator user_master user_finmanager
через символ разделитель. И по нему фильтровать.
__________________
MBS Certified Master in Navision Developer
Старый 04.10.2005, 16:59   #7  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
2 Alterant
Нет, Mark не подходит. MARKEDONLY слетает если жмакнуть на shift+ctrl+F7. И FILTERGROUP на него не распространяется. Пробовал [N3.70].

2 rmv
Не совсем понял, что должно получиться.

2 Роман
Вспомогательное поле ввести... Поддерживать его... Как насчет варианта, когда одно из поля user_ типа flowfield?
Старый 04.10.2005, 17:12   #8  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
Цитата:
Сообщение от e-statik
Как насчет варианта, когда одно из поля user_ типа flowfield?
CALCFIELDS
__________________
MBS Certified Master in Navision Developer
Старый 04.10.2005, 17:27   #9  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
2 Роман
Это понятно. Но если мы говорим о вспом.поле, которое будет содержать значения указанных полей, то значение в нём надо обновлять. А если это flowfield, то обновлять придётся и из таблицы - источника значения flowfield поля?
Старый 04.10.2005, 17:33   #10  
johndoe is offline
johndoe
Участник
 
88 / 10 (1) +
Регистрация: 15.10.2004
Адрес: Москва
Post
Цитата:
Сообщение от e-statik
2 Alterant
Нет, Mark не подходит. MARKEDONLY слетает если жмакнуть на shift+ctrl+F7. И FILTERGROUP на него не распространяется. Пробовал [N3.70].
Как это не распространяется?

Я тоже пробовал Вставьте, например, такой код в триггер OnOpenForm 22-й формы:

<div class='CALtop'>C/AL</div><div class='CAL'>CLEARMARKS;
RESET;
FILTERGROUP(2);
SETFILTER(Name,'A*');
IF FIND('-') THEN REPEAT
 MARK(TRUE);
UNTIL NEXT = 0;
FILTERGROUP(0);
MARKEDONLY(TRUE);
</div>

Запустите и попробуйте снять фильтр по маркировке :P
Старый 04.10.2005, 17:45   #11  
rov_imported is offline
rov_imported
Участник
 
176 / 10 (1) +
Регистрация: 20.01.2005
Я наверное повторюсь, тем не менее..
В общем вариации того же что предложили rmv и Роман

Дополнительное поле в табличке: user_action (например)
на validate каждого из полей user_ прописывайте занесение значения в поле
user_action.
Как бы этого достаточно - при условии, что у вас обычные записи
Но вы упоминали про flowfield - т.е. поля user_ вычисляемые? Тогда, конечно
все усложняется - но тада надо доп. информацию - правила(формулы) расчета, причины, почему поля типа Code объявлены flowfield и пр. И исходя из этого модифицировать поле user_action.
Старый 04.10.2005, 17:55   #12  
zub is offline
zub
Участник
 
40 / 10 (1) +
Регистрация: 23.08.2005
А почему не использовать временную таблицу?
Конструкция FORM.RUN работает с временной таблицей, остается только синхронизировать изменяемые записи во временной таблице с реальной
Старый 05.10.2005, 09:32   #13  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Цитата:
Сообщение от johndoe
Цитата:
Сообщение от e-statik
2 Alterant
Нет, Mark не подходит. MARKEDONLY слетает если жмакнуть на shift+ctrl+F7. И FILTERGROUP на него не распространяется. Пробовал [N3.70].
Как это не распространяется?

Я тоже пробовал Вставьте, например, такой код в триггер OnOpenForm 22-й формы:
... и перепишите 1 Codeunit!
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 06.10.2005, 00:47   #14  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
2 johndoe
И в произвольной форме, и в 22... К сожалению. Везде снимается.

Хотя этот вариант изначально импонировал..
Старый 06.10.2005, 10:20   #15  
johndoe is offline
johndoe
Участник
 
88 / 10 (1) +
Регистрация: 15.10.2004
Адрес: Москва
Цитата:
Сообщение от e-statik
2 johndoe
И в произвольной форме, и в 22... К сожалению. Везде снимается.

Хотя этот вариант изначально импонировал..
Хм... Самому интересно Вернулся к своему опусу, вроде, работает... Давайте сделаем так: я выложу .fob, а Вы попробуете его накатить. Там единственный объект - форма 80000. Проверьте pls, что этот номер формы у Вас свободен.

P.S. Эксперимент ставился в Navision 3.60. Но иногда я так поступаю в 3.70...
P.P.S. Надеюсь, вместе мы разберемся
Вложения
Тип файла: fob 80000.fob (7.4 Кб, 376 просмотров)
Старый 06.10.2005, 10:38   #16  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
2 johndoe
Занято! Можешь сделать текстовый фоб, я подправлю?
Старый 06.10.2005, 10:44   #17  
johndoe is offline
johndoe
Участник
 
88 / 10 (1) +
Регистрация: 15.10.2004
Адрес: Москва
Post
Цитата:
Сообщение от e-statik
2 johndoe
Занято! Можешь сделать текстовый фоб, я подправлю?
2 e-statik
Лови! Скажи, что получится!
Вложения
Тип файла: txt 80000.txt (2.9 Кб, 424 просмотров)
Старый 06.10.2005, 10:55   #18  
e-statik is offline
e-statik
Участник
 
102 / 11 (1) +
Регистрация: 06.07.2005
Ну-у-у, собсна... Та же песня. Легко снимается по ....F7
Старый 06.10.2005, 11:19   #19  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
2 johndoe

фильтр по маркировке в Filtergroup не канает. снимется в любом случае...

A filtergroup can contain a filter for a Record that has been set earlier with SETFILTER or SETRANGE. и ни слова про MARK
__________________
Want to believe...
Старый 13.10.2005, 11:49   #20  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Цитата:
Сообщение от johndoe
Цитата:
Сообщение от e-statik
2 Alterant
Нет, Mark не подходит. MARKEDONLY слетает если жмакнуть на shift+ctrl+F7. И FILTERGROUP на него не распространяется. Пробовал [N3.70].
Как это не распространяется?

Я тоже пробовал Вставьте, например, такой код в триггер OnOpenForm 22-й формы:

<div class='CALtop'>C/AL</div><div class='CAL'>CLEARMARKS;
RESET;
FILTERGROUP(2);
SETFILTER(Name,'A*');
IF FIND('-') THEN REPEAT
 MARK(TRUE);
UNTIL NEXT = 0;
FILTERGROUP(0);
MARKEDONLY(TRUE);
</div>

Запустите и попробуйте снять фильтр по маркировке :P
FILTERGROUP - это конечно интересно, но ничего страшного, что 22-я форма указана как LookUpForm и DrillDownForm для таблицы 18? Интересный ход. А не лучше ли, при возникновении необходимости такого отбора, отфильтровать recordset, а потом передать его в качестве параметра в форму 22? Ведь если возникнет случай, когда необходимо будет использовать полный набор полей таблицы 18 для указания в связанных по TableRelation полях других таблиц - сделать это будет невозможно даже в таблице, использующих такое поле, открытой из дизайнера объектов.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
 


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

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

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