Не получается удалить строку в табличной части документа
Здравствуйте, помогите пожалуйста
как удалить строку в табличной части с обработкой
Сделал такую обработку
Команда 1 выполняет
заполнение табл/ч строк которые нужно удалить
как удалить строку в табличной части с обработкой
Сделал такую обработку
Команда 1 выполняет
заполнение табл/ч строк которые нужно удалить
Результат = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = Результат.Выбрать();
Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
НоваяСтрока = Данные.Добавить();
НоваяСтрока.СсылкаНаБП = ВыборкаДетальныеЗаписи.СсылкаНаБП;
НоваяСтрока.СсылкаНаДокумент = ВыборкаДетальныеЗаписи.СсылкаТТН;
НоваяСтрока.ДокументПлатежка = ВыборкаДетальныеЗаписи.ПлатежкаДокумент;
НоваяСтрока.Сумма = ВыборкаДетальныеЗаписи.Сумма;
КонецЦикла;
Команда 2 удаляю у документа строку которая нужно удалить
Для каждого Строка Из Данные Цикл
ДокОбъект = Строка.СсылкаНаДокумент.ПолучитьОбъект();
СтрокаТабличнойЧасти = ДокОбъект.ТранспортныеУслуги.Получить(Строка.СсылкаНаБП);
УдалитьСтрокуТабл = ДокОбъект.ТранспортныеУслуги.Удалить(СтрокаТабличнойЧасти);
ДокОбъект.ОбменДанными.Загрузка = Истина;
//ДокОбъект.Записать();
КонецЦикла;
ПоказатьПо теме из базы знаний
- Сравнение 1С8 и Navision
- Разукрупнение (разделение, дробление) и частичная ликвидация основных средств
- Универсальное заполнение табличных частей
- Заполнение табличных частей документов одного вида из табличных частей списка документов другого вида (альтернатива ввода на основании)
- Неограниченное количество строк в табличной части документа
Найденные решения
(1)
Или
НО! Если в ВыборкаДетальныеЗаписи повторяются значения СсылкаТТН, то лучше оптимизировать, чтобы удалить все (не)нужные строки за одно обращение к объекту, а не "дёргать" объект документа по каждому значению.
Для каждого Строка Из Данные Цикл
ДокОбъект = Строка.СсылкаНаДокумент.ПолучитьОбъект();
СтрокиТЧ = ДокОбъект.ТранспортныеУслуги.НайтиСтроки(Новый Структура("ПолеТЧ_СоСсылкой", Строка.СсылкаНаБП));
Для каждого СтрокаТЧ из СтрокиТЧ Цикл
ИндексСтроки = ДокОбъект.ТранспортныеУслуги.Индекс(СтрокаТЧ);
ДокОбъект.ТранспортныеУслуги.Удалить(ИндексСтроки);
// Или ДокОбъект.ТранспортныеУслуги.Удалить(ДокОбъект.ТранспортныеУслуги.Индекс(СтрокаТЧ));
КонецЦикла;
ДокОбъект.ОбменДанными.Загрузка = Истина;
//ДокОбъект.Записать();
КонецЦикла;
ПоказатьИли
Для каждого Строка Из Данные Цикл
ДокОбъект = Строка.СсылкаНаДокумент.ПолучитьОбъект();
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.ТТН.ТранспортныеУслуги КАК тчТранспортныеУслуги ГДЕ тчТранспортныеУслуги.Ссылка = &СсылкаТТН И тчТранспортныеУслуги.ПолеТЧ_СоСсылкой <> &СсылкаНаБП) УПОРЯДОЧИТЬ ПО тчТранспортныеУслуги.НомерСтроки");
Запрос.УстановитьПараметр("СсылкаТТН ", Строка.СсылкаНаДокумент);
Запрос.УстановитьПараметр("СсылкаНаБП", Строка.СсылкаНаБП);
ДокОбъект.ТранспортныеУслуги.Загрузить(Запрос.Выполнить().Выгрузить());
ДокОбъект.ОбменДанными.Загрузка = Истина;
//ДокОбъект.Записать();
КонецЦикла;
ПоказатьНО! Если в ВыборкаДетальныеЗаписи повторяются значения СсылкаТТН, то лучше оптимизировать, чтобы удалить все (не)нужные строки за одно обращение к объекту, а не "дёргать" объект документа по каждому значению.
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Или
НО! Если в ВыборкаДетальныеЗаписи повторяются значения СсылкаТТН, то лучше оптимизировать, чтобы удалить все (не)нужные строки за одно обращение к объекту, а не "дёргать" объект документа по каждому значению.
Для каждого Строка Из Данные Цикл
ДокОбъект = Строка.СсылкаНаДокумент.ПолучитьОбъект();
СтрокиТЧ = ДокОбъект.ТранспортныеУслуги.НайтиСтроки(Новый Структура("ПолеТЧ_СоСсылкой", Строка.СсылкаНаБП));
Для каждого СтрокаТЧ из СтрокиТЧ Цикл
ИндексСтроки = ДокОбъект.ТранспортныеУслуги.Индекс(СтрокаТЧ);
ДокОбъект.ТранспортныеУслуги.Удалить(ИндексСтроки);
// Или ДокОбъект.ТранспортныеУслуги.Удалить(ДокОбъект.ТранспортныеУслуги.Индекс(СтрокаТЧ));
КонецЦикла;
ДокОбъект.ОбменДанными.Загрузка = Истина;
//ДокОбъект.Записать();
КонецЦикла;
ПоказатьИли
Для каждого Строка Из Данные Цикл
ДокОбъект = Строка.СсылкаНаДокумент.ПолучитьОбъект();
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ Документ.ТТН.ТранспортныеУслуги КАК тчТранспортныеУслуги ГДЕ тчТранспортныеУслуги.Ссылка = &СсылкаТТН И тчТранспортныеУслуги.ПолеТЧ_СоСсылкой <> &СсылкаНаБП) УПОРЯДОЧИТЬ ПО тчТранспортныеУслуги.НомерСтроки");
Запрос.УстановитьПараметр("СсылкаТТН ", Строка.СсылкаНаДокумент);
Запрос.УстановитьПараметр("СсылкаНаБП", Строка.СсылкаНаБП);
ДокОбъект.ТранспортныеУслуги.Загрузить(Запрос.Выполнить().Выгрузить());
ДокОбъект.ОбменДанными.Загрузка = Истина;
//ДокОбъект.Записать();
КонецЦикла;
ПоказатьНО! Если в ВыборкаДетальныеЗаписи повторяются значения СсылкаТТН, то лучше оптимизировать, чтобы удалить все (не)нужные строки за одно обращение к объекту, а не "дёргать" объект документа по каждому значению.
(6) В том то и дело, что автору не нужно удалить текущую строку, ему нужно удалить строки с определенными ссылками.
Т.е. нужно найти строки по ссылкам и получить индекс для каждой, а потом удалять.
Либо запросом выбрать строки ТЧ со всеми полями без этих ссылок, загрузить результат в эту ТЧ.
Т.е. нужно найти строки по ссылкам и получить индекс для каждой, а потом удалять.
Либо запросом выбрать строки ТЧ со всеми полями без этих ссылок, загрузить результат в эту ТЧ.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот