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

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

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


Форум

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

Страницы: 1 2 3 След.
Принудительное завершение работы пользовательской функции
 
В Бэст 5 столкнулся с такой особенностью .Вот код:
Код
Private aDial
aDial:={}
altd()
dbpush()
sayandwait('1')
iF(empty(aDial),return, )
 dbpop()
return
 
При запуске плагина программа ругается на ошибку в строке
Код
iF(empty(aDial),return, )
Если его переписать так :
Код
  if empty(aDial)
    altd()
    sayandwait('2')
    return 
  endif
 
То "ругани " нет. В Бэст 4 первый вариант работал без проблем.
Почему в " крутом Бэст5 " , увы , выдаётся ошибка.

Кроме того, если переменную объявить так :
Код
Private aDial:={}
Т.е сразу же присвоить ей значение,то плагин
Код
altd()
dbpush()
  if empty(aDial)
    altd()
    sayandwait('2')
    return 
  endif
dbpop()
return

 
вообще перестаёт замечать условие
Код
 if empty(aDial)
Вроде бы писали, что Бэст5 в части программирования более "продвинутый" ,чем Бэст 4??
Функция __rddGetTempAlias()
 
В одной из тем Hotline увидел такое выражение:
cAliasOrdMove := __rddGetTempAlias()
DbUseArea(.T.,, "KADRY\ORDMOVE.DBF", cAliasOrdMove, .T.)

Чем оно отличается от простого открытия файла
dbOpenBases или Netuse , т.е.. в чем преимущества при использовании функции __rddGetTempAlias()?
Генерация кода аналитики
 
Здравствуйте!
Существуют ли стандартные функции для генерация кода аналитики в процессе работы плагина как для БЭСТ4 ,так и для Бэст5?
Заранее спасибо.
Выбор конкретной папки
 
Надо дать возможность в диалоговом окне пользователю выбрать конкретную папку.
Функция Select_Files( nT, nL, Path,cMaska) ,позволяет выбирать только файл.
Конечно, можно с помощью этой функции "выйти" на корневой каталог, но это в некоторых случаях может получиться как-то криво.
Путь к каталогам разной глубины вложенности
 
Здравствуйте!
В плагине надо получить полный путь ко всем файлам ,находящихся как в корневой папке, так и во вложенных
в нее подкаталогах.
Попробовал "покрутить" функцию Directory(_Path_Schabl+'*.*','HSD'), где _Path_Schabl-путь к корневой папке.
Но она возвращает в виде массива только каталоги 1-го уровня вложенности. Дальше ничего не видит.
С помощью чего можно решить проблему?
Описание функции DBxEval и применение функции FormulParsBlock в БЭСТ5
 
Здравствуйте!
Стал переделывать свои плагины под БЭСТ5 и наткнулся ,что нет описания функции
DBxEval ( раньше я просто брал куски типовых кодов ,написанных разработчиком, и особо не вникал в эти функции )

Какого либо описания функции DBxEval я вообще не нашел!

В help есть описание функции FormulParsBlockk(cFormul, aPars)
преобразование строки символов в блок кода,
· cFormul – преобразуемая строка;
· aPars – массив параметров для блока кода.
Но из материалов форума следует ,что применение ее в БЭСТ 5 нецелесообразно ,т.к она устарела.
А как и чем ее заменять?
Лидирующие нули при экспорте в Excel
 
Здравствуйте!
Экспортирую данные в EXCEL.
Возникла проблема при экспорте номенклатурного номера "убиваются" лидирующие нули.
Проблему решил через апостроф : oAS:Cells(nLine,2):Value:="'"+OEMTOANSI(File_col->NNUM)
oAS:Cells(nLine,2):NumberFormat:="#############"
Есть еще метод TEXT ,но не понял как его "прикрутить ". Или есть еще способы сохранять лидирующие нули ?
Отображение в initlist только записей, удовлетворяющих определенному условию
 
Здравствуйте!
Надо чтобы Initlist отображал на экране не все записи из файла , а лишь те которые удовлетворяют некоторому условию. По описанию больше всего подходит aBlockCols ( других подходящих параметровя не нашел) :
Файл содержит три поля.Вот я задаю
aBlockCols:={{{||FIELD->code},0},{{||FIELD->period},7},{{||FIELD->date},16}}
Надо чтобы отображались на экране записи ,например, FIELD->code=="000002".

