Имя: Пароль:
1C
1С v8
Программно отключить выполнение расширения
0 Logitech3004
 
04.07.19
07:59
Расширение должно срабатывать только при определенных условиях, необходимо программно отключить выполнение расширения или вернуть выполнение заимствованных процедур.
Есть у кого-нибудь догадки? Возможно ли вообще такое.
1 shuhard
 
04.07.19
08:03
(0) что мешает дописать код самого расширения ?
2 Logitech3004
 
04.07.19
08:10
(1) Если содержимое заимствованной процедуры изменится в следующих обновлениях, это не сыграет нам на руку.
3 Индиго
 
04.07.19
08:20
Если программно, то все равно где ты это напишешь ,в любом месте если что "оно не сыграет на руку". Так что логичнее писать в расширении
4 unregistered
 
04.07.19
08:45
(0) Невозможно включить или выключить расширение "на лету". Оно в принципе либо включено, либо нет. Так что см.(1) - в расширении дописывайте проверку своих условий.
Что касается вопроса изменения заимствованных и расширенных процедур, то ваша ситуация никак не усложнит и не упростит жизнь, т.к. работоспособность и корректность работы и совместимости расширения с новой версией конфы поставщика нужно проверять всегда и пожизненно.
Либо рассмотрите какие-либо другие подходы. Например, отказ от расширения или в принципе иной способ решения вашей задачи.
5 lxs
 
04.07.19
08:50
(0) Почитай про разработку расширения и про методы процедур. Там есть такая фишка, например, как ПродолжитьВызов().

В (4) тебе верно сказали, расширение так не работает, да и смысл какой его "передёргивать"? У тебя логика хромает.
6 Мимохожий Однако
 
04.07.19
09:00
(0) Озвучь хотя бы примерное условие )
7 Logitech3004
 
04.07.19
09:16
(6) Например, мое условие проверяет версию продукта. Если версия будет больше заданной в условии, процедура расширения выполняться не должна. Все это условие для функции ПродолжитьВызов().
8 unregistered
 
04.07.19
09:22
(7) Если речь об одной единственной процедуре, то вообще не вижу никаких проблем. Я думал, что у вас там масштабный геморрой с переписыванием десятков процедур, куда надо повтыкать проверку условий.
9 Logitech3004
 
04.07.19
09:33
(8) Попробую более полно описать проблему.
Если версия меньше требуемой, выполнится функция ПродолжитьВызов(), с переданными параметрами выполнится моя процедура.
Если версия стала равна требуемой, моя процедура выполниться не должна, должна выполниться заимствованная процедура из основной конфигурации. Здесь было бы резонно прописать код этой процедуры в блоке Иначе. И все бы ничего, если не произойдет обновление и код исходной процедуры подвергнется изменению.
10 Akela has missed
 
04.07.19
09:34
(4) Да? Тогда каким образом во время процедуры обновления ИБ расширение не выполняется?
11 unregistered
 
04.07.19
09:43
(10) Чтобы ответить на этот вопрос, нужен конкретный пример.
Включение или выключение расширения подразумевает под собой неявное динамическое обновление конфигурации. Постоянное включение/выключение расширения в качестве решение задачи автора ветки рассматривать нельзя.
12 тарам пам пам
 
04.07.19
10:11
Если я правильно понимаю, то пилится патч с помощью расширения, который соответственно должен срабатывать только на определенных версиях конфы.

В последних БСП (3 и выше) вроде что-то есть на эту тему - беглый поиск нашел некий макет "СкриптУдаленияПатчей" в обработке УстановкаОбновлений.
13 Akela has missed
 
04.07.19
10:13
(11) Ну возьми например процедуру УправлениеДоступомПереопределяемый.ПриЗаполненииВидовДоступа() - она 100% выполняется во время обновления ИБ.
Если вносить изменения по старинке - все ок. Но делать через расширение - ничего не происходит.
Значит где-то перед запуском процедур обновления расширения временно отрубаются.
14 Logitech3004
 
04.07.19
11:24
(12) ПродолжитьВызов()
Описание:
Вызывает переопределенный метод или обработчик события из расширяемой конфигурации.

По сути это и было нужно, сразу не сообразил. Мысль со со скриптом из БСП тоже интересная. Спасибо за ответы.
15 shuhard
 
04.07.19
12:31