ПРОДАЖИ
+7 (991) 312-04-37
trade@bestnet.ru
Авторизация

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

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


Главная  / Поддержка  / Форум  / Публичные форумы  / Программирование приложений  / событие "Вход в документ" плагин срабатывает только один раз

Форум

Поиск  Пользователи  Правила 
Закрыть
Логин:
Пароль:
Забыли свой пароль?
Регистрация
Войти
 
Страницы: 1 2 След.
RSS
событие "Вход в документ" плагин срабатывает только один раз
 
Здравствуйте.
Пишу плагин для подмены справочника аналитики корреспондирующего счета в П/О кассы.
Подменяет при условии что создается новый П/О и использована типовая операция с кодом 000.
Плагин подключен на событие «Вход в документ». БЭСТ5 3,4 SP 14

Проблема в том, что работает это только один раз. Захожу в реестр ордеров, жму F4, заполняю, сохраняю, все срабатывает как задумано. При создании второго документа не чего не подменяет и ошибок не выдает, все работает как без плагина. На второй раз уже не срабатывает пока не перезайду в реестр. Не пойму в чем дело.


PUBLIC ubGets

IF napp=2

IF SELECT('urefer') = 0

NETUSE('urefer',LoadPath()+'urefer')

select k_order

ENDIF

urefer->(MAKEREFER("usanalit","Ñïðàâî÷íèê ìàãàçèíîâ ",3,;

{"Êîä ","Ïðåäïðèÿòèå"," Íàèìåíîâàíèå"},;

{3,5,14},"n/w,w+/n",{"code"},{"aIn[7]"},"UPPER(aIn[7])",;

{{||FIELD->Code},{||LEFT(FIELD->Namep,30)},{||LEFT(FIELD->Names,30)}},,,,,,,;

,,,,,,,,,,'cFind$UPPER(Names)',,,,,,,,,,,,,,,,,,,,;

'NAMEs') )

ubGets:=globalgetlist[11]:reader

globalgetlist[10]:postblock:={||globalgetlist[11]:reader:=if(PTYPOPER='000'.and.CCTYPE='Ï/Î',{|oget| ReferGetReader(oget,'usanalit')},ubGets) }

ENDIF
Изменено: Данила Кошевой - 17.08.2013 10:29:22
 
Сегодня вырезал из кода почти все, оставил пустое условие. Результат тот же самый - плагин срабатывает до первого сохраненного документа. Как только сохраняю, при следующем входе в документ плагин не запускается. Появились смутные сомнения, что дело не в моем коде :smile: .
 
Создал простенький плагин.
SayAndWait("OK")
Прицепил на вход.
Он отработал ровно столько раз сколько я нажимал F4
Это я к тому что у себя ошибки надо искать и не тешить себя мыслью что в БЭСТе ошибка.

Начните с того что поставьте в начале ALTD()
И проходите с отладчиком.
Событие гарантированно отработает и отладчик покажет вам где у вас не так
 
А вы пробывали сохранять документ? Просто если я создаю документ и не сохраняю его, то у меня тоже сколько угодно раз срабатывает. Я уже писал об этом.
 
Да.
Объясняю популярно.
В БЭСТ-5 в отличии от БЭСТ-4 события не подвязываются отдельно к каждому реестру.
Они изначально прописаны в самом классе реестра.
ПОэтому если вы создаете новый реестр, он автоматически наследует возможность запускать события.

Другими словами.
Если бы событие работало неправильно - оно бы неправильно работало во ВСЕХ модулях БЭСТа.
Поверьте у меня СТОЛЬКО плагинов, что сразу бы все посыпалось

P.S. Для особо недоверчивых: специально сейчас записал несколько ордеров.
Событие отрабатывает как автоматом при переходе на новый ввод, так и после выхода в реестр и запуска заново..

Дальнейший разговор переводим к утверждению "запустился/не запустился" отладчик
Не удивлюсь что вы вообще делаете это не компилированным плагином, а еще и файлевалом
Последнее просьба в БЭСТ-5 даже не предлагать тестировать - там может быть все что угодно.
 
Я вот тоже не поленился создал пустой плагин с SayAndWait("OK") . Работал на ура пока я не создал новый документ и сохранил его. После сохранения не при в ходе в старый документ не при создании нового, плагин больше не срабатывает.
Это я к тому что если я поставлю altd() отладчик врятли покажет где в БЭСТе ошибка и не теште себя мыслью что в БЭСТе все идеально.
 
Вот сначала поставьте, а потом будете писать.
Выше я популярно объяснил, что искать вам надо У СЕБЯ.
И десять раз вам СВОЕ надо проверить
 
Цитата
nordk пишет:
Последнее просьба в БЭСТ-5 даже не предлагать тестировать - там может быть все что угодно.


мммм. Не очень понял последней строки. Именно в БЭСТ5 я это и делаю.
Подключаю я файл hrb.
 
Цитата
nordk пишет:
Вот сначала поставьте, а потом будете писать.
Выше я популярно объяснил, что искать вам надо У СЕБЯ.
И десять раз вам СВОЕ надо проверить

Извиняюсь за назойливость)) Но что у себя исправлять в плагине из одной строки? SayAndWait("OK")
 
