BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Помогите с MakeRefer
 
есть такой код.

Код
netuse ("nMgrup",loadpath()+"SCLAD\mgrup.dbf") 
netuse ("nMlabel",loadpath()+"SCLAD\mlabel.dbf") 
aHeads := {} 
aPict := {} 
aRef := {} 
nMgrup->(MakeRefer("mgrref","Выберите группу",2,{"Код","Наименование"},{2,5,10},,{FieldBlock("code")},{"aIn[1]"},"Upper(aIn[1])",{FieldBlock("code"),FieldBlock("Name")}))
nMlabel->(MakeRefer("mlabref","Выберите номенкл.",2,{"Код","Наименование"},{2,5,10},,{FieldBlock("nnum")},{"aIn[2]"},"Upper(aIn[2])",{FieldBlock("nnum"),FieldBlock("Name")}))AAdd(aHeads,{"Группа.:","strgrup"}) AAdd(aPict,REPLICATE('X',5)) 
AAdd(aRef,"mgrref") 
AAdd(aHeads,{"Номенклатура..:","strnnum"}) 
AAdd(aPict,REPLICATE('X',13)) 
AAdd(aRef,"mlabref") 
__spec:='RESTOFF' 
strgrup:='     ' 
strnnum:='             ' 
QINPUT(10,20,14,60,aHeads,1,aRef,aPict,,,,,,,_spec) 


1. Как при выбранной группе отфильтровать в вызове mlabel только ТМЦ по выбранной группе?
2. Как включить поиск и сортировку?
 
кстати, в netuse слэши движок форума почикал
 
Как жаль что Вы не читали старый форум. Там мы все это уже обсуждали.
У MakeRefer есть параметр bPreDisp
В нем надо разместить скоб по коду группы.
И обязательно надо применять параметр cKeyVal
По нему в справочнике производится поиск строки на которую следует
размещать курсор.
Сортировка и поиск в справочнике делается также как и в InitList
за это отвечает параметр aSortSeek
Все как и в Initlist один в один
 
беда в том, что я ничего не понял. Я ... э-э... дугодум.
кусок рабочего кода бы....
Цитата

У MakeRefer есть параметр bPreDisp

а в "программирование_в_БЭСТ-4.chm" я про этом не нашел :(
где он должен быть?
Цитата

Сортировка и поиск в справочнике делается также как и в InitList
за это отвечает параметр aSortSeek

а это я особенно не понял... :(
кусок рабочего кода бы....
 
Неплохо документированный и понятный код можно посмотреть в Инструментарии Разработчика, модуль Анализ движения товаров. По адресу http://www.spb4plus.ru/taxonomy_menu/2/4/3
С уважением,
Ильин Евгений
 
Цитата
Luis Figo пишет:


а в "программирование_в_БЭСТ-4.chm" я про этом не нашел
где он должен быть?

Да он описан в абзаце вместе с bPost...

Код
PROCEDURE MakeRefer(;
 cRefer,    cHead,       nTypRefer, cKeyaHeads,    aYXN,;          //  5
 cColor,    aSource,     aDest,     cKeyVal,       abFields,;      // 10
 aSortSeek, aInputHeads, aPict,     aWhen,         aValid,;        // 15
 bPost,     bPreDisp,    bPostDisp, bColor,        cKeyValDisp,;   // 20
 aRef,      cHelp0,      bCoProc,   nRowHelp,      nColHelp,;      // 25
 aGetBlock, cFindMacro,  nTag,      bScrInit,      bScrPost,;      // 30
 bDispSpr,  bYesArray,   nTagSeek,  aHotKey,       aOtherKey,;     // 35
 bPreGet,   bPostGet,    bPostRead, bYesReplArray, bYesNoRepl,;    // 40
 bSayPtica, cHeadPtica,  bSayHead,  bKeyHead,      lEditRefer,;    // 45
 bYesValue, nOrdSeek,    cLeftKey,  nPosKey,       lHFilter ;
)


А по поводу сортировки давайте поговорим что непонятно.
Давайте разберемся, чтобы в дальнейшем вопросов не вызывало
 
nordk
Цитата

надо применять параметр cKeyVal

как я понял, он отвечает за возможность позиционироваться в справочнике при его вызове по F2 на записи, которая была перед этим введена в поле вручную. И более ни за что?
это выражение для вычисления ключа. А какого ключа? В смысле, что поиск в справочнике осуществляется, видимо, по какому-то индексу. А по какому? Он где-то указывается? Или может указываться?
В моем примере нужно вместо "Upper(aIn[2])" писать "Upper(aIn[1]+aIn[2])". Это я догадался. Т.е., группа+ном.номер, это индекс mlabel. Почему этот? Как заюзать другой?

вот что есть сейчас:

nMlabel->(MakeRefer("mlabref","Выберите номенклатуру",2,{"Код","Наименование"},{2,5,10},,{FieldBlock("nnum")},{"aIn[2]"},"Upper(aIn[1]+aIn[2])",{FieldBlock("nnum"),FieldBlock("Name")},{{'- кодам ','Код?:','nnum','UPPER(aIn[1])',,,,'nnum'},{'- наименованиям ','Наименование?:', 'LEFT(Name,10)','UPPER(TRIM(aIn[1]))',,,,'Name'}},,,,,,,,,,,,,,,,'cFind$UPPER(TRIM(Name))','mlabel'))

тут, начиная с aSortSeek, содрано с какого-то кода
последний параметр (который у меня 'mlabel') - это что?
mlabel поставил от балды, в исходнике было другое и с ним не работало позиционирование.
еще непонятно в разных примерах параметр aDest выглядел или
{FieldBlock("nnum") (как у меня)
или
{"Code"}
в чем разница?

то же и 10-м параметром abFields
или
{FieldBlock("nnum"),FieldBlock("Name")}
или
{{||Code}, {||Name}}
я даже не знаю, что это за конструкция "||"

вот это:
'cFind$UPPER(TRIM(Name))'
нужно для контекстного поиска по Alt+F7. Так? Это какой параметр?

Таким темпом до собственно сортировки я доберусь к майским праздникам.
(Кстати, в моем теперешнем коде ни поиск, ни сортировка не работают, работает только контекстный.)
 
Посмотрите тему УРОК 202. Окно ввода средствами QINPUT. Там есть ответы на многие ваши Вопросы.
 
Цитата
Luis Figo пишет:
nordk




Цитата


надо применять параметр cKeyVal

как я понял, он отвечает за возможность позиционироваться в справочнике при его вызове по F2 на записи, которая была перед этим введена в поле вручную. И более ни за что?
это выражение для вычисления ключа. А какого ключа? В смысле, что поиск в справочнике осуществляется, видимо, по какому-то индексу. А по какому? Он где-то указывается? Или может указываться?
В моем примере нужно вместо "Upper(aIn[2])" писать "Upper(aIn[1]+aIn[2])". Это я догадался. Т.е., группа+ном.номер, это индекс mlabel. Почему этот? Как заюзать другой?



cKeyVal начинает работать когда вы при вводе проходите через get-объект.
Если справочник обязательный то он по указанному ключу составляет значение.
По этому значению по текущему индексу ищет в справочнике.
Если находит - то пропускает нас, если не находит заставляет обращаться
к справочнику.
Он же собственно при открытиии справочника делает поиск строки.И в случае "да" позиционирует на ней курсор.
Ну а уж когда мы накладываем скоп то нам поиск тоже нужен чтобы пошевелить
курсором чтобы скоп привести в действие.
 
Цитата
Luis Figo пишет:

nMlabel->(MakeRefer("mlabref","Выберите номенклатуру",2,{"Код","Наименование"},{2,5,10},,{FieldBlock("nnum")},{"aIn[2]"},"Upper(aIn[1]+aIn[2])",{FieldBlock("nnum"),FieldBlock("Name")},{{'- кодам ','Код?:','nnum','UPPER(aIn[1])',,,,'nnum'},{'- наименованиям ','Наименование?:', 'LEFT(Name,10)','UPPER(TRIM(aIn[1]))',,,,'Name'}},,,,,,,,,,,,,,,,'cFind$UPPER(TRIM(Name))','mlabel'))

тут, начиная с aSortSeek, содрано с какого-то кода
последний параметр (который у меня 'mlabel') - это что?
mlabel поставил от балды, в исходнике было другое и с ним не работало позиционирование.


Смотрим в таблицу выше. И видим что это параметр nTag а именно по какому индексу работать с алиасом в справочнике.
Раз без него не работало - стало быть у вас был другой индекс при открытии
справочника и тогда значение ключа cKeyVal надо писать в соответствии с ключом
указанного сюда индекса
 
Цитата
Luis Figo пишет:
{FieldBlock("nnum") (как у меня)
или
{"Code"}
в чем разница?

то же и 10-м параметром abFields
или
{FieldBlock("nnum"),FieldBlock("Name")}
или
{{||Code}, {||Name}}
я даже не знаю, что это за конструкция "||"


Конструкция {||CODE} это блок кода. Это достоинство бывшего клиппера
и теперешнего харбора. То чего так не хватало тому же фоксу.
Функция FIELDBLOCK('Code') возвращает {||CODE}
Когда раньше писали на FileEval то он не умел работать с блоками кода
напрямую и поэтому были вынуждены применять функции. На харборе такая возможность
отпала и можно напрямую применять конструкцию {||CODE}
О самих блоках кода можно почитать в WEG
 
Цитата
Luis Figo пишет:
вот это:
'cFind$UPPER(TRIM(Name))'
нужно для контекстного поиска по Alt+F7. Так? Это какой параметр?

Таким темпом до собственно сортировки я доберусь к майским праздникам.
(Кстати, в моем теперешнем коде ни поиск, ни сортировка не работают, работает только контекстный.)

Это параметр сFindMacro
По таблице выше или по запятым Вы бы смогли это определить.
Думаю что до сортировки уже почти дошли. Зато будете дальше понимать что делаете
и зачем. У меня в пятницу была выставка и вся неделя уходила на подготовку.
Теперь буду отвечать оперативнее
Страницы: 1
Читают тему (гостей: 2)