Как это записать?
Запуск плагина с отладкой в Бэст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 только записей, удовлетворяющих определенному условию
 
Здравствуйте!
Нужно, чтобы при открытии справочника партнеров в нем отображались только партнеры у которых ИНН
имеет определенное начальное значение.
Вот рабочий код.
Но при открытии отображаются все партнеры.
Может следующую строку надо как-то иначе задавать?
Код
_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
 
Плагин загрузки данных из ТСД в БЭСТ4.
 
Здравствуйте!
Возникла потребность загрузки данных из ТСД в БЭСТ4.
Где можно посмотреть,изучить и т.д. примеры плагинов загрузки данных из ТСД в Бэст4 , т.е. прямо в накладную.
Хотя прямо напрямую в накладную врядли получится. Вначале все равно придется выгружать из ТСД в txt или в dbf файл,а затем импортировать через механизм импорта строк накладной.
С уважением.
Кодовый блок в 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() при выборе нескольких значений из справочника
 
Нужно из справочника выбрать несколько значений через отметку клавишей Insert.
Возможно ли это сделать при помощи функций MakeRefer() и QINPUT() или для этого нужно использовать Initlist() ?
Размер экранного шрифта при работе через удаленный рабочий стол. Бэст4
 
Здравствуйте!
Сеть из 2-х компьютеров.
Win 7 (макс) - невыдел. сервер и Win Xp. Мониторы ( разрешение и размеры) разные.
C Win Xp. пользователь через удаленный рабочий стол работает с Бэст4.
Несмотря на то ,что пользователи запускают Бэст с разных рабочих столов и разных ярлыков , размер экранного шрифта у них одинаков.Хотя для каждого ярлыка (окна) в левом верхнем углу окна в свойствах был задан свой размер шрифта. Т.е . изменение размера экранного шрифта для одного пользователя приводит к изменению размера экранного шрифта для другого пользователя .Не удобно работать - для одного пользователя окно Бэста большое, для другого - маленькое.Как бороться?
Заранее спасибо.
Проверка на контрольное значение при использовании QINPUT
 
Здравствуйте!
Немного переделанный блок кода из предыдущей темы :
FUNCTION Main()
Private aMas:={}
Private aParam
dbpush()
aParam:={{"01/01/2014","аааааааа",50,400},{"02/01/2014","бббббббббббб",80,400},{"03/01/2014","ввввввв",300,400}}
//altd()
_DialogSay(aParam)
dbpop()
return

FUNCTION _DialogSay(x)
Local _top,_bot,_left,_right,_heads,_pic:={},_ref:={},_app,_spec,_getbl:={}
Local j:=0,aHeads:={},_value:=0
Private _head:='',cVar
For nPos:=1 to len(x)
cVar:='head_'+alltrim(str(nPos))
private &cVar
&cVar:=0
next
altd()
_top:=3
_bot:=len(x)+2
_left:=3
_right:=76
j:=1
//altd()
Do While j<=len(x)
_head:="head_"+alltrim(str(j))
aadd(aHeads,{{_top+j-1,_left+63},&('_head')})
&_head:=x[j,3]
j:=j+1
enddo

aeval(x,{|| aadd(_pic,'999999')})
_ref:={}
_app:=1
_spec:='RESTOFF'
aeval(x,{|| aadd(_getbl,NIL)})
DISPBOX(_top-1,_left-1,_bot+1,_right+1,'╔═╗║══╚║ ',"N/BG")
SAYSCREEN(" ЗАПОЛНЕНИЕ ОБЪЕМОМ ПРОИЗВЕДЕННОЙ ПРОДУКЦИИ ",_top-1,_left+2)
j:=0
aeval(x,{|x| SAYSCREEN(x[1]+' '+x[2],_top+j,_left+2),j++})
QINPUT(_top,_left,_bot,_right,aheads,_app,_ref,_pic,,,,,,,_spec,_getbl,,,,,,,,,"Сформировать отчет ?")
IF LASTKEY()!=27
j:=1
Do While j<=len(x)
_value:=&_head
aadd(aMas,_value)
j++
enddo
else
aMas:={}
endif
return aMas

