Вопрос перед подбором

1. user2104986 11.09.24 09:20 Сейчас в теме
Добрый день.
В книге: 1с 8.3:Практическое пособие разработчика есть пример, как задать вопрос после нажатия кнопки выбрать в форме подбора.

&НаКлиенте
Асинх Процедура МатериалыОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка)   
	Если ОтветПередДобавлением <> Истина Тогда
		СтандартнаяОбработка = Ложь;
		Результат = Ждать ВопросАсинх(
			"Добавить номенклатуру в табличную часть?",
			РежимДиалогаВопрос.ДаНет
		);
		
		Если Результат = КодВозвратаДиалога.Да Тогда
			ОтветПередДобавлением = Истина;
	
			Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл		
				НоваяСтрока = Объект.Материалы.Добавить();
				НоваяСтрока.Материал = ВыбранныйЭлемент;
			КонецЦикла;      
		КонецЕсли;
		
	Иначе
		Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл		
			НоваяСтрока = Объект.Материалы.Добавить();
			НоваяСтрока.Материал = ВыбранныйЭлемент;
		КонецЦикла; 
	КонецЕсли;
	
КонецПроцедуры

Показать


Здесь отменяется стандартная обработка, подскажите, что она должна была делать?
Если закомментировать "СтандартнаяОбработка = Ложь;", то ничего не меняется.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
4. Sashares 35 11.09.24 12:14 Сейчас в теме
(1) В функции и процедуры с "Асинх" параметры передаются по значению.
Поэтому изменение параметра "СтандартнаяОбработка" внутри такой процедуры ничего не дает.
2. lone_mayson 52 11.09.24 09:40 Сейчас в теме
Имхо, ничего не должна была делать (передан какой-то массив ссылок в табличную часть, и что?).
Переопределить поведение обработчика (для изучения) лучше на колонке таблицы формы. Типа сделал выбор из справочника какого-то товара в поле Номенклатура, отменяешь стандартную обработку и пишешь что-то своё.
3. truba 11.09.24 12:03 Сейчас в теме
Давай думать логически.

Что стандартно делает событие "НачалоВыбора":
1) Определить тип значения, связанного с элементом формы.
2) Создать форму связанную с таблицей выбираемого значения. Допустим Справочник.Номенклатура.ФормаВыбора
2а) форма или берется из конфигуратора или создается мастером если в конфигураторе не прописывается. В форме выставляется флаг что она для выбора элемента, это определяет расширение ее поведения. У формы устанавливается вызвавший ее элемент пользовательского интерфейса - или форма или элемент формы. Ему будет передано выбранное значение. Передано значение может быть передано явно в ОбработкаВыбора, а может неявно, если такая обработка не прописана. Тогда ОбработкаВыбора будет создана платформой по умолчанию неявно (стандартная).
3) По некоторому событию на форме выбора она решает что выбор осуществлен, определено выбранное значение которое передается форме/элементу ее вызвавшему.
4) В вашем случае элемент "Материалы" обрабатывает выбор. Стандартно в элементе "Материалы" происходит замещение значения этого элемента, элементом пришедшим из выбора, перерисовывается его отображение и на этом заканчивается работа выбора. Вы же это стандартное поведение можете отменить: СтандартнаяОбработка = Ложь.
5) Дальше что делать с этим выбранным значением вы решаете сами из своего кода процедуры "Обработка выбора". Хотите задавайте дополнительные вопросы, хотите используйте, хотите нет. Но ожидаемое замещение элемента не произойдет
5. Sashares 35 11.09.24 12:16 Сейчас в теме
(3)
4) В вашем случае элемент "Материалы" обрабатывает выбор. Стандартно в элементе "Материалы" происходит замещение значения этого элемента, элементом пришедшим из выбора, перерисовывается его отображение и на этом заканчивается работа выбора. Вы же это стандартное поведение можете отменить: СтандартнаяОбработка = Ложь.


Не так. Материалы это табличная часть, и ничего она делать не будет в стандартном поведении.
И в асинх процедурах - обработчиках событий - нельзя отменить стандартную обработку.
user1936660; truba; +2 Ответить
6. truba 11.09.24 12:21 Сейчас в теме
Оставьте свое сообщение

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