Skip to content

Вопрос перед удалением строк табличной части

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

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