kb-personal/src/content/docs/knowledge-base/Примеры кода, шаблоны/Общее/Управляемые формы/Вопрос перед удалением строк табличной части.md
silverbook 0d07efbcc7 edit
2025-06-16 13:40:43 +05:00

3.1 KiB
Raw Blame History

title
title
Вопрос перед удалением строк таблицы формы

Если нужно удалить какие-нибудь связанные данные при удалении строки из основной таблицы - ниже пример

&НаКлиенте
Процедура ДефектыДвигателяПередУдалением(Элемент, Отказ)
	Отказ = Истина;
	ДополнительныеПараметры = Новый Структура;
	ДополнительныеПараметры.Вставить("ВыделенныеСтроки", Элементы.ДефектыДвигателя.ВыделенныеСтроки);
	
	ОписаниеОповещения = Новый ОписаниеОповещения("УдалитьСтрокиТаблицыДефектыДвигателя", ЭтотОбъект, ДополнительныеПараметры);
	ТекстВопроса = "Внимание! При удалении строк из этой табличной части также будут удалены связанные данные о виновниках, мероприятиях и причинах";
	
	ПоказатьВопрос(ОписаниеОповещения, 
		ТекстВопроса, 
		РежимДиалогаВопрос.ДаНет);
КонецПроцедуры

&НаКлиенте
Процедура УдалитьСтрокиТаблицыДефектыДвигателя(Результат, ДополнительныеПараметры) Экспорт

	Если Результат <> КодВозвратаДиалога.Да Тогда
		Возврат;
	КонецЕсли;
	
	ВыделенныеСтроки = ОбщегоНазначенияКлиентСервер.СвойствоСтруктуры(ДополнительныеПараметры, 
		"ВыделенныеСтроки", Новый Массив);

	СтрокиКУдалению = Новый Массив;
	Для Каждого Идентификатор Из ВыделенныеСтроки Цикл
		
		ДанныеСтроки = Объект.ДефектыДвигателя.НайтиПоИдентификатору(Идентификатор);
		
		Если ДанныеСтроки = Неопределено Тогда
			Сообщение = СтрШаблон("Не удалось удалить строку с идентификатором %1", Идентификатор);
			Продолжить;
		КонецЕсли;
		
		УдалитьСвязанныеСтрокиТаблицыВиновники(ДанныеСтроки);
		УдалитьСвязанныеСтрокиТаблицыМероприятия(ДанныеСтроки);
		УдалитьСвязанныеСтрокиТаблицыПричины(ДанныеСтроки);
		
		СтрокиКУдалению.Добавить(ДанныеСтроки);
		
	КонецЦикла;

	Для Каждого Строка Из СтрокиКУдалению Цикл
		Объект.ДефектыДвигателя.Удалить(Строка);
	КонецЦикла;
		
КонецПроцедуры