Коллеги, добрый день. В общем модуле есть процедура с попыткой и исключением. Подскажите, можно ли сделать так, чтобы при вызове этой процедуры, например, в документе, действия при исключении были прописаны в самом документе, а не в общем модуле? Меняю в конфигурации одинаковые процедуры на вызов из общего модуля и столкнулся с тем, что исключения везде прописаны со значительной разницей.
---
Можно конечно.
В документа

```1c
    Ответ = ФункцияОбщегоМодуля();
    Если Ответ = ДА Тогда
    Сообщить("Ураааа");
    Иначе
    ВыполнитьДействияПриИсключении();
    КонецЕсли;
```

В общем модуле

```1c
    Результат = ДА;
    Попытка
    СделатьВсеДела();
    Исключение
    Результат = НЕТ;
    КонецПопытки;

    Возврат Результат;
```
---
из какого модуля вызываете метод общего модуля?
Для вызова из модуля формы документа, можно передавать форму этого документа. В модуле формы создать экспортный метод, который и вызывать из метода общего модуля через передаваемую форму документа. И уже в этом методе модуля формы выполнять нужные действия. Соответственно этот метод придется делать для каждого используемого типа документа.
---
В разных местах из других общих модулей, из модулей объекта и менеджера документов, из форм документов.
Таких вызовов будет очень много,более 100. Так что какой-то конкретный экспортный метод в общем модуле, наверное нельзя сделать
---
```1c
    Исключение
    Возврат;
    КонецПопытки
```

Так же можно поставить условие, что вызывается из этой формы.
---
А в расширение не пробовали модуль забросить и там под себя поправить?
---
А если в исключении прописать по некоторому условию ВызватьИсключение?
---
Без изменения общего модуля? Нельзя.
---
Нет, общий модуль можно менять как угодно
---
Я так понимаю, нужно обработать исключение определенным образом и продолжить выполнение функции общего модуля? Т.е. другими словами передать ссылку на свой обработчик?
Интересный кейс. Ни разу подобная потребность именно при обработке исключений не возникала.
Но в 1С можно эмулировать функции высшего порядка таким образом: создаешь ОписаниеОповещения со ссылкой на свой обработчик и передаешь его через параметры в функцию общего модуля. А там в нужном месте вызываешь ВыполнитьОбработкуОповещения, передав туда все нужные параметры.
ЗЫ. Если же вдруг продолжать выполнение функции общего модуля при возникновении исключения не нужно, тогда не нужно в общем модуле ловить это исключение. Просто обрамлять попыткой сам вызов функции общего модуля. Если там разные исключения могут прилетать, то для удобства можно в общем модуле ловить исключение и тут же выбрасывать свое специфическое, которое будет удобно обрабатывать.
---
Я не уверен, что понятно объяснил,на всякий случай опишу подробнее: в модуле формы есть некоторый код с попыткой, который нужно вынести в общий модуль. Аналогичные куски кода есть во многих местах в конфигурации, и различаются они только исключениями. Кусков кода таких очень много, и для каждого конкретного случая прописывать исключение в общем модуле не получится.
Наверное, через обработчик оповещения наиболее логичная идея. Пока не очень понимаю,как его здесь применить, но буду разрабатывать. Спасибо.
---
Хотя не уверен что взлетит, при условии что ВыполнитьОбработкуОповещения, как я вижу,доступен только на клиенте.
---
Можно конечно.
В документа

```1c
    Ответ = ФункцияОбщегоМодуля();
    Если Ответ = ДА Тогда
    Сообщить("Ураааа");
    Иначе
    ВыполнитьДействияПриИсключении();
    КонецЕсли;
```

В общем модуле

```1c
    Результат = ДА;
    Попытка
    СделатьВсеДела();
    Исключение
    Результат = НЕТ;
    КонецПопытки;

    Возврат Результат;
```