Удалить строку таблицы формы

1. sys1c 06.07.20 09:59 Сейчас в теме
УФ.
нужно задавать вопрос перед удалением строки в таблице формы.

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


затем ловлю ответ в

Процедура ПослеОтветаНаВопрос(Результат, Параметры) Экспорт / тут в параметрах эта текущая строка
	
	Если Результат = КодВозвратаДиалога.Да Тогда

               а как удалить ее не пойму? именно на клиенте. ведь в объект еще  может не быть
		
	Иначе
		
	КонецЕсли;
	
КонецПроцедуры
Показать
По теме из базы знаний
Найденные решения
4. dmbarchenkov 06.07.20 10:22 Сейчас в теме
(1) в Оповещении нужно передать Параметры, содержащие данные о строке. Ваша таблица это табличная часть Объекта? Если да, то удаляйте так:
Объект.Таблица.Удалить(Параметры.УдаляемаяСтрока);

как то так.
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 34 06.07.20 10:03 Сейчас в теме
(1)
а как удалить ее не пойму? именно на клиенте. ведь в объект еще может не быть

чушь
3. sys1c 06.07.20 10:11 Сейчас в теме
(2) ок. как удалить без чуши?
4. dmbarchenkov 06.07.20 10:22 Сейчас в теме
(1) в Оповещении нужно передать Параметры, содержащие данные о строке. Ваша таблица это табличная часть Объекта? Если да, то удаляйте так:
Объект.Таблица.Удалить(Параметры.УдаляемаяСтрока);

как то так.
6. farengeit00 06.07.20 11:21 Сейчас в теме
&НаКлиенте
Процедура ДанныеОВремениПередУдалением(Элемент, Отказ)
	                                                        
    Отказ = Истина;
	Элемент = Элемент.ТекущаяСтрока;  
	Параметр = Новый Структура("Элемент", Элемент);
    Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект, Параметр);
    
    ПоказатьВопрос(Оповещение, "Удалить строку?", 
        РежимДиалогаВопрос.ДаНетОтмена,
        0, 
        КодВозвратаДиалога.Да);
		
	КонецПроцедуры
	
&НаКлиенте
Процедура ПослеОтветаНаВопрос(Результат, Параметры) Экспорт
	
	Если Результат = КодВозвратаДиалога.Да Тогда
		Объект.Перечень.Удалить(Параметры.Элемент);
	КонецЕсли;
	
КонецПроцедуры
Показать
5. sapervodichka 6813 06.07.20 10:36 Сейчас в теме
1) Передать в оповещение не сам элемент а идентификатор удаляемой строки:

.....
ТекущиеДанные = Элементы.ЗдесьИмяТаблицыНаФорме.ТекущиеДанные;
ИдентификаторТекущейСтроки = ТекущиеДанные .ПолучитьИдентификатор();
Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект, Новый Структура("ИдентификаторТекущейСтроки", ИдентификаторТекущейСтроки));
....


2) Затем в обработке оповещения

......
Если Результат = КодВозвратаДиалога.Да Тогда
       НайденнаяСтрокаТаблицы = Объект.Таблица.НайтиПоИдентификатору(Параметры.ИдентификаторТекущейСтроки);  
       Объект.Таблица.Удалить(НайденнаяСтрокаТаблицы );      
Иначе
        
КонецЕсли;
......
_Vovik; kondrp; klaus38; Art39_; +4 Ответить
7. Attya 12.07.23 14:17 Сейчас в теме
Схожая проблема. Делаю канбан. Нужно удалить строку ТаблицаФормы (переместить в другую таблицу). Одна строка удаляется нормально, при попытке удалить вторую строку получаю ошибку - Значение индекса выходит за границы диапазона. Удаляю при событии ОкончаниеПеретаскивания.
Элемент - ТаблицаФормы
Элемент.Имя совпадает с реквизитом-источником.
Думал, Элемент.Обновить будет и индексы обновлять в таблице, но нет. У второй строки остается индекс 2 даже если это последняя строка таблицы. Как нужно правильно перемещать строки из таблиц перетаскиванием?
&НаКлиенте
Процедура СтатусОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	УдалитьСтрокуТаблицы(Элемент.Имя, Элемент.ТекущаяСтрока);
	Элемент.Обновить();
КонецПроцедуры

&НаСервере
Процедура УдалитьСтрокуТаблицы(ИмяРеквизита, НомерСтроки)
	Таблица = РеквизитФормыВЗначение(ИмяРеквизита);
	Таблица.Удалить(НомерСтроки);	
	ЗначениеВРеквизитФормы(Таблица, ИмяРеквизита);
КонецПроцедуры
Показать
8. Attya 13.07.23 12:15 Сейчас в теме
(7) Окей ТекущаяСтрока это идентификатор, а не индекс....мне бы получить индекс или возможность удалять по идентификатору а не по индексу
9. Sashares 34 13.07.23 12:55 Сейчас в теме
(8)
Элементарно - найти строку по идентификатору и удалить ее.
&НаКлиенте
Процедура СтатусОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
    УдалитьСтрокуТаблицы(Элемент.Имя, Элемент.ТекущаяСтрока);
КонецПроцедуры

&НаСервере
Процедура УдалитьСтрокуТаблицы(ИмяРеквизита, ИдСтроки)
    СтрокаТаблицы = ЭтотОбъект[ИмяРеквизита].НайтиПоИдентификатору(ИдСтроки);
    ЭтотОбъект[ИмяРеквизита].Удалить(СтрокаТаблицы );    
КонецПроцедуры
Показать
10. SlavaKron 13.07.23 13:26 Сейчас в теме
(9) А зачем серверный вызов?
12. Sashares 34 13.07.23 13:40 Сейчас в теме
(10)Скопировал исходный код и не правил это. Но да, вы правы, можно на клиенте.
11. Attya 13.07.23 13:35 Сейчас в теме
(9) Большое Спасибо! Вроде смотрел СП, но не мог найти нужные мне методы.

Если кому нужно:
&НаКлиенте
Процедура СтатусОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
	УдалитьСтрокуТаблицы(Элемент.Имя, Элемент.ТекущаяСтрока);
КонецПроцедуры

&НаКлиенте
Процедура УдалитьСтрокуТаблицы(ИмяРеквизита, НомерСтроки)
	СтрокаТаблицы = ЭтотОбъект[ИмяРеквизита].НайтиПоИдентификатору(НомерСтроки);
	ЭтотОбъект[ИмяРеквизита].Удалить(СтрокаТаблицы);
КонецПроцедуры
Показать
Оставьте свое сообщение

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