BEST logo логотип компании БЭСТ - программы для бизнеса ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
ПОДДЕРЖКА
+7 (495) 775-66-76
consult@bestnet.ru
СКАЧАТЬ
Обновления
Дистрибутивы
Авторизация

Логин:
Пароль:
Забыли свой пароль?
Регистрация
ВАШ ВОПРОС

Доступ к Личному кабинету закрыт!
Как получить доступ?


Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3 4 5 6 7 8 След.
Отображение в initlist только записей, удовлетворяющих определенному условию
 
Цитата
nordk пишет:
DBSETFILTER()
SETSCOPE()
Предварительно отфильтровать таблицу надо
Да я понимаю ,что dbsetfilter () .
А где ( в каком параметре) его записать?
Отображение в initlist только записей, удовлетворяющих определенному условию
 
Здравствуйте!
Надо чтобы Initlist отображал на экране не все записи из файла , а лишь те которые удовлетворяют некоторому условию. По описанию больше всего подходит aBlockCols ( других подходящих параметровя не нашел) :
Файл содержит три поля.Вот я задаю
aBlockCols:={{{||FIELD->code},0},{{||FIELD->period},7},{{||FIELD->date},16}}
Надо чтобы отображались на экране записи ,например, FIELD->code=="000002".

Как это записать?
Запуск плагина с отладкой в Бэст5 в 3.4
 
Цитата
nordk пишет:

Более правильно просить у разработчкика класс. отвечающий за создание проводок программным способом.
Просьба к Вам: Сформулировать и поставить такую задачу перед разработчиками. ( У Вас ,ведь, квалификация это сделать позволяет.)
Запуск плагина с отладкой в Бэст5 в 3.4
 
Цитата
Алексей Новиков пишет:
Смысл в том, что Вы пишете u_3.prg из одной строки
hfileeval('u_3.hrb')
и вызываете его через ПРОГР
Спасибо получилось.
Но только не понятно - почему в "отсталом и древнем " Бэст4 достаточно в групповой операции было написать : П1=ПРОГР("U_3.hrb",{})
И все работало.
А в прогрессивном и новом Бэст5 надо городить такие странные "ГОРОДКИ"
Запуск плагина с отладкой в Бэст5 в 3.4
 
Цитата
nordk пишет:
Если записать П1=ПРОГР("U_3.prg",{}) ,
А в самом pgr HFILEEVAL()
Извините,но не дошло!
Текст групповой операции:

П1=HFILEEVAL("U_3.hrb",{})
СООБ("Проверка")

Где U_3.hrb скомпилированный U_3.prg с содержанием из начала темы.
Выводит на экран только "Проверка".
"1" на экран так и не выводится . Окно отладчика не появляется.
Запуск плагина с отладкой в Бэст5 в 3.4
 
Здравствуйте!
Еще остался Вопрос .
Как запустить скомпилированный плагин в групповой операции.
Если записать П1=ПРОГР("U_3.hrb",{}) ,то при запуске групповой операции выдается синтетическая ошибка.
Если записать П1=ПРОГР("U_3.prg",{}) , т.е. без компиляции, То все работает как надо.
Запуск плагина с отладкой в Бэст5 в 3.4
 
Цитата
nordk пишет:
Поставьте в начале кода функцию ALTD()
Спасибо ,заработало!
Запуск плагина с отладкой в Бэст5 в 3.4
 
Здравствуйте!
Споткнулся на элементарном.
НЕ могу запустить с отладкой простейший плагин в Бэст 5 в3.4 .
Private a
altd()
a:='1'
sayandwait(a)

Последовательность действий :
1.Захожу в редактор XBA.
2.Открываю этот плагин.
3.Ставлю точки останова
4.Выбираю "Разрешить отладку"
5.Выполняю "сохранить"
6.Компилирую
7.Нажимаю "Переключиться на главное окно"
8.Запускаю плагин на выполнение ALT+1
Выходит сообщение "1".
Окно отладчика так и не появляется.
Что еще нужно сделать ,чтобы запустить плагин с возможностью отладки?
Макроподстановка в плагине без компиляции
 
Здравствуйте!
Нужно данные из n количества массивов объединить в один
в данном примере - из трех массивов

