
#include "s_public.ch" //обязательно указывать во всех листингах


FIELD Grup,NNum,Ed //объявление полей, чтобы компилятор не давал подозрительных ссылок


PROCEDURE Coprocedure()
LOCAL aSetKey:=SaveSetKey() //запоминаем навешанные ранее горячие клавиши
LOCAL cScreen:=SAVESCREEN() //запоминаем экран
LOCAL nTop:=5,nBottom:=17 //УМЕНЬШИМ ГРАНИЦУ ДО 17, ЧТОБЫ СДЕЛАТЬ ПОДВАЛ
LOCAL cHead:='Мой номенклатурный справочник' //первый заголовок
LOCAL cHead1:='тестовый пример' //второй заголовок (под первым)
LOCAL cHelp:="F8:Удалить" //строка помощи внизу экрана 
LOCAL cColHead:=; //заголовок колонок
"Группа Ном.номер  Наименование                                          Ед.изм"  
*12345 1234567890123 12345678901234567890123456789012345678901234567890  12345
*1234567890123456789012345678901234567890123456789012345678901234567890123456789
LOCAL aBlockCols:={;
{{||Grup},1},; //отображаем поле Grup, начиная со 1 позиции экрана
{{||NNum},7},; //поле NNUM, начиная с 7 позиции
{{||LEFT(Name,50)},21},; //первые 50 символа наименования, начиная с 21 позиции
{{||Ed},73}; //поле Ed, начиная с 73 позиции 
}
LOCAL bCoProc:={||CoPro()} //СОПРОЦЕДУРА,ВЫПОЛНЯЮЩАЯСЯ ПРИ КАЖДОМ ПЕРЕМЕЩЕНИИ ПО РЕЕСТРУ
//ОФОРМЛЕНА В ВИДЕ БЛОК-КОДА

//открываем таблицу по пути sclad\mlabel.dbf c алиасом MLabel;
//функция БЭСТ LoadPath() возвращает путь до папки с БД выбранного предприятия
IF NetUse("MLabel",LoadPath()+"sclad\mlabel.dbf").AND.;  //если открытие успешно
   NetUse("MGrup",LoadPath()+"sclad\mgrup.dbf")
   SELECT MLabel
   SET RELATION TO UPPER(Grup) INTO MGrup
   InitScreen(cHead,cHead1,cColHead,,cHelp) //специальная функция БЭСТ для подготовки экрана
   @ 18,1 SAY REPLICATE("─",78) COLOR "w/b" //нарисуем разделительную черту перед подвалом 
   InitList(nTop,nBottom,cColHead,aBlockCols,bCoProc) //основная процедура БЭСТ для работы с реестром
ENDIF
DbCloseArea() //закрываем таблицу
RestScreen(,,,,cScreen) //возвращаем экран, какой был до этого
RestSetKey(aSetKey) //возвращаем горячие клавиши, которые были до этого
RETURN


//СОПРОЦЕДУРА (Static-функция - видна только в данном файле - листинге ),
//поэтому аналогичное название можно использовать и в других листингах
STATIC FUNCTION CoPro() 
@ 19,2 SAY "Группа: "+MGrup->Name //ОТОБРАЖАЕМ ГРУППУ В ПОДВАЛЕ ПРИ КАЖДОМ ПЕРЕМЕЩЕНИИ
RETURN 1 //возврат 1 - означает, что не надо перерисовывать экран


/**********
В результате выполнения этой процедуры, мы получили отображение простейшего
реестра, с уже готовыми горячими вызовами (по Alt) калькулятора, блокнота,
курсов валют и экспорта в Excel. Работает также клавиша F8 - удаление.
При каждом перемещении курсра работает сопроцедура, которая отображает 
наименование группы из связанной таблицы MGrup.
*********/
