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

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / БЭСТ-4  / ERROR DBFCDX/1201 Файл не индексирован

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
ERROR DBFCDX/1201 Файл не индексирован, Ошибка индекса справочника партнеров после записи в файл
 
Помогите плз.
БЭСТ4+ 12.01 SP73
Нужно печатать фискальный чек из накладной (Товары. Готовая продукция)

Написали программу, которая в XML файл пишет данные для фискального принтера. Программа запускается из расходных накладных через Ctrl+F5. Вот текст программы


PRIVATE FB,BUFF,nCena,nNDS,nVO,S,Sm,nKol,Skidka,Fl,xml_file,stroka
nCena:= 0
Fl:=0
nNDS:= " "
nVO:=" "
MPantner:=" "
Skidka:=0
k1:=0
xml_file:="c:\ArtSoft\04640020292909J1201005100000000110720140464.xml"
fb:=fcreate(xml_file)



DBPUSH("MDOCM","MDOCM","",{"UPPER(Sclad+Vid+Type+CodeDoc+NumDoc)",MDOC->(UPPER(Sclad+Vid+Type+CodeDoc+NumDoc))})
MDOC->(Reclock())

IF (MDOC->PAYTYPE = "ФискЧек") .and. (!EMPTY(MDOC->DATE0))
SayAndWait ("Чек по этой накладной уже пробит")
MDOC->PAYTYPE:= "ФискЧек"
MDOC->(F_DBUNLOCK())
DBPOP()
FCLOSE(FB)
ELSE
S:=0

PARTNER->(ordsetfocus("Partner"))

//Поиск контрагента по коду
PARTNER->(DBGOTOP())
DO WHILE ((PARTNER->(!EOF())) .AND. (PARTNER->CODE <> MDOC->AGENTCODE))

PARTNER->(DBSKIP())

ENDDO

BUFF:="Партнер - "+PARTNER->CODE_PR+CHR(13)+CHR(10)
FWRITE(FB,@BUFF,LEN(BUFF))
BUFF:="Партнер - "+PARTNER->SHORTNAME+CHR(13)+CHR(10)
FWRITE(FB,@BUFF,LEN(BUFF))

MLABEL->(ordsetfocus("MLabel"))
F_SETRELATION("MLABEL","UPPER(Grup+NNum)")

MGRUP->(ordsetfocus("MGrup"))
F_SETRELATION("MGRUP","UPPER(Grup)")

// Определяем вид оплаты
nVO:=IF(MDOC->CODEOPER="Г011","3","0")

BUFF:="Партнер - "+PARTNER->ORGNAME+CHR(13)+CHR(10)
FWRITE(FB,@BUFF,LEN(BUFF))


//Распечатываем в заголовке чека номер накладной
BUFF:="P;Чек N "+ALLTRIM(MDOC->NUMDOC)+";"+CHR(13)+CHR(10)
FWRITE(FB,@BUFF,LEN(BUFF))

DO WHILE !EOF()
nCena:= ROUND(IF(MDOC->L_NDS,MDOCM->CENAOUT,(MDOCM->SUMOUTR+MDOCM->SUM_NDS)/KOL),2)
nNDS:= IF(MGRUP->NDS=20,"2","3")
nKol:= MDOCM->KOL

IF MDOCM->CENAOUT=0
Fl:=1
ENDIF

BUFF:="S; ;"+ALLTRIM(SUBSTR(UPPER(MLABEL->NAME),1,20))+";"+ALLTRIM(STR(nCena,9,2))+";"
BUFF:=BUFF+ALLTRIM(STR(MDOCM->KOL,8,3))+";"+nNDS+";;;"+CHR(13)+CHR(10)
FWRITE(FB,@BUFF,LEN(BUFF))

DBSKIP()

S:=S+nCena*nKol

ENDDO



//Закритие чека
// BUFF:= "T; ;;;"+nVO+";"+ALLTRIM(STR(Sm,8,2))+";"
BUFF:= "T;0;"+nVO+";"+CHR(13)+CHR(10)
FWRITE(FB,@BUFF,LEN(BUFF))
BUFF:= "E;"
FWRITE(FB,@BUFF,LEN(BUFF))

IF Fl=0

MDOC->SUMMA0:= IF(MDOC->L_NDS,MDOC->SUMMA,MDOC->SUMMA+MDOC->SUM_NDS)
MDOC->PAYTYPE:= "Налог_Н"
MDOC->DATE0:= DATE()
MDOC->(F_DBUNLOCK())
FCLOSE(FB)

ELSE

FCLOSE(FB)

ENDIF

DBPOP()
ENDIF

Все прекрасно работает, чек формируется.
Но... После формирования чека, заходим в накладную, и при попытке вызова справочника партнеров (Partner) получаем ошибку "ERROR DBFCDX/1201 Файл не индексирован". Нужно только выйти из модуля, и зайти заново - тогда все нормально.
Помогите пожалуйста, куда пропадает индекс?
 
Закоментировал строку "PARTNER->(ordsetfocus("Partner"))" и все заработало.
Может есть другой вариант поиска контрагента? А то поиск простым перебором... долго и не красиво.
 
Вместо

Цитата
PARTNER->(ordsetfocus("Partner"))

//Поиск контрагента по коду
PARTNER->(DBGOTOP())
DO WHILE ((PARTNER->(!EOF())) .AND. (PARTNER->CODE <> MDOC->AGENTCODE))

PARTNER->(DBSKIP())

ENDDO

Поставьте
partner->(ordsetfocus('fullcode'), dbseek(upper(MDOC->AGENTCODE)))


Вы устанавливаете тэг "partner", которого нет у таблицы partner, поэтому после выхода из Вашего плагина файл остаётся "не индексирован".
С уважением, Новиков Алексей.
 
Цитата
Алексей Новиков пишет:
Вместо
Цитата
PARTNER->(ordsetfocus("Partner"))

//Поиск контрагента по коду
PARTNER->(DBGOTOP())
DO WHILE ((PARTNER->(!EOF())) .AND. (PARTNER->CODE <> MDOC->AGENTCODE))

PARTNER->(DBSKIP())

ENDDO

Поставьте
partner->(ordsetfocus('fullcode'), dbseek(upper(MDOC->AGENTCODE)))


Вы устанавливаете тэг "partner", которого нет у таблицы partner, поэтому после выхода из Вашего плагина файл остаётся "не индексирован".
Огромное спасибо. Убрал цикл, поставил команду "partner->(ordsetfocus('fullcode'), dbseek(upper(MDOC->AGENTCODE)))" - работает прекрасно!
 
а еще можно было partner->( dbseek(upper(MDOC->AGENTCODE),,"fullcode"))
В этом случае вы еще и индексный ключ не меняете функцией ordsetfocus а просто делаете поиск по нужному ключу
 
Здравствуйте.
Цитата
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

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

Вставил указанный вами код в плагин. Все работает.
Подскажите ,у этой функции есть еще где-то другое описание?
Заранее спасибо
Страницы: 1
Читают тему (гостей: 1)