Код
Private i,j ,aMas1,aMas2,aMas3,aR,aVidn
aMas1:={'1','2','3'}
aMas2:={'4','5','6'}
aMas3:={'7','8','9'}
i:= 1
Do while i<= 3
aR:=&('"aMas"+alltrim(str(i))')
  if i<>2
     aeval(&aR,{|x|aadd(aVidn,x)})
  endif
i:= i+1
enddo
sayandwait(aVidn)
return
 
Если этот код скомпилировать в hrb ,то все работает!

А если я его запускаю без компиляции ( файл frm),
то массив aVidn пустой.
Отображение в MAKEREFER только записей, удовлетворяющих определенному условию
 
Цитата
Алексей Новиков пишет:
Вот так у меня работает:
_bPreDisp:= {|| DBSETFILTER({|| field->CODE_PR=cINN }, 'field->CODE_PR=cINN') }
Правда я ещё неоднозначности в объявлении переменных устранил.
Еще остался Вопрос .
А аргументы в функции DBSETFILTER
field->CODE_PR=cINN и 'field->CODE_PR=cINN'
всегда должны соответствовать друг другу?
Отображение в MAKEREFER только записей, удовлетворяющих определенному условию
 
Цитата
Алексей Новиков пишет:
{|| DBSETFILTER({|| field->CODE_PR=cINN }, 'field->CODE_PR=cINN') }
Да ,виноват ,каюсь "проморгал" и сделал синтетическую ошибку ( фигурную скобку не в том месте закрыл)
Попробовал написать так :
Код
    _bPreDisp:= {||DBSETFILTER({||_SPARTNER->CODE_PR=cINN},"_SPARTNER->CODE_PR=cINN")} 
Вроде тоже работает.
Спасибо!
Отображение в MAKEREFER только записей, удовлетворяющих определенному условию
 
Здравствуйте!
Переписал я код
Код
///********** запрашиваем код партнера  **********************************************
FUNCTION _Dialog()
//функция возвращает 
//  код контрагента
Local _top,_bot,_left,_right,_heads,_pic,_ref,_app,_spec,_getbl
Private  cINN:='5933'
altd()
aSet:=SAVESET()
aSetKey:=SAVESETKEY()


NetUse("_SPARTNER",LoadPath()+"PARTNER.dbf")
_SPARTNER->(ordsetfocus("FULTAG_INN"))
_out0:=SPACE(6) //код контрагента
//выходные параметры  -_out0  ,входящие в массив aDial
   _top:=7
   _bot:=8
   _left:=10
   _right:=70
   _heads:={{{_top,_left+32},"_out0"}}
   _pic:={'XXXXXX'}      
   _ref:={'SPARTN'}
   _app:=1
   _spec:='RESTOFF'
   _getbl:={NIL}

    DISPBOX(_top-1,_left-1,_bot+1,_right+1,'╔═╗║══╚║ ',"N/BG")
    SAYSCREEN(" ВЫБИРЕТЕ КОД ПАРТНЕРА ",_top-1,_left+2)
          SAYSCREEN("Партнер......................: ",_top,_left+2)

      _SPRAV_PARTN()
    QINPUT(_top,_left,_bot,_right,_heads,;  
           _app,_ref,_pic,,,;
           ,,,,_spec,;          
           _getbl,,,,,;   
         ,,,,"Сформировать отчет ?")
         
     _SPARTNER->(dbCloseArea()) 
  IF LASTKEY()!=27
     aDial:={_out0}
    else
     aDial:={}
  endif
RESTSETKEY(aSetKey)
RESTSET(aSet)
return aDial

   //функция вызова справочника партнеров
FUNCTION _SPRAV_PARTN()
    Local sAr,sAra,_namspr,_headspr,_typspr,_heads_sp,_mestosp,_colsp,_pnamsp,_pernamsp
    Local _cKeyVal,_fieldsp,_aSortSeek,_bPreDisp,_bPostDisp
    Local _findsp,_bYesArray,_bYesReplArray,_bYesNoRepl,_nOrdSeek,_cLeftKey
    sAr:=SELECT()
    sAra:=    SELECT("_SPARTNER")  
    _namspr:= "SPARTN"           
    _headspr:="Справочник контрагентов"
    _typspr:=1
    _heads_sp:={" КОД ","    НАИМЕНОВАНИЕ КОНТРАГЕНТА    ","         ИНН/КПП                "}
    _mestosp:={3,5,15}
    _colsp:='n/w,w+/n'
    _pnamsp:={"CODE"}  //массив имен полей справочника для занесения в GET-переменные
    _pernamsp:={"aIn[1]"}   //массив имен GET-переменных, в которые заносятся значения,полей справочника (их имена должны быть PRIVATE или PUBLIC)
    _cKeyVal:='UPPER(aIn[1])'
    _fieldsp:={{||FIELD->CODE},{||FIELD->SHORTNAME},{||FIELD->CODE_PR}}   //массив блоков кода для считывания содержимого полей справочника, по умолчанию считываются все поля целиком;
    _aSortSeek:={;
          {"- по коду        ",{"Шифр         "}, {'CODE'},'UPPER(aIn[1])',,,,'FULLCODE'},;
          {"- по наименованию",{"Наименование "}, {'SHORTNAME'},'UPPER(aIn[1])',,,,'FULLNAME'};
          } 

    _bPreDisp:= {||DBSETFILTER({||_SPARTNER->CODE_PR=cINN,"_SPARTNER->CODE_PR=cINN"})} //блок, выполняющийся перед отображениием справочника .
    _bPostDisp:={||_SPARTNER->(DbClearFilter())}
    _findsp:='cFind$UPPER(SHORTNAME)'  //контекстный поиск
    _tagsp:=1                          //номер тега, по которому производится Seek по cKeyVal
//    _tagsp:=FormulPars('_SPARTNER->( SETSCOPE(upper("CODE_PR"),cINN,,{"FULTAG_INN"}) )',{''})   //номер тега, по которому производится Seek по cKeyVal

     _nOrdSeek:='FULLNAME'  //индекс для возможности непосредственного поиска  по первым буквам
     _cLeftKey:="UPPER(aIn[1])"//ПОЧЕМУ_ТО нарушает работу _nOrdSeek старшая часть ключа для непосредственного поиска по буквам

     DBSELECTAREA(sAra)
    _SPARTNER->(MAKEREFER(_namspr,_headspr,_typspr,_heads_sp,_mestosp, ;
               _colsp,_pnamsp,_pernamsp,_cKeyVal,_fieldsp,;
               _aSortSeek,,,,, ;
                ,_bPreDisp,_bPostDisp,,, ; 
                ,,,,, ; 
                ,_findsp,_tagsp,,,;
                ,,,,, ;
                ,,,,, ; 
                ,,,,, ; 
                ,_nOrdSeek))

    DBSELECTAREA(sAr)
RETURN Nil
 
Прописал :
Код
 _bPreDisp:= {||DBSETFILTER({||_SPARTNER->CODE_PR=cINN,"_SPARTNER->CODE_PR=cINN"})}
    _bPostDisp:={||_SPARTNER->(DbClearFilter())}
Но все равно отображает все записи!
Отображение в MAKEREFER только записей, удовлетворяющих определенному условию
 
Здравствуйте!
Нужно, чтобы при открытии справочника партнеров в нем отображались только партнеры у которых ИНН
имеет определенное начальное значение.
Вот рабочий код.
Но при открытии отображаются все партнеры.
Может следующую строку надо как-то иначе задавать?
Код
_tagsp:=FormulPars('_SPARTNER->( SETSCOPE(upper("CODE_PR"),cINN,,{"FULTAG_INN"}) )',{''})

Код
///********** запрашиваем код партнера  **********************************************
FUNCTION _Dialog()
//функция возвращает 
//  код контрагента
Local _top,_bot,_left,_right,_heads,_pic,_ref,_app,_spec,_getbl
Private  cINN:='5933'
altd()
aSet:=SAVESET()
aSetKey:=SAVESETKEY()


NetUse("_SPARTNER",LoadPath()+"PARTNER.dbf")
_out0:=SPACE(6) //код контрагента
//выходные параметры  -_out0  ,входящие в массив aDial
   _top:=7
   _bot:=8
   _left:=10
   _right:=70
   _heads:={{{_top,_left+32},"_out0"}}
   _pic:={'XXXXXX'}      
   _ref:={'SPARTN'}
   _app:=1
   _spec:='RESTOFF'
   _getbl:={NIL}

    DISPBOX(_top-1,_left-1,_bot+1,_right+1,'╔═╗║══╚║ ',"N/BG")
    SAYSCREEN(" ВЫБИРЕТЕ КОД ПАРТНЕРА ",_top-1,_left+2)
          SAYSCREEN("Партнер......................: ",_top,_left+2)

      _SPRAV_PARTN()
    QINPUT(_top,_left,_bot,_right,_heads,;  
           _app,_ref,_pic,,,;
           ,,,,_spec,;          
           _getbl,,,,,;   
         ,,,,"Сформировать отчет ?")
         
     _SPARTNER->(dbCloseArea()) 
  IF LASTKEY()!=27
     aDial:={_out0}
    else
     aDial:={}
  endif
RESTSETKEY(aSetKey)
RESTSET(aSet)
return aDial

   //функция вызова справочника партнеров
FUNCTION _SPRAV_PARTN()
    Local sAr,sAra,_namspr,_headspr,_typspr,_heads_sp,_mestosp,_colsp,_pnamsp,_pernamsp
    Local _cKeyVal,_fieldsp,_aSortSeek,_bPreDisp
    Local _findsp,_bYesArray,_bYesReplArray,_bYesNoRepl,_nOrdSeek,_cLeftKey
    sAr:=SELECT()
    sAra:=    SELECT("_SPARTNER")  
    _namspr:= "SPARTN"           
    _headspr:="Справочник контрагентов"
    _typspr:=1
    _heads_sp:={" КОД ","    НАИМЕНОВАНИЕ КОНТРАГЕНТА    ","         ИНН/КПП                "}
    _mestosp:={3,5,15}
    _colsp:='n/w,w+/n'
    _pnamsp:={"CODE"}  //массив имен полей справочника для занесения в GET-переменные
    _pernamsp:={"aIn[1]"}   //массив имен GET-переменных, в которые заносятся значения,полей справочника (их имена должны быть PRIVATE или PUBLIC)
    _cKeyVal:='UPPER(aIn[1])'
    _fieldsp:={{||FIELD->CODE},{||FIELD->SHORTNAME},{||FIELD->CODE_PR}}   //массив блоков кода для считывания содержимого полей справочника, по умолчанию считываются все поля целиком;
    _aSortSeek:={;
          {"- по коду        ",{"Шифр         "}, {'CODE'},'UPPER(aIn[1])',,,,'FULLCODE'},;
          {"- по наименованию",{"Наименование "}, {'SHORTNAME'},'UPPER(aIn[1])',,,,'FULLNAME'};
          } 

    _bPreDisp:=Nil //блок, выполняющийся перед отображениием справочника .
    _findsp:='cFind$UPPER(SHORTNAME)'  //контекстный поиск
//    _tagsp:=2                          //номер тега, по которому производится Seek по cKeyVal
    _tagsp:=FormulPars('_SPARTNER->( SETSCOPE(upper("CODE_PR"),cINN,,{"FULTAG_INN"}) )',{''})   //номер тега, по которому производится Seek по cKeyVal

     _nOrdSeek:='FULLNAME'  //индекс для возможности непосредственного поиска  по первым буквам
     _cLeftKey:="UPPER(aIn[1])"//ПОЧЕМУ_ТО нарушает работу _nOrdSeek старшая часть ключа для непосредственного поиска по буквам

     DBSELECTAREA(sAra)
    _SPARTNER->(MAKEREFER(_namspr,_headspr,_typspr,_heads_sp,_mestosp, ;
               _colsp,_pnamsp,_pernamsp,_cKeyVal,_fieldsp,;
               _aSortSeek,,,,, ;
                ,,,,, ; 
                ,,,,, ; 
                ,_findsp,_tagsp,,,;
                ,,,,, ;
                ,,,,, ; 
                ,,,,, ; 
                ,_nOrdSeek))

    DBSELECTAREA(sAr)
RETURN Nil
 
6-НДФЛ, Выгрузка из БЭСТ-4 данных для формы 6-НДФЛ
 
