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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.06.2005, 15:49   #1  
Кирилл Борисов is offline
Кирилл Борисов
Участник
 
11 / 10 (1) +
Регистрация: 25.05.2004
Каким образом вызвать стандартный диалог поиска по display-полю
(при нажатии пользователем комбинации Ctrl-F)
и реализовать данный поиск?
Старый 20.06.2005, 16:03   #3  
Кирилл Борисов is offline
Кирилл Борисов
Участник
 
11 / 10 (1) +
Регистрация: 25.05.2004
Спасибо, я это знаю.
Я создал эту ветку, чтобы предоставить распечатку обсуждения моему постановщику задачи.
Поэтому хотелось бы, чтобы слово "никак" написал некто Мазуркин Сергей или Максим Горбунов, которые, надеюсь, являются для моего постановщика задач авторитетами в этой области.

Хотелось бы, чтобы также прозвучало мнение о нецелесообразности замены display методов на обычные хранимые в базе поля и целесообразности информативных значений для ключевых полей.
Старый 20.06.2005, 16:19   #4  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Интересный способ использования форума

Тренер прав - никак.
Только долго и мучительно программировать.

Может Максим что дополнительно посоветует...
Но сомневаюсь.
__________________
полезное на axForum, github, vk, coub.
Старый 20.06.2005, 17:11   #5  
Maxim Gorbunov is offline
Maxim Gorbunov
Administrator
Соотечественники
Лучший по профессии 2009
 
2,483 / 645 (26) +++++++
Регистрация: 27.11.2001
Адрес: Dubai, UAE
В Вашей постановке вопроса, на самом деле можно, но долго программируя То есть, перехватываем нажатие Ctrl+F + изменяем контекстное меню, чтобы в нем появился пункт фильтр + по возврату данных из формы поиска разбирать их и накладывать фильтр. В общем, как Вы видите, обходной путь найти можно, но стоимость такого решения будет очень высока, и в целесообразности я бы очень сильно усомнился.

Чтобы ответить аргументировано, разобью Вашу задачу на две:
1. Вызов формы поиска, при нажатии Ctrl+F.
2. Обработка результатов ввода в форму поиска.

1 задача менее сложна, так как заключается только в том, чтобы добавить обработку определенной комбинации клавиш в метод task и изменение контекстного меню для конкретного контрола. Однако решить ее в общем случае невозможно (по крайней мере, сейчас я не готов предложить решение). Таким образом, это придется делать для каждой формы и для каждого поля, в котором Вы собираетесь организовывать поиск по значению display-метода. Кроме того, нужны будут некоторые модификации для формы SysFormSearch.

2ую задачу можно решать двумя способами. Первый (наиболее логичный и не всегда применимый) - разбирать значение, которое пришло из SysFormSearch, и на основании этого накладывать фильтр на физически существующие в системе поля. Очевидно, что это сделать можно далеко не всегда. И в каждом случае нужно будет делать свой разбор. Второй - создать временную таблицу с двумя полями: RecId в фильтруемой таблице и значение display-метода. При этом вам нужно будет каждый раз при обработке поиска заполнять эту таблицу для всех (!!!) строк фильтруемой таблицы. Далее, надо будет подсунуть временную таблицу в запрос.

Ну и наконец, главная причина, по которой этого делать не стоит: Microsoft сейчас активно изменяет контролы на форме. В частности, в SP3 появилась возможность копировать в буфер обмена значения display-методов (кстати, можете предложить через буфер копировать значения в Excel и делать там Автофильтр ) Вы совершенно не застрахованы от того, что эту функциональность не реализуют на уровне ядра в следующем SP. Таким образом, инвестиции в разработку этой функции будут совершенно безсмысленны.

P.S.: Если это настолько критично, добавьте в таблицу нормальное поле, которое будет инициализироваться с помощью display-метода в методах insert() и update() таблицы. Много нервов сэкономите
__________________
Not registered yet? Register here!
Have comments, questions, suggestions or anything else regarding our web site? Don't hesitate, send them to me
Старый 20.06.2005, 17:20   #6  
ТРЕНЕР is offline
ТРЕНЕР
Участник
Аватар для ТРЕНЕР
 
599 / 50 (3) ++++
Регистрация: 11.06.2003
Адрес: Москва
С моей личной точки зрения, хотя и не представляющей интереса для постановщика задачи Кириллу Борисову, замена дисплей-методов на хранимые поля во многих случаях целесообразна, если затраты на актуализацию этих значений менше приносимой пользы, несмотря на то что это вступает в противоречие с теорией в части минимизации избыточности БД.

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

Под пользой понимаю: повышение удобства работы пользователей в сравнении с работой в отсутствие данной возможности, количество пользователей регулярно пользующихся этим, возможность существенного ускорения поиска информации или проведения каких-то операций вследствие наличия этой фичи, и т.п.

Например, замена дисплей-метода на поле позволяет делать стандартный поиск по маске и сортировку, делает возможным включение поля в авто-отчет, упрощает построение других отчетов по данной таблице. Если эти возможности существенно упрощают и ускоряют работу конечных пользователей, и при этом не приводят к большим затратам, то это безусловно нужно сделать.
Старый 20.06.2005, 17:25   #7  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Спасибо, Тренер.
Спасибо, Максим.
__________________
полезное на axForum, github, vk, coub.
Старый 20.06.2005, 18:18   #8  
Кирилл Борисов is offline
Кирилл Борисов
Участник
 
11 / 10 (1) +
Регистрация: 25.05.2004
Спасибо ;-)
Старый 21.06.2005, 09:22   #9  
raz is offline
raz
NavAx
Аватар для raz
NavAx Club
Лучший по профессии 2014
Лучший по профессии 2009
 
1,494 / 1065 (38) ++++++++
Регистрация: 22.07.2003
Адрес: МО
Иногда можно стандартными средствами выкрутиться:
1. Должны быть обновлены перекрестные ссылки.
2. Используем стандартный механизм фильтрации, добавляя нужную таблицу в запрос.

ЗЫ. Иногда необходимо добавить relation на таблицы.

ЗЗЫ. Пример выбора заказов по номенклатуре в приатаченном файле..
[attachment=215:attachment]
Миниатюры
Нажмите на изображение для увеличения
Название: demo.jpg
Просмотров: 434
Размер:	41.3 Кб
ID:	9801  
Старый 21.06.2005, 10:26   #10  
mugz is offline
mugz
Участник
 
107 / 10 (1) +
Регистрация: 05.08.2004
Цитата:
Сообщение от Тренер
С моей личной точки зрения, хотя и не представляющей интереса для постановщика задачи Кириллу Борисову,  замена дисплей-методов на хранимые поля во многих случаях целесообразна, если затраты на актуализацию этих значений менше приносимой пользы, несмотря на то что это вступает в противоречие с теорией в части минимизации избыточности БД.
Вот, кстати, рецепт на случай, если надо сделать такую замену в редактируемом источнике данных. Правда, сам не пробовал
 


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

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

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