|
Просить подтверждение перед удалением строк табличной части | ☑ | ||
---|---|---|---|---|
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 По Размер Цикл Объект[Элемент.Имя].Удалить(Объект[Элемент.Имя].НайтиПоИдентификатору(МассивВыделенныхСтрок[Размер-а])); КонецЦикла; КонецЕсли; КонецПроцедуры |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |