helpf.pro
Регистрация
 +8 
Распечатать

1С 8.2 УП : Удаление строк из табличной части документа, все или по условию.

Удалить все строки табличного поля документа.
Код 1C v 8.х
  ОтражениеВУчете.Очистить(); // ОтражениеВУчете - название табличного поля    



Как в табличной части документа удалить строки только с нулевым значением реквизита "Количество"?
Код 1C v 8.х
  //Получим документ и укажем параметры поиска
ОбъектДок = СсылкаДок.ПолучитьОбъект();
СтруктураДляПоиска = Новый Структура("Количество", 0);
ТабличнаяЧастьДок = ОбъектДок.Товары;
//Получаем список строк соответсвтвующих отбору, и перебором удаляем.
МассивПустыхСтрок = ТабличнаяЧастьДок.НайтиСтроки(СтруктураДляПоиска);
Для каждого Строка Из МассивПустыхСтрок Цикл
ТабличнаяЧастьДок.Удалить(Строка);
КонецЦикла;
ОбъектДок.Записать(); // Записываем изменения в документе



Как удалить все строки, кроме тех которые соответсвуют заданному отбору?
Код 1C v 8.х
  // Укажем условия отбора: Нужно оставить только строки где СубконтоКт1 = РБПНаПФР	
ПараметрыОтбора = Новый Структура("СубконтоКт1", Справочники.РасходыБудущихПериодов.РБПНаПФР);
//Теперь выгружаем табличную часть в таблицу значений
ТЗисходн=ОтражениеВУчете.Выгрузить();
//Скопируем ТЗ с заданным отбором в новую ТЗ
ТЗнов = ТЗисходн.Скопировать(ПараметрыОтбора);
//Очистим табличную часть
ОтражениеВУчете.Очистить();
//Загружем в табличную часть новую таблицу значений
ОтражениеВУчете.Загрузить(ТЗнов);



В режиме управляемого приложения конструкция:
Код 1C v 8.2 УП
 Для каждого Запись из ТабличнойЧасти Цикл
Если Запись.НадоУдалить Тогда
ТабличнойЧасти.Удалить(Запись);
КонецЕсли;
КонецЦикла;


Работает некорректно, так как переписывает табличную часть и меняет индексы, сразу после удаления и Цикл полностью не обходит.
Решение пришло такое:
Код 1C v 8.2 УП
    КолВо = Объект.ТабличнойЧасти.Количество()-1;
ИндексСтроки = КолВо;
Для счетчик = 0 по КолВо Цикл
Запись = Объект.ТабличнойЧасти.Получить(ИндексСтроки);
если Запись.НадоУдалить тогда
Объект.ТабличнойЧасти.Удалить(Запись);
КонецЕсли;
ИндексСтроки = ИндексСтроки - 1;
КонецЦикла;
Разместил:   Версии: | 8.x | 8.2 УП |  Дата:   Прочитано: 54537
 +8 
Распечатать
Возможно, вас также заинтересует
COM-подключение к базе 7.7 из 8.2 1С 4
Если код выполняется на стороне клиента, то необходимо наличие базы 7.7 на локальной машине. Пример (На форме объекта присутствует реквизит Таблица(ТаблицаЗначений)): НаКлиенте Процедура Загрузки() ПутьКБазе="...
Cодержимое указанного ниже веб-сайта в этом приложении блокируется... Aboutsecurity_1cv8c.exe 0
Проблема: После обновления на 1С:Бухгалтерию предприятия 3-й версии, при нажатии на закладку командного интерфейса 1С:предприятие, выскакивает ошибка: Aboutsecurity_1cv8c.exe или Aboutsecurity_1cv8.exe «Содержимое указанного ниже...
Cообщение: "Не удалось удалить чеки ККМ!" 2
Пользователь с правами Администратор ККМ проводит Закрытие кассовой смены (Z). Выходит сообщение: " Не удалось удалить чеки ККМ!" ФР печатает Z -отчет, но Отчет о рознчничных продажах не формируется. Необходимо дать...
Excel файл как Внешний источник данных 4
Подключимся и загрузим из файла Excel данные в таблицу значений 1С. Сделать теперь это очень просто. 1. В конфигурации добавляет новый объект метаданных типа " Внешние источники данных" и назовем его просто " Excel" . ...
Google maps : вывод точек на карту и режим панорамы 2
В отличие от яндекс карт в GMaps можно использовать панорамы - за что им большой плюс! Надеюсь в яндексе прочитают этот пост и тоже когда-нибудь это сделают! Для клиента нужно было сделать вывод объектов на карту С...
Посмотреть все результаты поиска похожих
Комментарии
all4cf
29.07.2016 04:10Комментарий: 1
all4cf

Сделал так:

Код 1C v 8.х
 Процедура КоманднаяПанельКомплектующиеКопированиеВДругуюКомплектацию(Кнопка)
текДокумент = Документы.КомплектацияНоменклатуры.ПустаяСсылка();
Если ВвестиЗначение(текДокумент,"Выберите документ в который перенести выделенные строки:") Тогда 
текОбъект=текДокумент.ПолучитьОбъект(); 
СписокУдаленияСтрок=Новый СписокЗначений; ном=0;
для Каждого стр из ЭлементыФормы.Комплектующие.ВыделенныеСтроки Цикл 
ном=ном+1;
ЗаполнитьЗначенияСвойств(текОбъект.Комплектующие.Добавить(),стр);
СписокУдаленияСтрок.Добавить(стр,ном);
КонецЦикла;
текОбъект.Записать();
//Удалим в текущем документе
СписокУдаленияСтрок.СортироватьПоПредставлению(НаправлениеСортировки.Убыв);
Для Каждого стр из СписокУдаленияСтрок Цикл 
  Комплектующие.Удалить(стр.Значение);
КонецЦикла;
КонецЕсли;
КонецПроцедуры
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.