Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
27 Апр 2018, 11:29
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: Как удалить в ТЧ документа не все строки, а удовлетворяющие нужному условию  (Прочитано 2910 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн ktu78

  • ***
  • Сообщений: 153
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2014-08-21
  • Сайт: 
  • Профессия: Программист 1С
Добрый день, подскажите пожалуйста коллеги:

Это код удаления всех строк ТЧ
ОбъектДокумента = Документ.ПолучитьОбъект();
    ОбъектДокумента.Товары.Очистить(); 

Как удалить в ТЧ документа не все строки, а удовлетворяющие нужному условию

Спасибо


Оффлайн LexaK

  • *****
  • Сообщений: 1291
  • РЕПУТАЦИЯ: 354
  • КПД: 27%
  • Регистрация: 2012-05-16
  • Сайт: 
  • Профессия: Программист 1С
да-а-а, похоже что на такой элементарный вопрос вам никто не ответит,
это все равно что вы спросили:
- ребята, а сколько будет "2 + 2"

как вариант (создайте структуру, с ее помощью найдите строчки (которые надо удалить), и в цикле все их удалите) всего 5 строчек кода!
боюсь вы ничего не поняли.
Помогло? - Нажми СПАСИБО!!!
                       :)

Оффлайн Luzer1C

  • ****
  • Сообщений: 452
  • РЕПУТАЦИЯ: 54
  • КПД: 12%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Только если удалять в цикле, то только с использованием счетчика. По-другому просто нельзя.
Добавлено: 15 Дек 2015, 05:37

Сч = 1;
Пока Сч <= Объект.Товары.Количество() Цикл
Если Объект.Товары[Сч - 1].<<ИмяРеквизитаТЧ_Товары>> = <<Чему то равно>> Тогда
Объект.Товары.Удалить(Сч - 1);
Иначе
Сч = Сч + 1;
КонецЕсли;
КонецЦикла;
Халамбалам.

Последний раз редактировалось: Luzer1C; 15 Дек 2015, 05:37. Причина: Объединение сообщений

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Только если удалять в цикле, то только с использованием счетчика. По-другому просто нельзя.

Не есть факт. Да и при вашем алгоритме цикл не собьется часом?

Обычно обхожу таблицу циклом "Для каждого". Проверяем нужное условие и если выполняется то кладем текущую строку в массив для удаления.
Далее циклом обходим получивший массив и удаляем.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Luzer1C

  • ****
  • Сообщений: 452
  • РЕПУТАЦИЯ: 54
  • КПД: 12%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Так тоже можно.
Только если удалять строки из ТЧ сразу, то они сдвигаются и получится так, что, например, мы удалили строку и на её место встала другая строка. А так как мы обрабатываем циклом, то эту строку мы не проверим. Проверка условия перейдёт на другую строку.
Мой механизм рабочий. Это из обучающего видео Евгения Гилёва.
Халамбалам.

Оффлайн cska-fanat-kz

  • 1С:Специалист
  • Глобальный модератор
  • *****
  • Сообщений: 5745
  • РЕПУТАЦИЯ: 1099
  • КПД: 19%
  • Красная армия всех сильней!
  • Регистрация: 2010-11-06
    • Skype: cska-fanat-kz81
  • Сайт: cska-fanat-kz.ucoz.kz
  • Профессия: Разработчик 1С
Так тоже можно.
Только если удалять строки из ТЧ сразу, то они сдвигаются и получится так, что, например, мы удалили строку и на её место встала другая строка. А так как мы обрабатываем циклом, то эту строку мы не проверим. Проверка условия перейдёт на другую строку.
Мой механизм рабочий. Это из обучающего видео Евгения Гилёва.

При обходе циклом Для каждого например так
    Для каждого СтрокаТЧ Из Товары
    ...

то в СтрокаТЧ "сидит" каждый раз ссылка (или адрес в памяти) на текущую строку.
поэтому совершенно не важно ее изменяющееся положение относительно других.
Получил помощь - скажи СПАСИБО.
Разобрался сам - расскажи другим.

Оффлайн Luzer1C

  • ****
  • Сообщений: 452
  • РЕПУТАЦИЯ: 54
  • КПД: 12%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Правильнее было написать так: "с использованием массива для удаления или с использованием счетчика".
Цитировать
Да и при вашем алгоритме цикл не собьется часом?
Если не верите, советую проверить.
Халамбалам.

Оффлайн KrivosheevEV

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 35
  • КПД: 17%
  • Регистрация: 2014-01-20
  • Сайт: 
  • Профессия: Программист 1С
Тоже считаю, что удаление по индексу строки допустимо только снизу. Удаление по ссылке - направление не важно.

Оффлайн Luzer1C

  • ****
  • Сообщений: 452
  • РЕПУТАЦИЯ: 54
  • КПД: 12%
  • Регистрация: 2014-02-17
  • Сайт: 
  • Профессия: Программист 1С
Вы не понимаете суть алгоритма. Советую разобраться.
Халамбалам.

Оффлайн KrivosheevEV

  • ***
  • Сообщений: 202
  • РЕПУТАЦИЯ: 35
  • КПД: 17%
  • Регистрация: 2014-01-20
  • Сайт: 
  • Профессия: Программист 1С
А ведь и вправду годно. Не обратил внимание на блок "Иначе".


Теги:
 

Не открывает форму сохраненного документа, открывает форму нового.

Автор EHOTРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 4808
Последний ответ 13 Апр 2012, 23:26
от Vit1501
Автоматическое заполнение табличной части документа из табличной части другого

Автор WillРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 6
Просмотров: 17043
Последний ответ 16 Авг 2012, 12:07
от Will
Заполнение поля табличной части документа из табличной части справочника.

Автор Kurt_WagnerРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 3
Просмотров: 4692
Последний ответ 06 Апр 2015, 20:08
от Kurt_Wagner
Заполнение табличной части документа реквизитами табличной части справочника

Автор kaf_infoРаздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 1
Просмотров: 1091
Последний ответ 10 Май 2017, 20:44
от ilnur75
Добавление сведений в графу "основание" документа "ТОРГ-12"

Автор Ярослав1984Раздел Конфигурирование, программирование в "1С - Предприятие 8"

Ответов: 4
Просмотров: 8182
Последний ответ 20 Авг 2013, 18:45
от Ярослав1984

* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
208 Сообщений
alex0402
74 Сообщений
AIFrame AIFrame
57 Сообщений
oleg-x
49 Сообщений
alexandr_ll
37 Сообщений
BuhRust
23 Сообщений
pavl_vs
22 Сообщений
KOI8-R
20 Сообщений
Sheriff
17 Сообщений
wise wise
15 Сообщений

* Кто онлайн

  • Точка Гостей: 850
  • Точка Скрытых: 0
  • Точка Пользователей: 8
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal