Сложное условие для пользовательского фильтра (Ctrl-A)

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
empyros
Постоянный обитатель
Сообщения: 174
Зарегистрирован: 21 май 2009, 20:30
Откуда: Беларусь

Сложное условие для пользовательского фильтра (Ctrl-A)

Сообщение empyros »

Ведется учет серийных номеров, то есть в Складском учете - Документы - Карточки серийных номеров, можно увидеть, что каждому серийному номеру соответствует партия.
Необходимо в Управлении розничной торговлей - Документы - Накладная на реализацию, при выборе МЦ из текущих остатков в разрезе партий установить фильтр (Ctrl-A) на партии по определенному серийному номеру.
То есть что-то такое: KATPARTY.NREC=CARDSN.CPARTY, где CARDSN.CPARTY определяется через CARDSN.SERIAL, который вводим вручную: CARDSN.SERIAL='10000001'.
Можно ли такой фильтр сделать?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Сложное условие для пользовательского фильтра (Ctrl-A)

Сообщение edward_K »

уже не раз обсуждалось для связи ??????.c!!!!! == !!!!!.nrec - ищите "TxoGetFieldValue" (или идите в настройку тхо - F3 - общеиспользуемые функции).Если сразу не запашет, то InitServTxo(0) в фильтре вам поможет. Будет медленно.
Второй вариант - докомпиляция фейса. Для скорости лучше выгрузить во времянку дочерную таблица по нужным условиям
и уже на временную наложить жесткую подцепку. Ну правда придется написать свой обработчик фильтров

Код: Выделить всё

cmFilterSave:
{ if message('Установить стандартный фильтр?',YesNo)=cmYes
  { inherited :: handleEvent (cmFilterSave);  
  }
  else
  { runwindowmodal(wnMy_FLTINDOC);
  }
} 
и возможно cmSetDefault. Но зато можно отфильтровать все что угодно.
empyros
Постоянный обитатель
Сообщения: 174
Зарегистрирован: 21 май 2009, 20:30
Откуда: Беларусь

Re: Сложное условие для пользовательского фильтра (Ctrl-A)

Сообщение empyros »

edward_K писал(а):уже не раз обсуждалось для связи ??????.c!!!!! == !!!!!.nrec - ищите "TxoGetFieldValue" (или идите в настройку тхо - F3 - общеиспользуемые функции).Если сразу не запашет, то InitServTxo(0) в фильтре вам поможет. Будет медленно.
А как получить nrec по другому полю? В фильтре такое можно сделать?

Код: Выделить всё

select nrec from CARDSN where (CARDSN.SERIAL='001');
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Сложное условие для пользовательского фильтра (Ctrl-A)

Сообщение edward_K »

В фильтре никак. Разве что вы сделаете Public функцию - где то в viprogr чего то было. а в ней уже каким то объектным фейсом дотянете. Иначе фильтр можно наложить только по тем таблам, что есть в запросе - добавте через докомпиляцию - но работать будет очень и очень медленно.
Ответить