не знаю - у меня все запускается корректно
 
На всякий случай уточню. БЭСТ5 3,4 SP 30 HF14. Модуль Финансы 2007 / Касса.Подотчеты
 
тестирую на SP-30 дома попробую на SP-31.
Уверен, что результат будет неизменен
 
Попробуйте перед стартом HRB полностью закрыть и открыть БЭСТ заново.
Бывает, что в памяти сидит старый HRB по каким либо причинам.
 
Я уже 4 дня бьюсь на этой проблемой. За это время только сервер не перезагружался.

Сомневаться в вашей компетентности я не могу. Но и себя полным дилетантом не считаю.

Еще раз только что все перепроверил. Однако факт: Тестовый плагин откомпилирован и состоит из одной строки SayAndWait("OK"). Удалил все плагины из модуля Кассы подотчеты . Добавил новый на событие Вход в документ. Все перезапустил. Сообщение «Ок» выводится при заходе в любой документ и при создании новго пока я не сохраняю «F10». Потом только перезаход в реестр. Попробовал на разных базах.
 
отладчик запускается или нет ?
 
Да запускается. Но после сохранения нет.
 
Значит что то у вас надо на сервере смотреть, если в 31 пакете повторить не смогу - отпишусь когда проверю
 
Дл чистоты эксперимента разверните демобазу - на ней посмотрите
 
На Демо тоже не работает. Но я кажется нашел виновника. Дела даже не в сохранении документа, потому что если это проделать в старом документе, то тоже перестает работать потом.

Короче. Если в документе не переходить по TAB в проводки то - все ОК. Как только Табом перехожу на проводки,и не важно новый или старый документ – кирдык, плагин перестает срабатывать на Вход в документ. Проверил еще в Товарах и Материалах , там все ОК.
 
:smile: УРА! Нашел временное (постоянное) решение проблемы. Подцепил плагин не в реестре ордеров, а в самом документе. Точнее даже в окне проводок документа, почему то при в ходе в сам документ кнопки Спецфункции нет пока не перейдешь в проводки.

Все равно хотелось бы услышать ваш nordk комментарий по этой проблеме. Т.к. Спор не шуточный получился и до последнего вы стояли на стороне БЭСТа.
 
а ну так и надо было говорить изначально :)
вы меняете реестр по TAB
пока вы в него не перешли его спецфункции Вам недоступны разумеется - я писал выше как события подключены.
Похоже после смены реестра вы остаетесь на событиях этого реестра при записи.
В накладных окна организованы не реестрами а через класс tbrowse - там внутри другие правила жизни.
В БЭСТе похоже уже не осталось такого построения окон в первичных документах двумя реестрами, как в кассе, Да и касса старая.
Попробуйте после выхода из окна проводок сначала пошевелить курсор а потом нажать F4
 
Цитата
Данила Кошевой пишет:
Спор не шуточный получился и до последнего вы стояли на стороне БЭСТа.
А я как и говорил в БЭСТе ошибки нет в плане работы событий.
Описывать надо подробно изначально, чтобы было понятно.
Откуда мне знать что вы при записи обязательно в окно проводок переходите ?
Я лично никогда не перехожу и других учу этого не делать без надобности особой :)
Поддержку события в другом реестре никто изначально не обещал.
В хот-лайн Вопрос напишу, но приоритетность поддержки устаревшего модуля это на усмотрение КБ.
Лучшее решение перейти на денежные средства и воспользоваться готовым объектом разработчика по созданию кассовых документов.
 
Цитата
nordk пишет:
Описывать надо подробно изначально, чтобы было понятно.




Так мне даже в голову не пришло, что спецфункции в реестре ордеров и спецфункции в окне проводок самого ордера это разные вещи, и похоже из за бага последний перебивает первого.

>> Откуда мне знать что вы при записи обязательно в окно проводок переходите ?
>> Я лично никогда не перехожу и других учу этого не делать без надобности особой :)
Так если не перейти то проводки к документу не сформируются, и сохранится без проводок. Я думал проводки всем нужны)

>> Лучшее решение перейти на денежные средства и воспользоваться готовым объектом разработчика по созданию кассовых документов
Перейти на денежные средства нашему бухгалтеру религия не позволяет. Ну вы поняли))


Надеюсь разработчики подправят спецфункции в «старой» кассе. Т.к. получилось у меня не очень красиво. Пришлось один и тот же плагин привязать в двух местах, и в реестре ордеров и в окне проводок в самой форме. Потому что нужно хоть раз попасть в окно провод и только после этого спецфункции проводок начанают так сказать доминировать на реестром. Получается плагин навешанный на реестр нужен только для создании первого ордера.
 
Цитата
Данила Кошевой пишет:
Так мне даже в голову не пришло, что спецфункции в реестре ордеров и спецфункции в окне проводок самого ордера это разные вещи
Я вам выше писал как организовано событие.
Оно привязано к классу, который рисует реестр.
разумеется разные реестры это разные объекты и у них разные наполнения данными :)
Поэтому у каждого отдельного реестра свои спецфункции :)
 
Доработано в HF1 к SP31

Глухова Ирина
Отдел разработки
Компания "БЭСТ"
Страницы: 1 2 След.
Читают тему (гостей: 2)