Странное поведение отладчика
Select messages from
# through # FAQ
[/[Print]\]

-> Программирование в БЭСТ-4

#1: Странное поведение отладчика Author: dvkdvkLocation: Дмитрий Коньяков PostPosted: 25 Oct 2007 20:56
    —
Пошагово отлаживая в отладчике плагин столкнулся со следующей проблемой (БЭСТ-4 Управление продажами). Плагин записан в файл *.prg и положен в каталог ...pro\plugins\source\REAL далее открыт по Ctrl+F5, F11 и отранслирован по F2 с записью отладочной инвормации. Далее создана спецфункция на вход в документ с указанием файла *.hrb (почему так подробно описываю - думаю, может опять что-то делаю не так и проблема именно в этом).
Если теперь открыть любой заказ, запускается отладчик и пошагово можно пройти весь код, но тут возникает следующий парадокс, отладчик пошагово пробегает весь код до завершающего RETURN .t. и после этого прыгает в середину кода!!! (в ниже приведенном коде это место отмечено "//С этого места делается повторно" и дальше пошагово идет до конца оператора if !!! В целом код работает нормально - но несколько раз с другим вариантом этого кода у меня получалось, что этот "прыжок" в середину кода может происходить постоянно и тогда плагин зацикливается Выглядит это так: при входе в документ начинается мерцание экрана, БЭСТ не реагирует на клавиши... Раньше я с таким сталкивался (но к БЭСТу это не имело отношения) когда переполнялся стек и при возврате ( происходящем по RETURN) адрес возврата из стека извлекался не верный, и програма прыгала - куда бог послал... Подскажите что может быть? (или опять куки кривые)

Привожу злосчастный плагин. Для упрощения все условия заминил на явные чтобы незадуривать мозги. Плагин закрывает доступ ко всем полям заказа кроме скидки и примечания.

FUNCTION MAIN()
LOCAL dName,lName,dAnalit1
IF 1=1
IF 1=1
IF 1=2

ELSE
SAYANDWAIT('Вы вошли в чужой документ')

//С этого места делается повторно
GETLIST[1]:PREBLOCK:={||.F.}
GETLIST[2]:PREBLOCK:={||.F.}
GETLIST[3]:PREBLOCK:={||.F.}
GETLIST[4]:PREBLOCK:={||.F.}
GETLIST[5]:PREBLOCK:={||.F.}
GETLIST[6]:PREBLOCK:={||.F.}
GETLIST[7]:PREBLOCK:={||.F.}
GETLIST[8]:PREBLOCK:={||.F.}
GETLIST[9]:PREBLOCK:={||.F.}
GETLIST[10]:PREBLOCK:={||.F.}
GETLIST[11]:PREBLOCK:={||.F.}
GETLIST[12]:PREBLOCK:={||.F.}
GETLIST[13]:PREBLOCK:={||.F.}
GETLIST[14]:PREBLOCK:={||.F.}
GETLIST[15]:PREBLOCK:={||.F.}
GETLIST[16]:PREBLOCK:={||.F.}
ENDIF
ENDIF
ELSE

ENDIF
RETURN .t.

Кстати назревает и второй вопрос: Если закрыть доступ ко всем полям
добавив GETLIST[17]:PREBLOCK:={||.F.} то происходит то самое зацикливание о котором я уже писал. Получается что заполнить "шапку" заявки в плагине нельзя запретить доступ ко всем полям, хоть одно поле, например примечание должно остаться доступны

#2:  Author: nordkLocation: Горбунов Константин PostPosted: 25 Oct 2007 21:17
    —
Честно говоря я не пробовал закрывать все поля.
А вы интереса ради посмотрите в базах не происходит ли при этом еще и запись документа.
Не получается ли так что речь идет не о зацикливании а о стандартном вводе следующего документа в БЭСТе и повторном
запуске плагина на вход...?



-> Программирование в БЭСТ-4


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Page 1 of 1

Powered by phpBB © 2001, 2005 phpBB Group