Здравствуйте. Пишу плагин для подмены справочника аналитики корреспондирующего счета в П/О кассы. Подменяет при условии что создается новый П/О и использована типовая операция с кодом 000. Плагин подключен на событие «Вход в документ». БЭСТ5 3,4 SP 14
Проблема в том, что работает это только один раз. Захожу в реестр ордеров, жму F4, заполняю, сохраняю, все срабатывает как задумано. При создании второго документа не чего не подменяет и ошибок не выдает, все работает как без плагина. На второй раз уже не срабатывает пока не перезайду в реестр. Не пойму в чем дело.
Сегодня вырезал из кода почти все, оставил пустое условие. Результат тот же самый - плагин срабатывает до первого сохраненного документа. Как только сохраняю, при следующем входе в документ плагин не запускается. Появились смутные сомнения, что дело не в моем коде .
Создал простенький плагин.
SayAndWait("OK")
Прицепил на вход.
Он отработал ровно столько раз сколько я нажимал F4
Это я к тому что у себя ошибки надо искать и не тешить себя мыслью что в БЭСТе ошибка.
Начните с того что поставьте в начале ALTD()
И проходите с отладчиком.
Событие гарантированно отработает и отладчик покажет вам где у вас не так
А вы пробывали сохранять документ? Просто если я создаю документ и не сохраняю его, то у меня тоже сколько угодно раз срабатывает. Я уже писал об этом.
Да.
Объясняю популярно.
В БЭСТ-5 в отличии от БЭСТ-4 события не подвязываются отдельно к каждому реестру.
Они изначально прописаны в самом классе реестра.
ПОэтому если вы создаете новый реестр, он автоматически наследует возможность запускать события.
Другими словами.
Если бы событие работало неправильно - оно бы неправильно работало во ВСЕХ модулях БЭСТа.
Поверьте у меня СТОЛЬКО плагинов, что сразу бы все посыпалось
P.S. Для особо недоверчивых: специально сейчас записал несколько ордеров.
Событие отрабатывает как автоматом при переходе на новый ввод, так и после выхода в реестр и запуска заново..
Дальнейший разговор переводим к утверждению "запустился/не запустился" отладчик
Не удивлюсь что вы вообще делаете это не компилированным плагином, а еще и файлевалом
Последнее просьба в БЭСТ-5 даже не предлагать тестировать - там может быть все что угодно.
Я вот тоже не поленился создал пустой плагин с SayAndWait("OK") . Работал на ура пока я не создал новый документ и сохранил его. После сохранения не при в ходе в старый документ не при создании нового, плагин больше не срабатывает.
Это я к тому что если я поставлю altd() отладчик врятли покажет где в БЭСТе ошибка и не теште себя мыслью что в БЭСТе все идеально.
Я уже 4 дня бьюсь на этой проблемой. За это время только сервер не перезагружался.
Сомневаться в вашей компетентности я не могу. Но и себя полным дилетантом не считаю.
Еще раз только что все перепроверил. Однако факт: Тестовый плагин откомпилирован и состоит из одной строки SayAndWait("OK"). Удалил все плагины из модуля Кассы подотчеты . Добавил новый на событие Вход в документ. Все перезапустил. Сообщение «Ок» выводится при заходе в любой документ и при создании новго пока я не сохраняю «F10». Потом только перезаход в реестр. Попробовал на разных базах.
На Демо тоже не работает. Но я кажется нашел виновника. Дела даже не в сохранении документа, потому что если это проделать в старом документе, то тоже перестает работать потом.
Короче. Если в документе не переходить по TAB в проводки то - все ОК. Как только Табом перехожу на проводки,и не важно новый или старый документ – кирдык, плагин перестает срабатывать на Вход в документ. Проверил еще в Товарах и Материалах , там все ОК.
УРА! Нашел временное (постоянное) решение проблемы. Подцепил плагин не в реестре ордеров, а в самом документе. Точнее даже в окне проводок документа, почему то при в ходе в сам документ кнопки Спецфункции нет пока не перейдешь в проводки.
Все равно хотелось бы услышать ваш nordk комментарий по этой проблеме. Т.к. Спор не шуточный получился и до последнего вы стояли на стороне БЭСТа.
а ну так и надо было говорить изначально :)
вы меняете реестр по TAB
пока вы в него не перешли его спецфункции Вам недоступны разумеется - я писал выше как события подключены.
Похоже после смены реестра вы остаетесь на событиях этого реестра при записи.
В накладных окна организованы не реестрами а через класс tbrowse - там внутри другие правила жизни.
В БЭСТе похоже уже не осталось такого построения окон в первичных документах двумя реестрами, как в кассе, Да и касса старая.
Попробуйте после выхода из окна проводок сначала пошевелить курсор а потом нажать F4
Данила Кошевой пишет:
Спор не шуточный получился и до последнего вы стояли на стороне БЭСТа.
А я как и говорил в БЭСТе ошибки нет в плане работы событий.
Описывать надо подробно изначально, чтобы было понятно.
Откуда мне знать что вы при записи обязательно в окно проводок переходите ?
Я лично никогда не перехожу и других учу этого не делать без надобности особой :)
Поддержку события в другом реестре никто изначально не обещал.
В хот-лайн напишу, но приоритетность поддержки устаревшего модуля это на усмотрение КБ.
Лучшее решение перейти на денежные средства и воспользоваться готовым объектом разработчика по созданию кассовых документов.
nordk пишет:
Описывать надо подробно изначально, чтобы было понятно.
Так мне даже в голову не пришло, что спецфункции в реестре ордеров и спецфункции в окне проводок самого ордера это разные вещи, и похоже из за бага последний перебивает первого.
>> Откуда мне знать что вы при записи обязательно в окно проводок переходите ?
>> Я лично никогда не перехожу и других учу этого не делать без надобности особой :)
Так если не перейти то проводки к документу не сформируются, и сохранится без проводок. Я думал проводки всем нужны)
>> Лучшее решение перейти на денежные средства и воспользоваться готовым объектом разработчика по созданию кассовых документов
Перейти на денежные средства нашему бухгалтеру религия не позволяет. Ну вы поняли))
Надеюсь разработчики подправят спецфункции в «старой» кассе. Т.к. получилось у меня не очень красиво. Пришлось один и тот же плагин привязать в двух местах, и в реестре ордеров и в окне проводок в самой форме. Потому что нужно хоть раз попасть в окно провод и только после этого спецфункции проводок начанают так сказать доминировать на реестром. Получается плагин навешанный на реестр нужен только для создании первого ордера.
Данила Кошевой пишет:
Так мне даже в голову не пришло, что спецфункции в реестре ордеров и спецфункции в окне проводок самого ордера это разные вещи
Я вам выше писал как организовано событие.
Оно привязано к классу, который рисует реестр.
разумеется разные реестры это разные объекты и у них разные наполнения данными :)
Поэтому у каждого отдельного реестра свои спецфункции :)