Какой параметр в функции QINPUT отвечает за проверку вводимых значений? И как это сделать?
Надо чтобы общая сумма всех значений (&_head:=x[j,3]) , которое введет пользователь должна быть равна некоторому контрольному значению .В данном случае это четверый элемент массива aParam x[j,4].
При этом нужно не давать пользователю выйти из диалогового окна до тех пор ,пока не введет значения ,
которые в сумме будут равны общей контрольной сумме .Желательно чтобы в "подвале" диалогового окна отражалась запись с содержанием " неверная контрольная сумма".
В Help по этому Вопросу ни чего не нашел.
Заранее спасибо
Не явное имя переменной в полее ввода при использовании функции QINPUT
 
Здравствуйте!
Пытаюсь с помощью функции QINPUT создать диалоговое окно,которое заполняется
данными из массива,полученного в ходе выполнения плагина. в нижеследующем примере
это переменная aParam :
FUNCTION Main()
Private _data_n,_data_k,_data_r
Private aMas
Private aParam
dbpush()
aParam:={{"01/01/2014","аааааааа",1,'head_1'},{"02/01/2014","бббббббббббб",2,'head_2'},{"03/01/2014","ввввввв",3,'head_3'}}
altd()
_DialogSay(aParam)
dbpop()
return

FUNCTION _DialogSay(x)
Local _top,_bot,_left,_right,_heads,_pic:={},_ref:={},_app,_spec,_getbl:={}
Local j:=0,aHeads:={}
Local _head //head_n .......
Local _field:='',_zag:=' '
Local head_1:=1,head_2:=2,head_3:=3
//дата конца формирования отчета
_data_n:=111111
_data_k:=222
_data_r:=9999
//выходные параметры -_data_n ,_data_k,_data_r,входящие в массив aMas
_top:=3
_bot:=len(x)+2
_left:=3
_right:=76
j:=1
// ЗДЕСЬ ПЫТАЮСЬ задать имя переменной
// Do While j<=len(x)
// _head:="head_"+alltrim(str(j)) // так
// _head:=x[j,4] // или так
// _head:=x[j,3] // присвоение значение переменной
// aadd(aHeads,{{_top+j-1,_left+63},_head})
// j:=j+1
// enddo

aheads:={{{_top,_left+67},"_data_n"},{{_top+1,_left+67},"_data_k"},{{_top+2,_left+67},"_data_r"}} // вот с ним //проблема
aeval(x,{|| aadd(_pic,'999999')})
_ref:={}
_app:=1
_spec:='RESTOFF'
aeval(x,{|| aadd(_getbl,NIL)})
_getbl:={}
DISPBOX(_top-1,_left-1,_bot+1,_right+1,'г=┐│-=L│ ',"N/BG")
SAYSCREEN(" ЗАПОЛНЕНИЕ ОБЪЕМОМ ПРОИЗВЕДЕННОЙ ПРОДУКЦИИ ",_top-1,_left+2)
j:=0
aeval(x,{|x| SAYSCREEN(x[1]+' '+x[2],_top+j,_left+2),j++})
QINPUT(_top,_left,_bot,_right,aheads,_app,_ref,_pic,,,,,,,_spec,_getbl,,,,,,,,,"Сформировать отчет ?")
IF LASTKEY()!=27
aMas:={_data_n ,_data_k,_data_r}
else
aMas:={}
endif
return aMas


Не получается в массиве aheads избавится от явно задаваемых переменных _data_n ,_data_k,_data_r

Строка _head:="head_"+alltrim(str(j)) или строка _head:=x[j,4] позволяет задать имя переменной для ввода и вывода,.
А вот значение ей не удается задать.
Как это сделать?
Заранее спасибо.
Обращение к полю БД из формулы типовой операции ( Товары.ГП)
 
Здравствуйте!
Нужно прямо из формулы типовой операции (Товары,ГП) обратиться к определенному полю файла Partner.

Без написания плагина это как-то можно сделать? Кажется я раньше встречал как это сделать,но найти не смог. Это нужно для Бэст 4 и Бэст 5
Заранее спасибо
Вопрос по DBSEEK
 
