Главная
Новый форум
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

makerefer и qinput
Goto page Previous  1, 2
 
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4
View previous topic :: View next topic  
Author Message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 25 Jul 2007 10:37    Post subject: Reply with quote

Смотрим в help к БЭСТу про третий параметр MakeRefer
Quote:
· nTypRefer – тип справочника:


Имеются следующие типы справочников:


· 1 – с постпроверкой – находясь в GETе можно вызвать справочник по горячей клавише и ввести из него значение; при непосредственном вводе значения,отсутствующего в справочника производится его принудительное отображение,и оператору предлагается выбрать правильное значение;ввод значения,отсутствующего в справочнике при этом невозможен;

· 2 – то же самое, что тип 1, только с разрешением ввода пустых значений и значений со звездочкой "*";

· 3 – без постпроверки – отличается от типа 1 тем,что по завершении GETа постпроверка не производится (можно ввести значение,отсутствующее в справочнике);

· 4 – с сигнальной постпроверкой – отличается от типа 1 тем,что возможен ввод значения,отсутствующего в справочнике, если после принудительного отображения справочника нажать клавишу <ESC>

· 5 – то же , что тип 2 только с разрешением ввода числового значения –1 (для уникальной привязки по счетчику


Потом смотрим на поставленное в функции значение и удивляемся
Back to top
View user's profile Send private message Send e-mail
AVELIT



Joined: 12 May 2004
Posts: 69
Location: OOO
Occupation: ООО "Авелит" Программист
Interests: Кемерово

PostPosted: 25 Jul 2007 19:19    Post subject: Reply with quote

Quote:
и удивляемся

А удивляться то нечему.... потому как какую цифру не ставим, и чтобы нам было не обещано в хелпе получается всего две ситуации:
1) Нет проверки, справочник сам не выпрыгивает (цифры 3,4)
2) Есть проверка, но справочник выпрыгивает каждый раз после выхода из поля ввода (цифры 1,2,5)

Я почему и написал "как сделать" потому как цифра 1 в данном параметре не работает как описано...
т.е. в поле ввода стоит группа 00001, она есть в справочнике, но справочник всё равно выпрыгивает при переходе клавишей курсора или TABом..... а в хелпе написано:
Quote:
при непосредственном вводе значения,отсутствующего в справочника производится его принудительное отображение,и оператору предлагается выбрать правильное значение

т.е. как я полагаю справочник не выпрыгивает, если значение введенное в поле в нем присутствует.
Да и ладно бы выпрыгивал с установленным на данном значении указателем, ан нет, всегда указатель на первой записи...
а если код группы будет 00002 а номенклатура 000000000123 чего делать? Каждый раз выбира
Back to top
View user's profile Send private message
nordk



Joined: 27 Jun 2005
Posts: 1000
Location: Горбунов Константин
Occupation: БЭСТ-Партнер
Interests: СПб

PostPosted: 26 Jul 2007 10:58    Post subject: Reply with quote

Функция работает корректно.
Ваш вопрос стал теперь более понятен.
Вам не понятен параметр cKeyVal

Quote:
cKeyVal – выражение в виде символьной строки для вычисления (путем макроподстановки) ключа при поиске записи в справочнике, если был произведен прямой ввод в Get–переменную;


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

Теперь о нем собственно. Это значение ключа, которое используется при поиске по текущему индексу алиаса справочника.
Я еще раз посмотрел Ваш текст и могу точно сказать, что индекса с таким ключом у mlabel нет в принципе.
Вам нужно посмотерть какой у Вас индексный ключ на алиасе и привести значение cKeyVal в соответствие.
Например для mlabel,
Индексный ключ mlabel звучит UPPER(grup+nnum)
Значит с cKeyVal будет "UPPER(aIn[1]+aIn[2])" (для приведенного Вами текста)
Индексный ключ tag_nnum звучит UPPER( STATUS+NNUM)
Значит CKeyVal следует делать "UPPER(' '+aIn[2])"

И так дал
Back to top
View user's profile Send private message Send e-mail
AVELIT



Joined: 12 May 2004
Posts: 69
Location: OOO
Occupation: ООО "Авелит" Программист
Interests: Кемерово

PostPosted: 31 Jul 2007 05:03    Post subject: Reply with quote

Спасибо, Константин, помогло
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic   printer-friendly view     Forum Index -> Программирование в БЭСТ-4 All times are GMT + 4 Hours
Goto page Previous  1, 2
Page 2 of 2

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © phpBB Group

Rambler
Rambler's Top100 Рейтинг@Mail.ru