Цитата
Андрей Евдокимов пишет:
Есть какие мысли по выгрузке из БЭСТ-4 данных для формы 6-НДФЛ
А в 6-НДФЛ разве данные нужные в разрезе каждого сотрудника?
Плагин загрузки данных из ТСД в БЭСТ4.
 
Здравствуйте!
Меня интересуют функции (пример их применения) ,позволяющие из плагина прямо обратиться к данным в ТСД .
Чтобы прямо в плагине их затем обработать и выгрузить в dbf/txt формат А уж затем стандартными средствами Бэст импортировать строки накладной.
Цитата
ВАЛЕРИЙ БОНДАРЧУК пишет:
Был опыт:
http://bestnet.ru/support/forum/index.php?PAGE_NAME=message&FID=22&TID=4363&MID=32680#message32680
По этим принципам можно работать если операция разовая.
Ну а если из ТСД нужно данные импортировать не одну сотню раз за день , то тогда нужно все в плагине прописать!
Плагин загрузки данных из ТСД в БЭСТ4.
 
Здравствуйте!
Возникла потребность загрузки данных из ТСД в БЭСТ4.
Где можно посмотреть,изучить и т.д. примеры плагинов загрузки данных из ТСД в Бэст4 , т.е. прямо в накладную.
Хотя прямо напрямую в накладную врядли получится. Вначале все равно придется выгружать из ТСД в txt или в dbf файл,а затем импортировать через механизм импорта строк накладной.
С уважением.
СЕРЪЕЗНАЯ ОШИБКА В РАСЧЕТЕ СРЕДНИХ, Расчет средних по отработанному времени
 
Цитата
Ирина Беликова пишет:
Добрый день!

Так что - Вы зря паникуете, нас всех ...
Видимо,нас всех послали писать плагины.
Без него в данной ситуации никак!!!
Кодовый блок в EVAL()
 
Прошу прощения.
Разобрался ошибка была в другом месте программы.
Тему,наверное, можно совсем удалить.
Но остался один Вопрос .

В каком случае программа будет быстрей работать :
1. Если оставить выражение Eval({||File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())})

как есть.

2 Или вместо него просто вызвать функцию
FUNCTION fFile_vr(a,b)
File_vr->(ADDREC())
File_vr->Vid:=a
File_vr->Vid_Name:=b
File_vr->(F_DBUNLOCK())
RETURN Nil
Кодовый блок в EVAL()
 
P.S.
Если из FUNCTION fFile_vr(a,b)
File_vr->(ADDREC())
File_vr->Vid:=a
File_vr->Vid_Name:=b
File_vr->(F_DBUNLOCK())
sayandwait('2')
RETURN Nil

убрать строку sayandwait('2') то , программа также ругается на " неверный аргумент"
Кодовый блок в EVAL()
 
Здравствуйте!

Код
 AEVAL(aStroki,{|Str| aStr:=Str,;
   AEVAL(aColonki,{|Col| 
aCol:=Col,iif(ascan(aAll,{|x| 
upper(x[1])=upper(aStr[1]).and.upper(x[2])=upper(aStr[2]).and.upper(x[3])=upper(aCol[1]).and.upper(x[4])=upper(aCol[3]).and.upper(x[5])=upper(aCol[5])})=0;
          .and.!File_vr->(dbseek(upper(aStr[1]+aStr[2]+aCol[1]+aCol[3]+aCol[5])));
          , ,;
          
 
Eval({||File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())});    
 
          );
      }); 
     })
 
aStroki,aColonki,aAll - это массивы, комбинации значений которых записываются в файл File_vr

Бэст ругается на строку
Eval({||File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())})
- "Неверный аргумент"

Если эту строку записать так :
Eval({||sayandwait('1'),File_vr->(ADDREC()),File_vr->Vid:=aCol[1],File_vr->Vid_Name:=aCol[2],File_vr->(F_DBUNLOCK())})
то РУГАНИ НЕТ,т.е надо перед File_vr->(ADDREC()) применить какую либо функцию.

Конечно ,можно вместо этой строки записать так:
fFile_vr(aCol[1],aCol[2]);
где fFile_vr
FUNCTION fFile_vr(a,b)
File_vr->(ADDREC())
File_vr->Vid:=a
File_vr->Vid_Name:=b
File_vr->(F_DBUNLOCK())
sayandwait('2')
RETURN Nil

Тогда все работает как надо.
Но как тогда правильно ( если это возможно ) написать выражение с использованием Eval({|| ?
Использование QINPUT() при выборе нескольких значений из справочника
 
1. Попробовал вообще из MAKEREFER убрать 9-й параметр cKeyVal .
Ситуация не изменилась!
2. Попробовал явно задать значение cKeyVal :
bb:='АОЗТ "Марат" '
cKeyVal:='upper(&bb)'
Ситуация не изменилась!

Получается не работает параметр cKeyVal ?
Изменено: gabov - 05.07.2015 16:51:55
Использование QINPUT() при выборе нескольких значений из справочника
 
Цитата
nordk пишет:
Вот это что за бред ?
Код
 function test1() 
local dd 
//altd() 
dd:={|x| m->MyRecs:={},_PARTNER->(dbseek(upper(ain[7]))),nil} 
//altd() 

Здравствуйте! Здесь я Плохо подумал.

Вот переписал :
Цитата
function test1()
local dd
altd()
m->MyRecs:={}
_PARTNER->(dbseek(upper(left(ain[7],15))))
altd()
return nil
После _PARTNER->(dbseek(upper(left(ain[7],15)))) курсор в справочнике партнеров встает именно на ту запись
которая редактируется,т.е все правильно, но при окончательном отображении справочника курсор продолжает вставать на запись где поле "наименование" не заполнено.
Использование QINPUT() при выборе нескольких значений из справочника
 
Цитата
nordk пишет:
Вы кстати там есть блока кода перед открытием справочника просто написать самостоятельно поиск нужной строки
Здравствуйте!
17 параметр изобразил вот так:
bPreDisp:={||test1()}

где test1() :
function test1()
local dd
//altd()
dd:={|x| m->MyRecs:={},_PARTNER->(dbseek(upper(ain[7]))),nil}
//altd()
return dd

Проблема не ушла!
Использование QINPUT() при выборе нескольких значений из справочника
 
Цитата
nordk пишет:
Читайте в Initlist - потому как это относится к Quinput,Initlist,Qbrowse
aIn[7] - это передаваемая в справочник переменная значит она формируется до вызова справочника
Пока ждал Вашего ответа нашел в описании Initlist эту переменную
Переписал плагин ,добавив в Initlist bPreGet 26 параметром {||test()}
А в MAKEREFER переписал 17 параметр bPreDisp:={||test1()}
Где :
function test()
altd()
bb:=ain[7]
altd()
return bb

function test1()
local dd
altd()
dd:={|x| m->MyRecs:={},nil}
altd()
return dd

Полный текст
Цитата
#include "inkey.ch"
Function Main()

LOCAL aSet,aSetKey,nTop,nBot,cColHead,aBlockCols,cCurproc,bDel,_aHeads,aWhen,aPic,nUniMode,nApp,aRef,cFindMacro
LOCAL aType,bYesArray,bYesReplArray,bCoProc ,bYesNoRepl,bPreDisp,aSortSeek
LOCAL bPreGet
Private myRecs,bb,cKeyVal
aSet:=SAVESET()
aSetKey:=SAVESETKEY()
SayAndWait("OK")
NETUSE("work_1",LOADPATH()+"\real\work_1.dbf",,.F.)
work_1->(dbcreateindex(GlobalTmpPath+"DATE","dtos(TEK_DATA)"))
work_1->(ordsetfocus("DATE"))
NETUSE("_Partner",LoadPath()+"partner.dbf",,.F.)
DISPBOX(2,0,23,79,( CHR( 201 ) + CHR( 205 ) + CHR( 187 ) + CHR( 186 ) + CHR( 188 ) + CHR( 205 ) + CHR( 200 ) + CHR( 186 )+' ' ),"W+/B")
nTop:=3
nBot:=22
cColHead:={" Дата Номер НАИМЕНОВАНИЕ Кол-во Цена Сумма "}
cCurProc:={||"2"}
aBlockCols:={{{||FIELD->tek_data},0},{{||FIELD->tek_nomer},9},{{||FIELD->name},16},{{||STR(FIELD->kol,5)},33},{{||STR(FIELD->cena,12,2)},39},{{||STR(FIELD->summa,12,2)},52}}
bDel:={||.F.}

aType:={{'1','Услуги системного инженера'}, ;
{'2','Услуги по программированию'},;
{'3','Услуги консультанта '}, ;
{'4','Услуги по терминальной св.'}}

_aHeads:={{"Введите дату работ.................:","TEK_DATA"},;
{"Введите номер документа............:","TEK_NOMER"},;
{"Наименование работ.................:","NAME"},;
{"Количество.........................:","KOL","1","1","0"},;
{"Цена...............................:","CENA","1","1","0"},;
{"Сумма (руб.).......................:","SUMMA"},;
{"Наименование контрагента...........:","Name_p"}}


// Для автоматического расчета суммы при вводе добавим
aWhen:={,,,,,{||aIn[6]:=aIn[4]*aIn[5]},,.T.}
// формат ввода данных
aPic:={,,,,,"999999999.99",}
// Для решения Вопрос а уникальности по индексу служит переменная
nUniMode=2
//
aRef:={,,,,,,"partners"}
aSortSeek:={;
{"- по коду ",{"Шифр "}, {'CODE'},'UPPER(aIn[1])',,,,'FULLCODE'},;
{"- по наименованию",{"Наименование "}, {'SHORTNAME'},'UPPER(aIn[1])',,,,'FULLNAME'};
}


cFindMacro:='cFind$UPPER(Name)'

//Переменные для возможности отметки нескольких записей
//MyRecs -массив в котором будут хранится отмеченные записи
bYesArray:={|x| IF(ValType(x)=='A',m->MyRecs:=x,m->myRecs)}
bYesReplArray:={|| FIELD->CODE }
bCoProc:={|| IIF(LastKey()==K_TAB, Keyb(K_ENTER), Nil) }
bYesNoRepl:={|x| .t.}
//bPreDisp:={|x| m->MyRecs:={},nil}
bPreDisp:={||test1()}

_partner->(ordsetfocus("name"))
cKeyVal:='upper(bb)'
altd()
_PARTNER->( MAKEREFER("PARTNERS","Справочник поставщиков",2 ,{" Код ","Наименование поставщика"," И Н Н "},{3,5,16}, ;
"n/w,w+/n",{"SHORTNAME"},{"aIn[7]"},cKeyVal,{{||FIELD->CODE},{||FIELD->SHORTNAME},{||FIELD->CODE_PR}},;
aSortSeek,,,,, ;
,bPreDisp,,,, ;
,,bCoProc,,, ;
,'cFind$UPPER(ShortName)',2,,,;
,bYesArray,,,, ;
,,,bYesReplArray,bYesNoRepl, ;
,,,,, ;
,'NAME') )

work_1->(INITLIST(nTop,nBot,cColHead,aBlockCols,cCurProc,;
_aHeads,aRef,aPic,aWhen,,;
nUniMode,bDel,,,,;
,,,,,;
,,cFindMacro,,, ;
{||test()},,,,))
altd()

work_1->( DBCLOSEAREA() )
_PARTNER->( DBCLOSEAREA() )
RESTSETKEY(aSetKey)
RESTSET(aSet)
RETURN NIL
SayAndWait("OK")
return NIL

function test()
altd()
bb:=ain[7]
altd()
return bb

function test1()
local dd
altd()
dd:={|x| m->MyRecs:={},nil}
altd()
return dd
В отладчике смотрю переменная bb имеет не пустое значение (также не пустое значение имеет aIn[7])
и оно равно наименованию партнера в редактируемом поле.
А вот переменная cKeyVal все время не меняет свое значение и равно 'upper(bb)'
Может ее надо как-то иначе задавать?
Использование QINPUT() при выборе нескольких значений из справочника
 
Цитата
nordk пишет:
Вообще то при вводе записи вы вводите в поле ввода значение, потом открываете справочник
При корректировке для заполнения aIn отвечает bPreGet
Параметр bPreGet в описании функции MAKEREFER() не нашел!
Страницы: Пред. 1 2 3 4 5 6 7 8 След.