Если он такой как Вы написали (я спрашивал про имя тега в самом voditel.cdx)
то он звучит
UPPER(code+name+Voditel) и поиск по первым буквам в такой последовательности и надо начинать - с кода партнера, потом его наименование а уж потом водитель.
Для того чтобы начинать сразу с водителя, то следует определить начальную часть, как набранную, для этого и служит переменная cLeftKey В ней Вы можете определить заранее код и наименование партнера и тогда поиск можно начинать сразу с водителя.
ЧТобы разобраться с тем как она работает, поробуйте сначала задать ее явно, типа
Код
UPPER("000001Рога и копыта")
- ну или как там у вас. Когда получится, переходите к переменным.
Вот полноценный рабочий пример из моего плагина к БЭСТ-4
Создает справочник аналитических счетов по конкретному синтетическому счету
Делает в справочнике поиск по первым буквам в названии аналитического счета
сSch - синтетический счет из плана счетов
сAname - переменная в которую справочник возвращает наименование аналитики
Дмитрий я Вам дал пример, который работает.
С его помощью можно разобраться.
Если хотите им воспользоваться можете написать свой небольшой прг и в нем применить данный справочник.
Дальше уже Вашего самостоятельного освоения матриала.
Что касается сSch, то его можно задать вот так, например:
Код
Private сSch:="60 "
Только количество пробелов проверьте - не уверен что я точно отразил длину поля.
У меня нет отдельно работающих prg. Это из библиотеки.
Мне для этого надо садиться и писать этот пример специально для Вас.
Пусть это все-таки станет Вашим доманим заданием к теме уроков, как закрепляющий материал по освоению данного а
Дмитрий Хващевский пишет:
{||_Voditel->(SETSCOPE("UPPER(aIn[1])"))} - это 17 параметр
{||_Voditel->(SETSCOPE("UPPER()"))} - это 18 параметр
Дмитрий напишите сюда пожалуйста еще раз строго по пунктам:
1.Индексный ключ
2.Старшая часть ключа на которую планируем организовать фильтр по индексному ключу
18 параметр это мы снимаем скоп с индексного ключа, поэтому просто пишем SETSCOPE()
Индекс справочника автомобилей UPPER(code+name+MARKA)
Индекс справочника водителей UPPER(code+name+Voditel)
То есть Ф4, выбираем организацию (ее код и наименование), вводим марку авто, и должны закрепить за этой машиной основного водителя (нажимаем Ф2 и должен появиться список водителей закрепленных за этой организацией) Этих водителей мы заранее внесли в справочнике водителей.
Проверку делаем по коду (code), то есть у водителей которые должны выпадать в списке код должен совпадать с кодом организации при вводе марки авто.
Мы переходим к ликбезу.
У меня сейчас на это не так много времени.
Давайте так я попозже напишу, а вы тем временем откроете хелп к БЭСТу и прочитаете про
SETSCOPE()
Иначе мне Вас не научить.
Методом тыка или с наскока к правилам работы с индексными ключами подходить не правильно.
Моя задача не Вашу сиюминутную задачку помочь написать, а научить в принципе и увидеть Ваше понимание. (иначе Вы так и будете задавать ы, которые необходимо решать самостоятельно на месте)
С Вашей стороны требуется чтение документации по функциям разработчика и в первую очередь хелпа.
Остался один маленький вопросик.
По поводу корректировки. Например если я хочу изменить марку авто,
то если я захожу, нажатием ENTER, мне нужно снова вводить партнера, через справочник. Возможно с этим как нибудь побороться???
Дмитрий Хващевский пишет:
Получается, что старшая часть ключа это UPPER(code+name+Voditel)?
Это весь ключ.
Старшей частью ключа может быть либо UPPER(code) Либо UPPER(code+name)
Поскольку Вам нужен водитель - значит ищем что у нас является старшей частью до водителя, а это
UPPER(code+name) Вот таким образом мы и понимаем нужное нам значение скопа и старшую часть ключа.
Например, ввел нового водителя. И не правильно ввел отчество. Если не выходя из справочника, снова заходишь в позицию, код и наименование партнера не сбивается.
А если спустя не которое время, заходишь в справочник, выбираешь нужную строку, заходишь в нее, чтобы подкорректировать, то нужно заново производить поиск партнера. Неудобно
А еще, например, если знаю код партнера, набираю вручную не заходя по Ф2, хочу чтобы определила партнера,а он все равно заходит в справочник и стоит на позиции 000001.
Дмитрий Хващевский пишет:
Корректировка позиций справочника.
все параметры аналогичные Инитлист.
Посмотрите плз выше в список параметров, они легко бросаются в глаза.
Цитата
Дмитрий Хващевский пишет:
А еще, например, если знаю код партнера, набираю вручную не заходя по Ф2, хочу чтобы определила партнера,а он все равно заходит в справочник и стоит на позиции 000001.
параметр поиска в своих справочниках Вы игнорируете.
В моем примере выше он
"UPPER(cSch+aIn[1])" Т.е. строка в справочнике будет искаться по номеру синт.счета (cSch) плюс введенного значение аналитики (aIn[1])
Совсем уже голова кругом, все что писал выше связано с выбором партнера, тоесть справочника
_PARTNER->( MAKEREFER("PARTNERS","Справочник партнеров",2 ;
,{" Код ","Наименование партнера"," УНП"},;
{3,5,16}, "n/w,w+/n",{"code","SHORTNAME"},{"aIn[1]","aIn[2]"},,;
{{||FIELD->CODE},{||FIELD->SHORTNAME},;
{||FIELD->CODE_PR}},,,,,,,,,,,,,,,,,'cFind$UPPER(ShortName)';
,,,,,,,,,,,,,,,,,,,,"NAME") )