УФ.
нужно задавать вопрос перед удалением строки в таблице формы.
затем ловлю ответ в
нужно задавать вопрос перед удалением строки в таблице формы.
&НаКлиенте
Процедура ДанныеОВремениПередУдалением(Элемент, Отказ)
Отказ = Истина;
Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект, Элемент);
ПоказатьВопрос(Оповещение, "Удалить строку?",
РежимДиалогаВопрос.ДаНетОтмена,
0,
КодВозвратаДиалога.Да);
КонецПроцедуры
Показатьзатем ловлю ответ в
Процедура ПослеОтветаНаВопрос(Результат, Параметры) Экспорт / тут в параметрах эта текущая строка
Если Результат = КодВозвратаДиалога.Да Тогда
а как удалить ее не пойму? именно на клиенте. ведь в объект еще может не быть
Иначе
КонецЕсли;
КонецПроцедуры
ПоказатьПо теме из базы знаний
- Удаление строк из таблицы значений по критерию
- Консоль запросов для управляемых форм
- Что не так с таблицами формы?
- Удаление строк из таблицы значений различными способами с замером производительности
- Снизу вверх по табличной части. Разбираемся в понятиях Идентификатор-индекс-номер строки управляемых форм
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4)
Пример кода, который очищает текущую выбранную строку из ТаблицыФормы, связанной с табличной частью объекта:
Объект.Таблица.Удалить(Параметры.УдаляемаяСтрока)
Пример кода, который очищает текущую выбранную строку из ТаблицыФормы, связанной с табличной частью объекта:
&НаКлиенте
Процедура ОчиститьКартинку(Команда)
ТекущаяСтрока = Элементы.КоллекцияИзображений.ТекущаяСтрока;
Если ТекущаяСтрока <> Неопределено Тогда
Объект.КоллекцияИзображений.Удалить(Объект.КоллекцияИзображений.НайтиПоИдентификатору(ТекущаяСтрока));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДанныеОВремениПередУдалением(Элемент, Отказ)
Отказ = Истина;
Элемент = Элемент.ТекущаяСтрока;
Параметр = Новый Структура("Элемент", Элемент);
Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект, Параметр);
ПоказатьВопрос(Оповещение, "Удалить строку?",
РежимДиалогаВопрос.ДаНетОтмена,
0,
КодВозвратаДиалога.Да);
КонецПроцедуры
&НаКлиенте
Процедура ПослеОтветаНаВопрос(Результат, Параметры) Экспорт
Если Результат = КодВозвратаДиалога.Да Тогда
Объект.Перечень.Удалить(Параметры.Элемент);
КонецЕсли;
КонецПроцедуры
Показать
1) Передать в оповещение не сам элемент а идентификатор удаляемой строки:
2) Затем в обработке оповещения
.....
ТекущиеДанные = Элементы.ЗдесьИмяТаблицыНаФорме.ТекущиеДанные;
ИдентификаторТекущейСтроки = ТекущиеДанные .ПолучитьИдентификатор();
Оповещение = Новый ОписаниеОповещения("ПослеОтветаНаВопрос", ЭтотОбъект, Новый Структура("ИдентификаторТекущейСтроки", ИдентификаторТекущейСтроки));
....
2) Затем в обработке оповещения
......
Если Результат = КодВозвратаДиалога.Да Тогда
НайденнаяСтрокаТаблицы = Объект.Таблица.НайтиПоИдентификатору(Параметры.ИдентификаторТекущейСтроки);
Объект.Таблица.Удалить(НайденнаяСтрокаТаблицы );
Иначе
КонецЕсли;
......
Схожая проблема. Делаю канбан. Нужно удалить строку ТаблицаФормы (переместить в другую таблицу). Одна строка удаляется нормально, при попытке удалить вторую строку получаю ошибку - Значение индекса выходит за границы диапазона. Удаляю при событии ОкончаниеПеретаскивания.
Элемент - ТаблицаФормы
Элемент.Имя совпадает с реквизитом-источником.
Думал, Элемент.Обновить будет и индексы обновлять в таблице, но нет. У второй строки остается индекс 2 даже если это последняя строка таблицы. Как нужно правильно перемещать строки из таблиц перетаскиванием?
Элемент - ТаблицаФормы
Элемент.Имя совпадает с реквизитом-источником.
Думал, Элемент.Обновить будет и индексы обновлять в таблице, но нет. У второй строки остается индекс 2 даже если это последняя строка таблицы. Как нужно правильно перемещать строки из таблиц перетаскиванием?
&НаКлиенте
Процедура СтатусОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
УдалитьСтрокуТаблицы(Элемент.Имя, Элемент.ТекущаяСтрока);
Элемент.Обновить();
КонецПроцедуры
&НаСервере
Процедура УдалитьСтрокуТаблицы(ИмяРеквизита, НомерСтроки)
Таблица = РеквизитФормыВЗначение(ИмяРеквизита);
Таблица.Удалить(НомерСтроки);
ЗначениеВРеквизитФормы(Таблица, ИмяРеквизита);
КонецПроцедуры
Показать
(8)
Элементарно - найти строку по идентификатору и удалить ее.
Элементарно - найти строку по идентификатору и удалить ее.
&НаКлиенте
Процедура СтатусОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
УдалитьСтрокуТаблицы(Элемент.Имя, Элемент.ТекущаяСтрока);
КонецПроцедуры
&НаСервере
Процедура УдалитьСтрокуТаблицы(ИмяРеквизита, ИдСтроки)
СтрокаТаблицы = ЭтотОбъект[ИмяРеквизита].НайтиПоИдентификатору(ИдСтроки);
ЭтотОбъект[ИмяРеквизита].Удалить(СтрокаТаблицы );
КонецПроцедуры
Показать
(9) Большое Спасибо! Вроде смотрел СП, но не мог найти нужные мне методы.
Если кому нужно:
Если кому нужно:
&НаКлиенте
Процедура СтатусОкончаниеПеретаскивания(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка)
УдалитьСтрокуТаблицы(Элемент.Имя, Элемент.ТекущаяСтрока);
КонецПроцедуры
&НаКлиенте
Процедура УдалитьСтрокуТаблицы(ИмяРеквизита, НомерСтроки)
СтрокаТаблицы = ЭтотОбъект[ИмяРеквизита].НайтиПоИдентификатору(НомерСтроки);
ЭтотОбъект[ИмяРеквизита].Удалить(СтрокаТаблицы);
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот