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

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / Трудности с системным реестром.

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1
RSS
Трудности с системным реестром., Текущая запись выходит за скоб.
 
Сводные заказы.
Необходимо, выполнить:
Код
 IF(Rlock())
          MDOC->STATUS:="3"
          MDOC->STATUS1:=0
          Unlock
        ENDIF

Скоб в реестре стоит такой:
DbPush("MDOC","Rbook","",{"STATUS+UPPER(DOPCODE)+DTOS(DATE)","4","4"})
/*К стати функция SetScope() НЕ РАБОТАЕТ как указано в описании. Все собирался задать этот Вопрос, но "руки не доходили". Наверное со времен СП8 или 10 пользуюсь DbPush, т.к. Сет Скоп не ставит нижнюю и верхнюю границы!!!!*/

И естественно данная запись выходит за пределы скоба.

Проблема:

После выполнения спецфункции, котрая переводит сводник в заявки на продажу в черновики (это делает кусок приведенного выше кода) происходит следущее:
В РЕЕСТРЕ активной становиться первая строка, а должна предыдущая...

(Т.е. таблица полностью перегружается...)

Как сделать правильно!!???

Такое ощущение что спецфункция вызывается так:

nRecno:=RecNo()
FileEval("UserFile")
Goto nRecno
//А т.к. запись nRecno выходит за пределы скоба, таблица перегружается...

Попутно еще Вопросы. Из описания:
QUp (nBot) – вверх на одну позицию со скроллингом в области nTop–nBot;
Я честно говоря так и не понял как она работает...

Когда мне нужно переместить а "курсор" в InitList на поз вверх или вних я делаю так:
KEYBOARD Chr(5)
KEYBOARD Chr(24).
Вопрос: что же делает QUp()/QDown() [Делают они все что угодно, но не перемещают указатель активной строки].

Как правильно делать перещение по реестру (имитация нажатия курс клавиш верх/низ)
Изменено: Саак Шахламджян - 23.12.2008 12:29:21
 
Правило номер один.
Используйте свои имена алиасов.
Т.е. таблицу надо открыть со своим именем алиаса в плагине а потом аккуратно закрыть.
Скоб лучше накладывать через SETSCOPE()
И указывать имена тегов, на которые Вы хотите наложить скоб. Потому что не факт что все теги имеют одинаковую старшую часть ключа.
После установки скоба следует "пошевелить" курсор средствами DBGOTOP(),DBSEEK() и т.п. Т.е. курсор должен оказаться на записи соответствующей скобу.
Дальше все будет работать без проблем.
Изменено: nordk - 23.12.2008 16:00:14
 
Цитата
nordk пишет:
Правило номер один.
Используйте свои имена алиасов.
Т.е. таблицу надо открыть со своим именем алиаса в плагине а потом аккуратно закрыть.
Скоб лучше накладывать через SETSCOPE()
И указывать имена тегов, на которые Вы хотите наложить скоб. Потому что не факт что все теги имеют одинаковую старшую часть ключа.
После установки скоба следует "пошевелить" курсор средствами DBGOTOP(),DBSEEK() и т.п. Т.е. курсор должен оказаться на записи соответствующей скобу.
Дальше все будет работать без проблем.


Неужели думаете я не делал DbGotop(), ..GoBottom()?? Использовал, говорю же. После отработки плагина упорно удет на ту запись где стояло до этого...

Сделал ВСЕ как Вы сказали. Таблицы сам открыл, сделал все, что мне надо. Упорно "перегружает" таблицу, попадая на первую строку....

P.S. DbPush()/pop все равно удобнее пользоваться... Сразу и таблицу выбираем и/или индекс выбираем и/или ставим фильтр и/или скоб и сохраняем предыдущие параметры...
Изменено: Саак Шахламджян - 24.12.2008 09:03:26
 
Таже самая картина происходит и в реестре "Заявки на продажу", правда там "курсор" перемещается в конец таблицы:
Код
 IF(Rlock())
          MDOC->STATUS:="4"
          MDOC->STATUS1:=1
          Unlock
        ENDIF  


Не помогает ничего. Ни DbSeek(), ни DbGotOP() или Bottom...
Ни даже так:

Код
DBPUSH()
sOrderId:=MDOC->NNOPER
USE (LOADPATH()+"real\rbook") NEW SHARED ALIAS "ORDERS"
OrdSetfocus("TAG_OPER")
If(DbSeek(sOrderId))
        IF(Rlock())
          ORDERS->STATUS:="4"
          ORDERS->STATUS1:=1
          Unlock
        ENDIF   
endif
Close ORDERS
DBPOP()
    ? DbSEEK("3")
DbGoTOP()
return


В итоге "курсор" все равно в конце списка... Т.е. картина аналогична той, что происходит в реестре сводных заказаов...
Изменено: Саак Шахламджян - 24.12.2008 10:23:42
 
Цитата
Саак Шахламджян пишет:
Неужели думаете я не делал DbGotop(), ..GoBottom()?? Использовал, говорю же. После отработки плагина упорно удет на ту запись где стояло до этого

А никто Вам не обещал что после плагина Вы останетесь на Вашей строке !!!
Все правильно БЭСТ пытается вернуться в состояние до старта плагина.
В БЭСТ-4 на Инитлист было событие "позиционирование"
В БЭСТ-5 я такого события не вижу
 
Цитата
nordk пишет:

А никто Вам не обещал что после плагина Вы останетесь на Вашей строке !!!
Все правильно БЭСТ пытается вернуться в состояние до старта плагина.
В БЭСТ-4 на Инитлист было событие "позиционирование"
В БЭСТ-5 я такого события не вижу

Так вот это очень Плохо!!!! Просто хуже некуда!!!
Если в Б-5 такого события нет, почему тогда происходит возврат именно на ту строку, на которой стоял "курсор" до плагина (я специально менял скоб, чтобы он охватывал измененную запись, так вот после окончания плагина "курсор" оказывается именно на этой записи!!!!!!!!)
 
За время попыток решить эту проблему разобрался как работают QDOWN, QUP, хоть что-то полезное...
А вот проблема с "выпаданием" записи за скоб осталась!!!
Как изменить номер записи, к которой БЭСТ возвращается после выполнения плагина?
Ни в приватных, ни в публичных переменных не нашел ничего... Да и, собственно, не особо надеялся...
Изменено: Саак Шахламджян - 25.12.2008 16:44:31
 
Цитата
Саак Шахламджян пишет:
Так вот это очень Плохо!!!! Просто хуже некуда!!!
Если в Б-5 такого события нет, почему тогда происходит возврат именно на ту строку, на которой стоял "курсор" до плагина (я специально менял скоб, чтобы он охватывал измененную запись, так вот после окончания плагина "курсор" оказывается именно на этой записи!!!!!!!!)


Плагин не должен МЕШАТЬ работать БЭСТу со штатными механизмами, поэтому после его выполнения разработчик заботится вернуть все как было до его запуска.
И это логично.
Когда появилась в БЭСТ-4 перемещать курсор на конкретную запись, вот тогда СПЕЦИАЛЬНО было добавлено событие это позволяющее сделать.
Как БЭСТ узнает, что смещение на другую позицию не плод некорректного кода Вашего плагина, а осознанный выбор ?

И уж тем более не надо пытаться менять скоб у открытого штатным механизмом алиаса, да к тому же когда на нем уже стоит скоб....
Я Вам написал Выше первым пунктом - открывайте таблицу со своим именем алиаса и ТАМ Ваш скоб будет работать.
 
Цитата
nordk пишет:



Цитата

Саак Шахламджян пишет:
Так вот это очень Плохо!!!! Просто хуже некуда!!!
Если в Б-5 такого события нет, почему тогда происходит возврат именно на ту строку, на которой стоял "курсор" до плагина (я специально менял скоб, чтобы он охватывал измененную запись, так вот после окончания плагина "курсор" оказывается именно на этой записи!!!!!!!!)

Плагин не должен МЕШАТЬ работать БЭСТу со штатными механизмами, поэтому после его выполнения разработчик заботится вернуть все как было до его запуска.
И это логично.
Когда появилась в БЭСТ-4 перемещать курсор на конкретную запись, вот тогда СПЕЦИАЛЬНО было добавлено событие это позволяющее сделать.
Как БЭСТ узнает, что смещение на другую позицию не плод некорректного кода Вашего плагина, а осознанный выбор ?

И уж тем более не надо пытаться менять скоб у открытого штатным механизмом алиаса, да к тому же когда на нем уже стоит скоб....
Я Вам написал Выше первым пунктом - открывайте таблицу со своим именем алиаса и ТАМ Ваш скоб будет работать.

Т.е. Вы мне предлагаете переписать реестр сводных заказов!?

(Я этого очень не хотел делать, поэтому, собственно и обратился на форум за помощью)
Изменено: Саак Шахламджян - 29.12.2008 16:54:58
 
Я просто хочу сказать что такие вещи в штатном реестре плагином делать не получится.
Варианта 2:
1.Писать свой реестр
2.Попросить у КБ нужну Вам доработку с обоснованием этой потребности как можно подробнее

Возможно в процессе рассмотрения Вашего Вопроса консультанты дадут Вам подсказку как можно решать штатными средствами.
 
Цитата
nordk пишет:
Я просто хочу сказать что такие вещи в штатном реестре плагином делать не получится.
Варианта 2:
1.Писать свой реестр
2.Попросить у КБ нужну Вам доработку с обоснованием этой потребности как можно подробнее

Возможно в процессе рассмотрения Вашего Вопроса консультанты дадут Вам подсказку как можно решать штатными средствами.

А КБ-это ...?
В любом случае 2й вариант будет спустя вечность..
 
Цитата
Саак Шахламджян пишет:

А КБ-это ...?
В любом случае 2й вариант будет спустя вечность..


Не факт.
В случае непонимания актуальности Вопроса этим точно никто не захочет заниматься, но если актуальность будет четко разложена к Вашему мнению обязательно прислушаются
 
Цитата
nordk пишет:

Не факт.
В случае непонимания актуальности Вопроса этим точно никто не захочет заниматься, но если актуальность будет четко разложена к Вашему мнению обязательно прислушаются

Так КБ - это кто? Куда обращаться, собственно...

По поводу сроков, увы, факт. Причина другая. Оплата продления гарантийного обслуж будет не раньше лета, а то и осени, а то и никогда...
 
Вы можете написать сюда я передам или региональному представителю Вашему. Насколько я понимаю это Евгений Плешивцев
Страницы: 1
Читают тему (гостей: 1)