Как вызывать процедуру,которой может и не быть,не выпадая в остановку по ошибке? #738576


#0 by SeiOkami
Здравия всем! Есть такая вещь. Общий модуль, который вызывается из разных отчетов. В общем модуле универсальные механизмы. В нём вызывается процедура из модуля отчета (на подобии БСП). Но этой процедуры в отчете может не быть, что не должно влиять на работоспособность механизмов. Посему вызов процедуры делается через попытку: Попытка Однако, таким образом, если в отладке стоит остановка по ошибке, то здесь будет при ошибке останавливаться выполнение. Это очень бесит. Можно ли как-то обмануть систему, чтобы она не останавливалась на этом участке кода? Попробовал выполнять тот же код, но через "Выполнить" - результат тот же.
#1 by Ненавижу 1С
>>Это очень бесит Валерианки прими
#2 by butterbean
убери остановку по ошибке... а вообще лучше запихни все нужные процедуры в отчеты
#3 by SeiOkami
, так и думал, что пойдут ответы в духе мисты )
#4 by Записьдампа
Обманывать систему грешновато. Можно вынести определение флага доступности настройки в тот же отчет, например, использовать прием из той же БСП: И считать отчет без метода Настраиваемый кривым - путь падает.
#5 by SeiOkami
, в том то и дело, что хочется универсальности как в БСП
#6 by Записьдампа
Ну дык открой БСП и посмотри. Там как минимум два подхода - в справочнике _ДемоНоменклатура при интеграции с подсистемами (например, поиск и удаление дублей), там используется переопределяемый модуль, который поставляет список метаданных объектов, для которых функционал включен. Или в обмене данными - в модуле менеджера плана обмена _ДемоОбменСБиблиотекойСтандартныхПодсистем, там используется как раз то, про что я писал - метод ПланОбменаИспользуетсяВМоделиСервиса плюс дополнительные контроль по вхождению плана обмена в одну из подсистем БСП.
#7 by Лефмихалыч
не включай остановку по ошибке без нужды да и всё
#8 by SeiOkami
, там через попытку и сделано
#9 by AlexTim03
Остановка по ошибке может быть с указанием конкретной ошибки. Укажи ту,которая тебя смущает
#10 by Записьдампа
=)
#11 by TormozIT
Или Описание = "Слишком много фактических параметров"         Или Описание = "Too many actual parameters";
#12 by TormozIT
+ КоличествоПараметров - нужно задать заведомо большее значение, чем может быть у метода.
#13 by Лефмихалыч
зачем столько сложностей, если в итоге все равно "Попытка"?..
#14 by SeiOkami
результат будет тот же
#15 by vde69
что-то типа прокатит ???
#16 by Гёдза
это внутри обработки, а если снаружи?
#17 by SeiOkami
, идея хорошая, но я нахожусь в контексте общего модуля и таким методом не могу стукнуться в контекст объекта отчета
#18 by vde69
еще можно попробовать Если ЗначениеЗаполнено(ИмяМодуля[ИмяПроцедуры]) Тогда
#19 by SeiOkami
, я нахожусь в общем модуле. Есть переменная ОтчетОбъект, содержащая объект отчета. Нужно выполнить процедуру из этого объекта (если она там есть)
#20 by TormozIT
Согласен, что попытка и ошибка внутри нее все равно будет. Если глубже вдуматься, то станет понятно, что мой метод хитрее, т.к. 1) не будет "проглатывать" любую ошибку внутри вызываемого метода 2) позволяет понять, есть ли метод до его вызова, и только если он есть, подготовить возможно тяжелые с вычислительной точки зрения параметры для его вызова
#21 by SeiOkami
, да, всё верно. Но только текущую хотелку не решает)
#22 by TormozIT
Твоя хотелка не решается без доработки интерпретатора. Соответствующие пожелания 1С зарегистрировала еще 8 лет назад. Тут Гений1С уже поднимал тему
#23 by dmpl
Заведи РС ПравославныеОтчеты, где и опиши, у какого отчета какие методы есть.
#24 by SeiOkami
, вон оно как. Не знал, спасибо
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С