Коллеги, добрый день. В общем модуле есть процедура с попыткой и исключением. Подскажите, можно ли сделать так, чтобы при вызове этой процедуры, например, в документе, действия при исключении были прописаны в самом документе, а не в общем модуле? Меняю в конфигурации одинаковые процедуры на вызов из общего модуля и столкнулся с тем, что исключения везде прописаны со значительной разницей.
По теме из базы знаний
- Использование общих модулей "Длительные операции" из состава БСП или асинхронное выполнение серверных процедур без блокировки пользовательского интерфейса
- Бесплатная проверка контрагентов в ФНС (общий модуль с алгоритмом). На примере выводим статус в список справочника контрагентов
- Работа с SQL. Шаблон общего модуля
- Полезный код для программистов 1С (часть 4). Работа с файловой системой Асинх (аналог общего модуля БСП)
- Общий модуль для быстрой организации HTTP сервиса (набор функций и процедур)
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) из какого модуля вызываете метод общего модуля?
Для вызова из модуля формы документа, можно передавать форму этого документа. В модуле формы создать экспортный метод, который и вызывать из метода общего модуля через передаваемую форму документа. И уже в этом методе модуля формы выполнять нужные действия. Соответственно этот метод придется делать для каждого используемого типа документа.
Для вызова из модуля формы документа, можно передавать форму этого документа. В модуле формы создать экспортный метод, который и вызывать из метода общего модуля через передаваемую форму документа. И уже в этом методе модуля формы выполнять нужные действия. Соответственно этот метод придется делать для каждого используемого типа документа.
(3) Я так понимаю, нужно обработать исключение определенным образом и продолжить выполнение функции общего модуля? Т.е. другими словами передать ссылку на свой обработчик?
Интересный кейс. Ни разу подобная потребность именно при обработке исключений не возникала.
Но в 1С можно эмулировать функции высшего порядка таким образом: создаешь ОписаниеОповещения со ссылкой на свой обработчик и передаешь его через параметры в функцию общего модуля. А там в нужном месте вызываешь ВыполнитьОбработкуОповещения, передав туда все нужные параметры.
ЗЫ. Если же вдруг продолжать выполнение функции общего модуля при возникновении исключения не нужно, тогда не нужно в общем модуле ловить это исключение. Просто обрамлять попыткой сам вызов функции общего модуля. Если там разные исключения могут прилетать, то для удобства можно в общем модуле ловить исключение и тут же выбрасывать свое специфическое, которое будет удобно обрабатывать.
Интересный кейс. Ни разу подобная потребность именно при обработке исключений не возникала.
Но в 1С можно эмулировать функции высшего порядка таким образом: создаешь ОписаниеОповещения со ссылкой на свой обработчик и передаешь его через параметры в функцию общего модуля. А там в нужном месте вызываешь ВыполнитьОбработкуОповещения, передав туда все нужные параметры.
ЗЫ. Если же вдруг продолжать выполнение функции общего модуля при возникновении исключения не нужно, тогда не нужно в общем модуле ловить это исключение. Просто обрамлять попыткой сам вызов функции общего модуля. Если там разные исключения могут прилетать, то для удобства можно в общем модуле ловить исключение и тут же выбрасывать свое специфическое, которое будет удобно обрабатывать.
(5) Я не уверен, что понятно объяснил,на всякий случай опишу подробнее: в модуле формы есть некоторый код с попыткой, который нужно вынести в общий модуль. Аналогичные куски кода есть во многих местах в конфигурации, и различаются они только исключениями. Кусков кода таких очень много, и для каждого конкретного случая прописывать исключение в общем модуле не получится.
Наверное, через обработчик оповещения наиболее логичная идея. Пока не очень понимаю,как его здесь применить, но буду разрабатывать. Спасибо.
Наверное, через обработчик оповещения наиболее логичная идея. Пока не очень понимаю,как его здесь применить, но буду разрабатывать. Спасибо.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот