|   |   | 
| 
 | Просить подтверждение перед удалением строк табличной части | ☑ | ||
|---|---|---|---|---|
| 0
    
        MistaEr 05.04.18✎ 15:08 | 
        Как понимаю, настройками платформы это не сделать.
 Пытаюсь программно &НаКлиенте Процедура ПередУдалениемСтрок(Элемент, Отказ) Если Элемент.ВыделенныеСтроки.Количество() = 0 Тогда Возврат; КонецЕсли; ТекстВопроса = НСтр("ru='Вы действительно хотите удалить выделенные строки из документа?'"); ОписаниеОповещения = Новый ОписаниеОповещения("ПередУдалениемСтрокЗавершение", ЭтотОбъект, Отказ); ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет); КонецПроцедуры &НаКлиенте Процедура ПередУдалениемСтрокЗавершение(РезультатВопроса, Отказ) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Нет Тогда Отказ = Истина; КонецЕсли; КонецПроцедуры Но строка удаляется уже в первой процедуре | |||
| 1
    
        okSYS 05.04.18✎ 15:09 | 
        отКаз поставь в ложь сразу     | |||
| 2
    
        MistaEr 05.04.18✎ 15:30 | 
        &НаКлиенте
 Процедура ПередУдалениемСтрокЗавершение(РезультатВопроса, Отказ) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда Отказ = Ложь; КонецЕсли; КонецПроцедуры Тогда не удаляет | |||
| 3
    
        okSYS 05.04.18✎ 15:41 | 
        имел введу в истину отказ сразу)
 &НаКлиенте Процедура ПередУдалениемСтрок(Элемент, Отказ) Если Элемент.ВыделенныеСтроки.Количество() = 0 Тогда Возврат; КонецЕсли; Отказ = Истина; ТекстВопроса = НСтр("ru='Вы действительно хотите удалить выделенные строки из документа?'"); ОписаниеОповещения = Новый ОписаниеОповещения("ПередУдалениемСтрокЗавершение", ЭтотОбъект, Отказ); ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет); КонецПроцедуры Если РезультатВопроса = КодВозвратаДиалога.Да Тогда Отказ = Ложь; КонецЕсли | |||
| 4
    
        Ненавижу 1С гуру 05.04.18✎ 15:41 | 
        (2) конечно не удалит, надо запомнить строки где-то
 а в этой процедуре их удалить | |||
| 5
    
        MistaEr 05.04.18✎ 15:43 | 
        &НаКлиенте
 Процедура ПередУдалениемСтрокЗавершение(РезультатВопроса, Отказ) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда МассивВыделенныхСтрок = Элемент.ВыделенныеСтроки; СпВыделенныхСтрок = Новый СписокЗначений; СпВыделенныхСтрок.ЗагрузитьЗначения(МассивВыделенныхСтрок); СпВыделенныхСтрок.СортироватьПоЗначению(НаправлениеСортировки.Убыв); Для Каждого Стр Из СпВыделенныхСтрок Цикл Объект[Элемент.Имя].Удалить(Стр.Значение); КонецЦикла; КонецЕсли; КонецПроцедуры | |||
| 6
    
        oslokot 05.04.18✎ 15:43 | 
        Просто поставь Отказ=Истина в процедуре обработчика     | |||
| 7
    
        MistaEr 05.04.18✎ 15:51 | 
        &НаКлиенте
 Процедура ПередУдалениемСтрок(Элемент, Отказ) Отказ = Истина; МассивВыделенныхСтрок = Элемент.ВыделенныеСтроки; Если Элемент.ВыделенныеСтроки.Количество() = 0 Тогда Возврат; КонецЕсли; ТекстВопроса = НСтр("ru='Вы действительно хотите удалить выделенные строки из документа?'"); ОписаниеОповещения = Новый ОписаниеОповещения("ПередУдалениемСтрокЗавершение", ЭтотОбъект, Новый Структура("МассивВыделенныхСтрок, Элемент", МассивВыделенныхСтрок, Элемент)); ПоказатьВопрос(ОписаниеОповещения, ТекстВопроса, РежимДиалогаВопрос.ДаНет); КонецПроцедуры &НаКлиенте Процедура ПередУдалениемСтрокЗавершение(РезультатВопроса, ДопПараметры) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда МассивВыделенныхСтрок = ДопПараметры.МассивВыделенныхСтрок; Элемент = ДопПараметры.Элемент; СпВыделенныхСтрок = Новый СписокЗначений; СпВыделенныхСтрок.ЗагрузитьЗначения(МассивВыделенныхСтрок); СпВыделенныхСтрок.СортироватьПоЗначению(НаправлениеСортировки.Убыв); Для Каждого Стр Из СпВыделенныхСтрок Цикл Объект[Элемент.Имя].Удалить(Стр.Значение); КонецЦикла; КонецЕсли; КонецПроцедуры /////// Первый раз он так удаляет нормально. Но когда еще выделяешь несколько строк, он не учитывает что до этого уже были удалены строки | |||
| 8
    
        MistaEr 05.04.18✎ 16:04 | 
        Нужно что то такое, типа, обновить форму. Но Элементы[Элемент.Имя].Обновить() читает форму из объекта БД и восстанавливает удаленные строки     | |||
| 9
    
        DmitrO 05.04.18✎ 16:16 | 
        (8)Нет, выделенные строки это вовсе не индексы строк. Это идентификаторы строк. Поэтому просто удалять надо вот так:
 Для Каждого ИДСтроки Из ДопПараметры.МассивВыделенныхСтрок Цикл Объект[Элемент.Имя].Удалить(Объект[Элемент.Имя].НайтиПоИдентификатору(ИДСтроки)); КонецЦикла; | |||
| 10
    
        MistaEr 05.04.18✎ 17:15 | 
        (9) Большое спасибо
 Я сделал вот так &НаКлиенте Процедура ПередУдалениемСтрокЗавершение(РезультатВопроса, ДопПараметры) Экспорт Если РезультатВопроса = КодВозвратаДиалога.Да Тогда МассивВыделенныхСтрок = ДопПараметры.МассивВыделенныхСтрок; Элемент = ДопПараметры.Элемент; Размер = МассивВыделенныхСтрок.Количество(); Для а = 1 По Размер Цикл Объект[Элемент.Имя].Удалить(Объект[Элемент.Имя].НайтиПоИдентификатору(МассивВыделенныхСтрок[Размер-а])); КонецЦикла; КонецЕсли; КонецПроцедуры | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |