Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 25 Jul 2007 10:37 Post subject:
Смотрим в help к БЭСТу про третий параметр MakeRefer
Quote:
· nTypRefer – тип справочника:
Имеются следующие типы справочников:
· 1 – с постпроверкой – находясь в GETе можно вызвать справочник по горячей клавише и ввести из него значение; при непосредственном вводе значения,отсутствующего в справочника производится его принудительное отображение,и оператору предлагается выбрать правильное значение;ввод значения,отсутствующего в справочнике при этом невозможен;
· 2 – то же самое, что тип 1, только с разрешением ввода пустых значений и значений со звездочкой "*";
· 3 – без постпроверки – отличается от типа 1 тем,что по завершении GETа постпроверка не производится (можно ввести значение,отсутствующее в справочнике);
· 4 – с сигнальной постпроверкой – отличается от типа 1 тем,что возможен ввод значения,отсутствующего в справочнике, если после принудительного отображения справочника нажать клавишу <ESC>
· 5 – то же , что тип 2 только с разрешением ввода числового значения –1 (для уникальной привязки по счетчику
Потом смотрим на поставленное в функции значение и удивляемся
Joined: 12 May 2004 Posts: 69 Location: OOO Occupation: ООО "Авелит" Программист Interests: Кемерово
Posted: 25 Jul 2007 19:19 Post subject:
Quote:
и удивляемся
А удивляться то нечему.... потому как какую цифру не ставим, и чтобы нам было не обещано в хелпе получается всего две ситуации:
1) Нет проверки, справочник сам не выпрыгивает (цифры 3,4)
2) Есть проверка, но справочник выпрыгивает каждый раз после выхода из поля ввода (цифры 1,2,5)
Я почему и написал "как сделать" потому как цифра 1 в данном параметре не работает как описано...
т.е. в поле ввода стоит группа 00001, она есть в справочнике, но справочник всё равно выпрыгивает при переходе клавишей курсора или TABом..... а в хелпе написано:
Quote:
при непосредственном вводе значения,отсутствующего в справочника производится его принудительное отображение,и оператору предлагается выбрать правильное значение
т.е. как я полагаю справочник не выпрыгивает, если значение введенное в поле в нем присутствует.
Да и ладно бы выпрыгивал с установленным на данном значении указателем, ан нет, всегда указатель на первой записи...
а если код группы будет 00002 а номенклатура 000000000123 чего делать? Каждый раз выбира
Joined: 27 Jun 2005 Posts: 1000 Location: Горбунов Константин Occupation: БЭСТ-Партнер Interests: СПб
Posted: 26 Jul 2007 10:58 Post subject:
Функция работает корректно.
Ваш вопрос стал теперь более понятен.
Вам не понятен параметр 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])"
All times are GMT + 4 Hours Goto page Previous1, 2
Page 2 of 2
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