Имя: Пароль:
1C
 
Подскажите по методу ПродолжитьВызов
0 1сПупс
 
05.02.26
11:17
Доброго времени суток, коллеги!

Есть код в основной конфигурации:

Процедура ВыполнитьПроверкуСтруктурыОбменаНаВалидность(СтруктураНастроекОбмена, ИспользоватьНастройкиТранспорта = Истина) Экспорт
	
	УзелИнформационнойБазы = СтруктураНастроекОбмена.УзелИнформационнойБазы; // ПланОбменаСсылка
	
	Если НЕ ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда
		
		// Узел информационной базы не должен быть пустым.
		СтрокаСообщенияОбОшибке = НСтр(
		"ru = 'Не задан узел информационной базы, с которой нужно производить обмен информацией. Обмен отменен.'",
			ОбщегоНазначения.КодОсновногоЯзыка());
		ЗаписьЖурналаРегистрацииОбменаДанными(СтрокаСообщенияОбОшибке, СтруктураНастроекОбмена, Истина);
		ЗафиксироватьЗавершениеИнициализацииОбмена(СтруктураНастроекОбмена);
		
	КонецЕсли;


Я добавил эту процедуру в расширение с аннотацией &Вместо:

&Вместо("ВыполнитьПроверкуСтруктурыОбменаНаВалидность")
Процедура Обмен_ВыполнитьПроверкуСтруктурыОбменаНаВалидность(СтруктураНастроекОбмена, ИспользоватьНастройкиТранспорта)
	УзелИнформационнойБазы = СтруктураНастроекОбмена.УзелИнформационнойБазы; // ПланОбменаСсылка
	
	Если НЕ ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда
		
		// Узел информационной базы не должен быть пустым.
		//СтрокаСообщенияОбОшибке = НСтр(
		//       "ru = 'Не задан узел информационной базы, с которой нужно производить обмен информацией. Обмен отменен.'",
		//	 ОбщегоНазначения.КодОсновногоЯзыка());
		//ЗаписьЖурналаРегистрацииОбменаДанными(СтрокаСообщенияОбОшибке, СтруктураНастроекОбмена, Истина);
		//ЗафиксироватьЗавершениеИнициализацииОбмена(СтруктураНастроекОбмена);
		
	КонецЕсли;
        ПродолжитьВызов(СтруктураНастроекОбмена, ИспользоватьНастройкиТранспорта);


Что в данном коде сделает процедура ПродолжитьВызов, если я и так использую аннотацию вместо? Читаю СП и не могу понять.

Описание:
Вызывает переопределенный метод или обработчик события из расширяемой конфигурации.
Функция предназначена только для однократного вызова. Использовать функцию можно только в расширениях и только с аннотацией &Вместо.
1 Fedor-1971
 
05.02.26
11:27
(0) вызовет исходную процедуру
Логика, примерно, такая:
пришли в расширение, чего-то наворотили не связанное с основной процедурой и отправили работать стандартный механизм

В твоём случае, просто отработает условие
Если НЕ ЗначениеЗаполнено(УзелИнформационнойБазы) Тогда

и получишь сообщение об ошибке и далее по коду
2 Fedor-1971
 
05.02.26
11:31
1+ Можно сначала сделать ПродолжитьВызов, а потом доработать что-то
Это актуально с функциями, т.е. примерно так:
 рез = ПродолжитьВызов(..);
 рез.Добавить (Нечто нужное);

 Возврат рез;
3 Ненавижу 1С
 
гуру
05.02.26
11:57
(0) это 1С переизобрела вызов родительского метода, смотрите в Java/C# base
4 1сПупс
 
05.02.26
12:10
(1) т.е. Если я запущу код в расширении

&Вместо("ВыполнитьПроверкуСтруктурыОбменаНаВалидность")
Процедура Обмен_ВыполнитьПроверкуСтруктурыОбменаНаВалидность(СтруктураНастроекОбмена, ИспользоватьНастройкиТранспорта)
	
        ПродолжитьВызов(СтруктураНастроекОбмена, ИспользоватьНастройкиТранспорта);
КонецПроцедуры


то исполнится просто код Основной конфигурации и всё?
5 Ненавижу 1С
 
гуру
05.02.26
12:11
(4) да
6 bolder
 
05.02.26
17:05
(0) Как всегда.Недостатки синтакс помощника покрываются другими ресурсами.
https://wonderland.v8.1c.ru/blog/rasshirenie-moduley/
7 Волшебник
 
05.02.26
18:59
(6) Такого быть не должно.