Расширение модулей управляемых форм (не работает &Вместо &Перед &После)

1. EVKash 14 11.07.17 10:15 Сейчас в теме
Создал раширение. Добавил в него управляемую форму. Прописал переопределение процедуры &Вместо (пробовал и &Перед &После).
&Вместо("Подключаемый_ВыполнитьПереопределяемуюКоманду")
Процедура Расш1_Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)	
	Сообщить("Проверка");		
КонецПроцедуры

Приложение перезапускал. Ошибок нет - просто не работает.
Отладчиком вижу, что выполняется стандартная процедура. При этом расширение общих модулей (специально проверял) работает нормально, т.е. как надо. Клиент-Сервер, Платформа 8.3.9.2233, Конфа УТ 11.3, Режим совместимости - Не использовать, Профилей безопасности нет.
ЧЯДНТ? Или косяк платформы? Кто-то проверял у себя работоспособность данной фичи?
marku; SergeySol-82; gamletspb; F1_1; +4 Ответить
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
8. VKislitsin 968 20.02.18 22:17 Сейчас в теме +1 $m
(1) Предполагаю что вопрос уже неактуален, но всё же для тех, кого поиск приведет сюда:
В приведенном фрагменте кода не хватает директивы компиляции "&НаКлиенте"
Судя по параметру расширяемой процедуры (Команда) - это клиентская процедура.
А переопределенная - компилируется на сервере (по-умолчанию, если нет директивы)
Вот так должно работать:
&НаКлиенте
&Вместо("Подключаемый_ВыполнитьПереопределяемуюКоманду")
Процедура Расш1_Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)    
    Сообщить("Проверка");        
КонецПроцедуры
tricolor; 3gf; vvnazarov; Zabba; Lllypuk; Innuil; TSSV; user1446319; djl; marku; a_a_burlakov; Zlaya-Ferio; user1517843; _Vovik; Klainor; Alister; dozy82; Rastopchinss; pepper62; EVKash; Bespechnii_kot; kaliuzhnyi; bolotnikofff; debuger; Aspire1C; user651247_kovd; helenoc; infostartuser1; rintik; cyclov; ivan_luzinov; xamass; TManukovskaya; acanta; swimdog; KolBbl4; artem_savonin; Dmitryiv; denmon88; Apo; GAS.tlt; jane_de_rio; IvanVL; metakot; maxil; GIZmo; +46 Ответить
5. johny1987 12.02.18 15:15 Сейчас в теме +1 $m
Да, конфа Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.58.26) до сих пор не работает вызов &Вместо переопределяемых функций в модуле менеджера документа! Полчаса гадал почему, пока не наткнулся на эти сообщения!!! Пиздесанама, нащальнигэ!!

PS.: Решение найдено!!!
При добавлении расширения необходимо снять галочку "Безопасный режим, имя профиля безопасности" . После этого расширение функций директива &Вместо (и прочие) будут работать!!!
userbe; paul_freedom; GIZmo; Nik_Name; Innuil; tarroman; marku; elga2012; kida1; Jesdva; Zlaya-Ferio; krovohlebka; r.pronin; ДимокШ; pepper62; Bespechnii_kot; EVKash; cleaner_it; resonance; Nat_S; Vorkuev; Leon29; Millir; gorin; Crazy_kz; acanta; swimdog; zakiap; Actgal; hostguy; user705522_constantin_h; +31 Ответить
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
8. VKislitsin 968 20.02.18 22:17 Сейчас в теме +1 $m
(1) Предполагаю что вопрос уже неактуален, но всё же для тех, кого поиск приведет сюда:
В приведенном фрагменте кода не хватает директивы компиляции "&НаКлиенте"
Судя по параметру расширяемой процедуры (Команда) - это клиентская процедура.
А переопределенная - компилируется на сервере (по-умолчанию, если нет директивы)
Вот так должно работать:
&НаКлиенте
&Вместо("Подключаемый_ВыполнитьПереопределяемуюКоманду")
Процедура Расш1_Подключаемый_ВыполнитьПереопределяемуюКоманду(Команда)    
    Сообщить("Проверка");        
КонецПроцедуры
tricolor; 3gf; vvnazarov; Zabba; Lllypuk; Innuil; TSSV; user1446319; djl; marku; a_a_burlakov; Zlaya-Ferio; user1517843; _Vovik; Klainor; Alister; dozy82; Rastopchinss; pepper62; EVKash; Bespechnii_kot; kaliuzhnyi; bolotnikofff; debuger; Aspire1C; user651247_kovd; helenoc; infostartuser1; rintik; cyclov; ivan_luzinov; xamass; TManukovskaya; acanta; swimdog; KolBbl4; artem_savonin; Dmitryiv; denmon88; Apo; GAS.tlt; jane_de_rio; IvanVL; metakot; maxil; GIZmo; +46 Ответить
9. EVKash 14 21.02.18 23:05 Сейчас в теме
(8) ух ты... завтра проверю. тема-то актуальна... не думал, что директиву контекста выполнения нужно явно указывать... если заработает, с меня +1$m
16. Bespechnii_kot 03.12.20 08:19 Сейчас в теме
(8)Сильно благодарю, прям помогло)
23. Zabba 10.03.23 14:09 Сейчас в теме
(8) а у меня даже серверная не отрабатывала. После добавления "НаСервере" сработало
10. mcgoblin 3 27.05.18 23:20 Сейчас в теме
(1)сегодня как раз занимался этим. Изменил процудуру модуля формы документа
Создал процедуру ПриОткрытии через конструктор Рис1.
Процедура создалась, &Вместо("ПриОткрытии") отсутсвтует, создает так Рис2)
Все отработало

Если что можно почитать ТУТ
Прикрепленные файлы:
Docaru; user693240_abramovskaya; +2 Ответить
2. r.moschenskiy 23 11.07.17 12:23 Сейчас в теме
А безопасный режим в расширении конфигурации выключен?
3. EVKash 14 11.07.17 13:32 Сейчас в теме
(2) Естественно. Говорю же в общем модуле работает. В модуле формы - нет.
4. EVKash 14 25.07.17 15:34 Сейчас в теме
Пробовал по разному, но перехватить методы модуля формы у меня так и не получилось.
Ни в режиме совместимости 8.3.9, ни 8.3.10
В расширениях модулей форм по прежнему работают только перехватчики событий.
Причем даже не ругается на процедуры с тем же именем, что и в основной конфигурации (значит пространство не то же самое).

К слову перехват методов модулей объектов и общих модулей работает.
Может быть когда-нибудь и до модулей форм дело дойдет, но пока - не работает.
Aletar; johny1987; ulen; +3 Ответить
12. swimdog 765 31.03.19 01:10 Сейчас в теме
(4) Работает. Правильные ответы 5 и 8.
5. johny1987 12.02.18 15:15 Сейчас в теме +1 $m
Да, конфа Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.58.26) до сих пор не работает вызов &Вместо переопределяемых функций в модуле менеджера документа! Полчаса гадал почему, пока не наткнулся на эти сообщения!!! Пиздесанама, нащальнигэ!!

PS.: Решение найдено!!!
При добавлении расширения необходимо снять галочку "Безопасный режим, имя профиля безопасности" . После этого расширение функций директива &Вместо (и прочие) будут работать!!!
userbe; paul_freedom; GIZmo; Nik_Name; Innuil; tarroman; marku; elga2012; kida1; Jesdva; Zlaya-Ferio; krovohlebka; r.pronin; ДимокШ; pepper62; Bespechnii_kot; EVKash; cleaner_it; resonance; Nat_S; Vorkuev; Leon29; Millir; gorin; Crazy_kz; acanta; swimdog; zakiap; Actgal; hostguy; user705522_constantin_h; +31 Ответить
7. Alex_E 2355 12.02.18 15:34 Сейчас в теме
(5) Про модуль менеджера...может я чё недопонимаю, но у меня вот это работает на ура
Прикрепленные файлы:
11. hostguy 1 30.11.18 19:34 Сейчас в теме
(5) Спасибо тебе, дорогой друг!!! Большое человеческое спасибо! Пол дня бился, пытался понять почему переопределение &После для Общего модуля не срабатывает (в УТ 11.4), все же условия по учебнику из ИТС выполняются - ан нет... Снял флаг "Безопасный режим, имя профиля безопасности" и все взлетело!
14. resonance 81 08.06.20 23:33 Сейчас в теме
(5)
ри добавлении расширения необходимо снять галочку "Безопасный режим, имя профиля безопасности" . После этого

