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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 08.08.2005, 08:57   #1  
kekki is offline
kekki
Участник
 
58 / 10 (1) +
Регистрация: 27.06.2005
Thumbs up
Доброго времени суток!
Подскажите, пожалуйста, наиболее оптимизированный вариант решения следующей задачи:
1. По фильтру названия товара, задаваемому пользователем (вида '*стол*'), выбрать из таблицы "Товар" все номера товаров.
2. Для выбранных номеров товаров отобразить все операции из таблицы "Товар Книга Операций".

Я знаю один вариант решения, но он не срабатывает в случае, если после первой фильтрации получатся большое количество записей.
Может быть, кто-то сталкивался с похожей проблемой, помогите
Старый 08.08.2005, 09:19   #2  
DA_NEAL is offline
DA_NEAL
Участник
Аватар для DA_NEAL
Лучший по профессии 2017
Лучший по профессии 2009
 
788 / 54 (3) ++++
Регистрация: 05.08.2002
Адрес: Королев
Как вариант используйте на 32 табличке маркировку записей. Например бежите по отфильтрованной табличке товаров, фильтруете 32 таблицу пономеру товара, маркируете. Потом отображаете на форме только маркированные записис.

P.S.
Я так понимаю названия в 32 таблице отличаются от названий в Товарах?
__________________
Want to believe...
Старый 08.08.2005, 09:34   #3  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
Отобразить видимо в форме а не в репорте?

Маркировать не есть хорошо, ибо медленно.
Лучше тупо пробежать по товарам, по каждому товару взять его записи в таблице 32й и свалить их во временную 32ю.
И запустить форму 38, подсунув ей эту временную таблицу.
Старый 08.08.2005, 09:44   #4  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
У сожалению, предложенный DA_NEAL будет работать довольно медленно, особенно на 32 таблице .

Как вариант, можно сделать буферную таблицу с кодами товара и кодом пользователя и в 32 протянуть flowfield Exists.

Можно так же попробовать "нечестным" образом пропускать записи на OnFindRecord и OnNextRecord, анализируя временную табличку с кодами товара, полученными в результате наложения фильтра.
Старый 08.08.2005, 10:02   #5  
kekki is offline
kekki
Участник
 
58 / 10 (1) +
Регистрация: 27.06.2005
Цитата:
Сообщение от SVG
Отобразить видимо в форме а не в репорте?
Отобразить нужно именно в отчете

Цитата:
Сообщение от SVG
Лучше тупо пробежать по товарам, по каждому товару взять его записи в таблице 32й и свалить их во временную 32ю.
И запустить форму 38, подсунув ей эту временную таблицу.
Не подскажете, как в отчете "объяснить" элементу данных, что данные нужно брать именно из временной таблицы?
Старый 08.08.2005, 10:08   #6  
rmv is offline
rmv
Участник
 
481 / 11 (1) +
Регистрация: 15.02.2005
kekki - ну тут все просто .
Делаете два датаайтема, 27 таблицу и 32 с отступом, связываете по коду товара, фильтр вида '*стол*' накладываете на 27, все остальное за Вас сделает Навижн.
Старый 08.08.2005, 10:09   #7  
Yoil is offline
Yoil
NavAx
NavAx Club
Лучший по профессии 2017
Лучший по профессии 2009
 
1,574 / 70 (6) ++++
Регистрация: 20.11.2002
Адрес: Msk
А порядок операций важен?
Если не важен, то можно тупо задать основной датаайтем - Item, ему подчинить датаайтем Item Ledger Entry, связанный по коду товара, на верхний датаайтем наложить юзерский фильтр (например *стол*) и вывести все нужные записи.

Как в отчете использовать временную таблицу:
Задаете датаайтем "Целое" (Integer). Это такая хитрая табличка (в обжект дизайнере не видна, но видна в списке таблиц, который, например, открывается при создании формы. ID 2000000026), которая просто содержит в себе упорядочные целые числа.
На OnPreDataItem (можно раньше) встаете на первую запись временной таблички TempTable.FIND('-');
На OnAfterGetRecord пишете что-нибудь вроде
IF TempTable.NEXT = 0 THEN SETRANGE(число, число) - т.е. когда данные во временной табличке кончатся, Целое перестанет крутиться.
Перед TempTable.NEXT запоминаете куда-нибудь нужные значения (например, номер товарной операции и код товара) и можете выводить их в секции Body датаайтема Целое.
__________________
"Моей лошадке ядрышком полмордочки снесло..."
А.В.Суворов, письма к дочери
Старый 08.08.2005, 11:11   #8  
SVG is offline
SVG
Участник
 
201 / 10 (1) +
Регистрация: 15.11.2004
Работа с временной таблицей в отчете - смотрите репорт 12410

ЗЫ сеня всем буду советовать этот репорт...
Старый 10.08.2005, 14:54   #9  
kekki is offline
kekki
Участник
 
58 / 10 (1) +
Регистрация: 27.06.2005
Все получилось!
Всем огромное спасибо за советы!!!!!
 


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

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

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