Здравствуйте. Вопрос из темы http://www.bestnet.ru/support/forum/index.php?PAGE_NAME=read&FID=10&TID=6475
Цитата
Цитата nordk пишет:
а еще можно было partner->( dbseek(upper(MDOC->AGENTCODE),,"fullcodeВ этом случае вы еще и индексный ключ не меняете функцией ordsetfocus а просто делаете поиск по нужному ключу
Посмотрел описание dbseek()
Syntax
DBSEEK(<expKey>, [<lSoftSeek>],[<lFindLast>]) --> lFound
Arguments
<expKey> Any expression
<lSoftSeek> Toggle SOFTSEEK condition
<lFindLast> is an optional logical value that set the current record position to the last record if successful
Returns

Третий параметр этой функции логический.
У Вас другой - имя индекса.

Вставил указанный вами код в плагин. Все работает.
Подскажите ,у этой функции есть еще где-то другое описание?
Заранее спасибо
Как записать в кодовом блоке несколько команд?
 
Здравствуйте!
Можно ли в кодовом блоке сразу вызвать на выполнение несколько команд
Например:

function main()
Local aCol:={1,2,3}
aeval(aCol,{|x| if(x=4,sayandwait("Нет такого значения") return, )})
return

Бэст на строку aeval(aCol,{|x| if(x=4,sayandwait("Нет такого значения") return, )}) выдает ошибку.
Как иначе можно это выражение записать?
Заранее спасибо.
Поиск в массиве ,если переменнаяимеет пустое значение
 
Здравствуйте!
Случайно "споткнулся " на такую ситуацию.
В данном случае значение выражения ascan(aTm,nTermin) получается "Истинным",что не верно.
пример :
function main()
Private aTm:={"Один"}
Private nTermin:=''
IF ascan(aTm,nTermin)>0
sayandwait('1')
else
sayandwait('2')
endif
return



В данном случае значение выражения ascan(aTm,nTermin) получается "Ложным",что правильно
Пример :
function main()
Private aTm:={"Один"}
Private nTermin:=''
IF ascan(aTm,{|x| upper(x)==upper(nTermin)})>0
sayandwait('1')
else
sayandwait('2')
endif
return

Т.е для поиска в массивах необходимо ОБЯЗАТЕЛЬНО ( во избежание ошибок) использовать кодовый блок?
Вопрос об актуальности содержания файла imp1c01.prg. ( импорт банк.выписок в формате 1с)
 
Здравствуйте!
На HL в разделе Бэст4 практически уже не отвечают ,поэтому Вопрос сюда.
Импорт выписок банка в формате 1с.
В папке source\bank\ находится файл imp1c01.prg.
Дата создания 26/02/08.
В папке extensns \bank\ находится файл imp1c01.hrb
Дата создания 08/09/09
Содержание исходника imp1c01.prg соответствует содержанию imp1c01.hrb или нет?
Новые печатные формы кассовых документов с 01/01/2014 г ( в проекте)
 
Здравствуйте!
Постановление о применении новых печатных форм кассовых документов и платежных ведомостях пока не принято.
Кто-то уже " делал" шаблоны этих печатных форм для Бэст4?
Как в плагине получить номер последней накладной по складу
 
Возникла необходимость импорта накладных в Бэст 4 .
Решил использовать механизм удаленного склада,т.е . программе в режиме
импорта складских документов с удаленного склада "подсовывать" файл.
Но встал Вопрос с порядковой нумерацией накладных после импорта.
Номер последней накладной ( по каждому складу в отдельности центр.комплекса) для последующей
нумерации накладных в импортируемом файле можно взять из файла MDOC .
А кроме MDOC и MDOCM где еще хранятся (или записываются после сохранения накладных)
номера последних документов?
Заранее спасибо.
Как выгрузить Excel при обращении к нему в плагине?
 
Здравствуйте!
Фрагмент кода :
TRY
oApp := CreateObject( "Excel.Application" )
CATCH
Alert("Excel не доступен!")
RETURN .F.
END
ALTD()
try
oWorkBook:=oApp:WorkBooks:open(OemToAnsi(cFileName),0)
catch
alert('Ошибка открытия входного файла. Не удалось открыть файл.')

RETURN .F.
end
try
oWorkSheet:=oWorkBook:worksheets(OemToAnsi('Лист1'))
catch
alert('Ошибка открытия входного файла. Не удалось открыть лист с данными')
RETURN .F.
end

Если в книге cFileName нет листа 'Лист1', то плагин прекращает работу.
Но при этом в диспетчере задач можно увидеть ,что excel.exe так и остался "висеть " в перечне процессов.
Какой командой его можно выгрузить в БЭСт 4 и в Бэст5?
Заранее спасибо.
Страницы: 1 2 3 След.