Урок 3. Учимся создавать справочники и использовать их при вводе

Перечень изучаемых функций InitList(), Makerefer()

Задача урока:

· создать справочник
· подключить его к режиму ввода
· В справочнике будем отражать Код и Наименование
· Организация поиска в справочнике по первым буквам
· Организация поиска в списке
Выполнение:

1. Включим в экранную форму поле Name_p для создания по ней справочника

2. Создаем справочник

· Используем для этого базу partner.dbf
· добавим в код примера NETUSE("_Partner",LoadPath()+"partner.dbf",,.F.) и разумеется в конец программы _partner->( DBCLOSEAREA() )
· создадим по ней справочник
_PARTNER->( MAKEREFER("PARTNERS","Справочник поставщиков",2;
,{" Код  ","Наименование поставщика","    И Н Н    "},                        ;
{3,5,16}, "n/w,w+/n",{"SHORTNAME"},{"aIn[7]"},,                              ;
{{||FIELD->CODE},{||FIELD->SHORTNAME},                                      ;
{||FIELD->CODE_PR}},,,,,,,,,,,,,,,,,'cFind$UPPER(ShortName)')

3. Подключим справочник к режиму ввода

· Изменим наш массив с переменными ввода на
_aHeads:={{"Введите дату работ.................:","TEK_DATA"}, ;
{"Введите номер документа............:","TEK_NOMER"}, ;
{"Наименование работ.................:","NAME"},;
{"Количество.........................:","KOL",,,"0"},;
{"Цена...............................:","СENA",,,"0"}, ;
{"Сумма (руб.).......................:","SUMMA"}, ;
{"Наименование контрагента...........:","Name_p"}}
· Теперь определим массив имен справочников aRef:={,,,,,,"partners"}
· Осталось переписать наш InitList следующим образом
WORK->( INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc,;
_aHeads,aRef,aPic,aWhen,,;
nUniMode,bDel,,,,))
 

4.Организуем поиск в справочнике по первым буквам

- Допустим по наименованию поставщика

Это значит нас интересует параметр 47 - тег поиска по первым буквам. Возьмем 'NAME' и перепишем нашу задачу

 _PARTNER->( MAKEREFER("PARTNERS","Справочник поставщиков",2;
,{" Код ","Наименование поставщика"," И Н Н "},;
{3,5,16}, "n/w,w+/n",{"SHORTNAME"},{"aIn[7]"},,;
{{||FIELD->CODE},{||FIELD->SHORTNAME},;
{||FIELD->CODE_PR}},,,,,,,,,,,,,,,,,'cFind$UPPER(ShortName)';
,,,,,,,,,,,,,,,,,,,,'NAME'))

5. Организация поиска в списке

- Создадим параметр cFindMacro:='cFind$UPPER(Name)'

- Перепишем строку в программе

work->(INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc,;
_aHeads,aRef,aPic,aWhen,,;
nUniMode,bDel,,,,;
,,,,,;
,,cFindMacro))

И поиск по ALT-F7 а заодно и фильтр у Вас заработают,а в справочнике если обратите внимание такой параметр уже присутствует