как удалить строки тч документа #609076


#0 by dreamoff
есть табл. часть обработки,в которой указаны нужные группы.как из табл. части документа корректно удалить строки номенклатуры, которые входят в эти группы с учетом иерархии?
#1 by zak555
перебор тч дока с конца
#2 by Ненавижу 1С
загрузка ТЧ в запрос, нахождение запросом нужные номера строк, создание массива нужных строк, удаление их из ТЧ
#3 by dreamoff
мне еще не понятно,как сделать,что бы отбор шел с учетом иерархии
#4 by Ненавижу 1С
1. в запросе есть оператор В ИЕРАРХИИ 2. в языке есть метод ПринадлежитЭлементу
#5 by dreamoff
Ошибка при вызове метода контекста (Удалить) по причине: Несоответствие типов (параметр номер '1') что не так?((
#6 by Cube
ТабличнаяЧастьДок.Удалить(Строка.Значение);
#7 by ДенисЧ
Документацию не читаешь?
#8 by Cube
И зачем тебе вообще этот список значений нужен - не понятно.
#9 by dreamoff
глупая ошибка)
#10 by dreamoff
теперь он выходит индекс за границу
#11 by dreamoff
а как грамотно сделать?
#12 by catena
Потому что индекс и номер строки - два разных человека.
#13 by Cube
Есть индекс строки, а есть номер строки. Индексы нумеруются с 0, а номера строк с 1...
#14 by Wobland
#15 by catena
+Ну и еще потому, что строк-то меньше становится в процессе удаления...
#16 by Cube
Ну, хотя бы так:
#17 by Cube
+1 +1
#18 by dreamoff
выдает ошибку выхода за границу
#19 by Zmich
. Удаляй строки с конца, см.
#20 by catena
Или создай массив строк и удаляй Строки, а не по индексу.
#21 by Cube
Да потому что, скорее всего, ты пытаешься удалить строку, которой уже нет в ТЧ. Допуцстим, есть ТЧ с 5-ю строками. Нужно удалить 3-ю и 5-ю. Ты удаляешь сначала третью. Строки сдвигаются и пятая строка становится четвертой. И теперь ты пытаешься удалить строку номер пять... Занавес.
#22 by fisher
Если работать напрямую со ссылками на строки табличной части, тогда никакие номера строк и прочие извращения не нужны. Просто удаляешь по ссылкам без оглядки и всё. Если всё-таки по индексам нужно (по результатам запроса, например), тогда просто начиная с последних индексов удаляешь.
#23 by НЕА123
+1
#24 by Deon
У строк ТЧ нет ссылки
#25 by Cube
Посмотри тут:
#26 by fisher
В БД - да, нету. А в объекте "ТабличнаяЧасть" - есть. Это по сути есть коллекция ссылок на элементы, содержащие данные строк.
#27 by catena
Не сработает?
#28 by hhhh
так у него иерархия еще.
#29 by fisher
Просто еще в запросе отсортируй результат по убыванию номеров строк.
#30 by catena
Я пример привела, я не собираюсь автору решение писать - у меня отпуск :)
#31 by dreamoff
|    НомерСтроки скажите,где ошибка,номер строк неверные
#32 by Cube
Сделай хотя бы так:
#33 by dreamoff
это я не целиком скопировал)
#34 by dreamoff
например позиция,которая в тч имеет номер 3154, у меня идет под номер 1
#35 by Grobik
Мне месяца три назад так подсказали (сработало):
#36 by Cube
Да ну на! Ты в запросе просто выбрал все документы. Отфильтруй по одному, что-то вроде:
#37 by Cube
+ А лучше так:
#38 by dreamoff
чет я сегодня слишком много лажаю( а какая разница между этими конструкциями?
#39 by Eugene_life
одна из них ведет к пробуждению, а вторая - к забвению :)
#40 by Cube
Во втором варианте можно в &спНом засунуть список, в котором идут группы с элементами вперемешку. И запрос это отработает нормально, в отличии от первого варианта...
#41 by dreamoff
спасибо всем, теперь все это надо закрепить)
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С