Подтверждаю. Такая же ситуация с расширением УТ 11.4.11.71 РегистрСведений.МодульМенеджера - пока не снял галочку, подмена вызовов не заработала. Спасибо.
6. Alex_E 2355 12.02.18 15:30 Сейчас в теме
Методы модуля формы можно использовать свои, как до так и после, если речь идёт о командах, или обработчиках событий как самой формы, так и её реквизитов, только там не директивы &Вместо или подобное используются, а назначается обработчик в палитре свойств...
Прикрепленные файлы:
user901979; InJey; KirinaAS; mcgoblin; +4 Ответить
13. nurik727 10.07.19 15:00 Сейчас в теме
у меня заработало только после указания всех параметров исходной процедуры
&НаКлиенте
&После("ТоварыПриОкончанииРедактирования")
Процедура ВычислитьКоличество(Элемент, НоваяСтрока, ОтменаРедактирования)
Aspire1C; Rastopchinss; SergeySol-82; gamletspb; +4 Ответить
15. user1350397 15.07.20 15:25 Сейчас в теме
Именно по этой причине и только при перехвате обработчиков событий в форме, вам нужно использовать не аннотации, а палитру свойств. Хотя любые другие методы модуля, не являющиеся обработчиками событий, вы можете перехватывать с помощью аннотаций.
17. user803762 09.04.21 12:24 Сейчас в теме
У меня не работал перехват любых методов формы, если присутствовала эта форма (или сам объект) в другом расширении.
18. Satoshi_Nakamoto 07.09.21 06:39 Сейчас в теме
Всем привет, а почему у меня не работает запрос(код в расширении)? Пишет:

Тип не определен (Запрос)
Запрос = Новый <<?>>Запрос; (Проверка: Тонкий клиент)
19. SlavaKron 07.09.21 11:09 Сейчас в теме
(18) Запрос недоступен в тонком клиенте.
Наверно, будет полезно такие вопросы выяснять через СП:
В коде установите курсор на интересующий объект 1С. Нажмите Ctrl + F1, запустится поиск справки по данному объекту в синтаксис-помощнике. Выбираете нужную главу, смотрите раздел Доступность.
Прикрепленные файлы:
20. CratosX 112 09.12.21 00:20 Сейчас в теме
Ещё полезным будет дополнение: если ваше расширение не срабатывает, то убедитесь, что уже нет другого расширения с тем же префиксом ("Расш1_") - при создании расширения в нем автоматически создаётся роль, имя которой формируется по шаблону <ПрефиксРасширенияКонфигурации>_ОсновнаяРоль, и если она конфликтует с другим, то ваше расширение просто не применяется при старте пользовательского приложения (в ЖР об этом можно найти предупреждение некритического уровня)
21. EVKash 14 09.12.21 08:30 Сейчас в теме
(20) Я обычно удаляю основную роль, если она не нужна.
22. Andq 14.12.22 11:52 Сейчас в теме
Подниму тему, ситуация следующая:

ERP 2.5, документ "ПроизводственнаяОперация2_2", форма "ВыполнениеОперации", реквизит формы "КоличествоГотово", у которого прописана при изменении Процедура КоличествоПриИзменении, которая вызывает Процедуру НастроитьЗависимыеЭлементыФормы, в которой я комментирую строку:

Элементы.КоличествоГотово.МаксимальноеЗначение = Форма.КоличествоГотово + Форма.КоличествоКРаспределению;


В тестовой базе всё работатет. Добавляю процедуру НастроитьЗависимыеЭлементыФормы в расширение, комменирую строку там:

&НаКлиентеНаСервереБезКонтекста
&Вместо("НастроитьЗависимыеЭлементыФормы")
Процедура Andq_НастроитьЗависимыеЭлементыФормы(Форма, СписокРеквизитов)
	Элементы = Форма.Элементы;
	
	Инициализация = ПустаяСтрока(СписокРеквизитов);
	СтруктураРеквизитов = Новый Структура(СписокРеквизитов);
	
	Если Инициализация
		Или СтруктураРеквизитов.Свойство("Количество") Тогда
			
		ОбновитьКоличествоКРаспределению(Форма);
		
		Элементы.КоличествоБрак.МаксимальноеЗначение      = Форма.КоличествоБрак + Форма.КоличествоКРаспределению;
		//Элементы.КоличествоГотово.МаксимальноеЗначение    = Форма.КоличествоГотово + Форма.КоличествоКРаспределению;
		Элементы.КоличествоОтменено.МаксимальноеЗначение  = Форма.КоличествоОтменено + Форма.КоличествоКРаспределению;
		
		Элементы.ГруппаБыстрыеКоманды.Доступность         = Форма.КоличествоКРаспределению > 0;
		Элементы.ФормаПрименить.Доступность = (Форма.КоличествоГотово > 0 ИЛИ Форма.КоличествоБрак > 0 ИЛИ Форма.КоличествоОтменено > 0);
		
	КонецЕсли;	ПродолжитьВызов(Форма, СписокРеквизитов);
КонецПроцедуры
Показать


при этом срабатывает сначала оригинальная обработка, а только потом из расширения. Что не так?
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот