v7: Как правильно удалять строки при выборке тз ? #269191


#0 by FlooDF
Попробовал так, пишет номер за пределами значений, в чеём ропблема не подскажете ?
#1 by kazam
смотря чего надо добиться
#2 by DrShad
выборка нарушается
#3 by fabrikant
#4 by Каанкереде
не надо делать операций со счетчиком
#5 by kazam
(тз.ТекДок)=0 фигня может нужно ПолучитьСтрокуПоНомеру?
#6 by FlooDF
Надо убить все строки из ТЗ, в которой колонка "текДок" пустая !
#7 by Программист 484
Делай обхзод таблицы снизу вверх и соответственно тебе не потребуется проверка на кол-во строк
#8 by kazam
надо
#9 by Каанкереде
каждую итерацию вычислять количество строк?
#10 by Каанкереде
одноэска не любит этого....я уже попадал на эти грабли...
#11 by Вильям
#12 by ИвановИван
Было три строки первую ты удаляешь, вторая становится первой, а Н = 2
#13 by svsrus
А вообще где-то тема была и даже конкурс на самое быстрое удаление строк ТЗ. Если не ошибаюсь. Смотрите книгу знаний, поиск.
#15 by Фокусник
или можно сделать цикл вида Пока ТЗ.НайтиЗначение=1
#16 by Твоя_Совесть
Уж сколько раз твердили миру...
#17 by kazam
точно. Намного проще получиться
#18 by svsrus
#19 by ДурилкоКартонная
#20 by Фокусник
офигенная конструкция: (:
#21 by Лефмихалыч
так попробуй
#22 by Каанкереде
+ Как вы думаете, каков результат кода?    К=6; А теперь попробуйте...
#23 by smaharbA
#24 by kazam
зачем печатать больше? Если тз.КоличествоСтрок = 0 Тогда Возврат КонецЕсли;
#25 by smaharbA
в прав, что лучче без счетчика к примеру 20000 строк в доке
#26 by smaharbA
абалдеть, этож ручной тормоз
#27 by kazam
сам тащусь
#28 by Каанкереде
самое правильное, имхо, вот так:
#29 by kazam
ну и что? нагружает проц сильно?
#30 by smaharbA
== но симпатишнее ))
#31 by smaharbA
удалять будет долго
#32 by kazam
одно пустое сообщение. Либо сообщить не выведет ничё
#33 by smaharbA
+ я думал -> а если к то нифига не выйдет со счетчиком
#34 by Каанкереде
да ну...без поллитры не разберешься ...минусакакие та..
#35 by Вильям
11 симпатичнее...
#36 by Каанкереде
а ты уже попробовал???? Результат 1 2 3 4 5 6 :) :) :): ): ): ):
#37 by ДурилкоКартонная
У меня все равно писька больше
#38 by Каанкереде
+ Кстати началось, где то с 21 релиза, до этого нормально было
#39 by McNamara
исходя из условий автора я бы сделал так
#40 by kazam
ну да, нужно удалять сторки в обратном порядке тз.Сортировать("Док-"); Если тз.КоличествоСтрок = 0 Тогда Возврат КонецЕсли;
#41 by NS
Чушь. С сомого начала предельное значение счетчика цикла запоминалось при его инициализации (for), и как ни меняй K внутри цикла, ничего не изменится. И так в любом Паскалеподобном языке (Бейсик, Паскаль). Цикл из На любом релизе выдаст шесть строк, и так не только в 1С.
#42 by McNamara
сорри "н" тут непричем)
#43 by kazam
билн а я думал <-
#44 by КонецЦикла
О Боги!
#45 by Каанкереде
до 21 релиза выдавал 1 строку. Точно тебе скажу.
#46 by Лефмихалыч
плагиатор! см
#47 by NS
Точно тебе скажу, что как и должен - выдавал шесть строк.
#48 by kazam
"как ни меняй K внутри цикла, ничего не изменится." Чушь. Но чисто теоритически - зависит от компилятора.
#49 by Рэйв
Я сам пользуюсь такой конструкцией.Все отрабатывает нормально
#50 by NS
Чисто теоритически - прописано в стандарте языков (и Бейсик, и Паскаль) От компилятора ничего не зависит. Учите мат. часть.
#51 by FlooDF
Спасибо прокатило !
#52 by kazam
да ну?! Не пробовал. Тупое 1с
#53 by Каанкереде
хоть прямо лезь релизы ставь старые :) Хотя может у меня парралакс в мозгу уже, но помню, что менял я предельное значение счетчика. И работало, а после смены релиза перестало.
#54 by kazam
в Си чего-то все нормально.
#55 by Каанкереде
сам обалдел в свое время...Хотя как правильно - ХЗ...
#56 by kazam
меня вообще не приколола эта фишка что 1с тупит при УдалитьСтроку в ВыбратьСтроки
#57 by NS
В си есть цикл for ... to? Вы на какой помойке свой стандарт Си нашли?
#58 by FlooDF
Круто =)
#59 by kazam
а ещё хотелось бы метод ТабЗнач.НоваяСтрока; ТабЗнач.УстановитьЗначения(<нач_колонка>, <зн1>,<зн2>,...);
#60 by kazam
Вы тупицей притворяетесь?
#61 by Просто Миша
При прямом обходе (сверху вниз), после каждого удаления, надо поднимать указатель вверх.
#62 by Каанкереде
ну это же не for ... to, это несколько иная вещь...
#63 by NS
Помоему тупицей притворяется кто-то другой. В Си нет цикла "For to", есть цикл с похожим написанием, но с другим смыслом - "for"
#64 by Каанкереде
Пять баллов. Просто пять баллов.
#65 by kazam
да, инная. Конец цикла может быть не контанта
#66 by svsrus
Из книги знаний. Развели дискуссию на пустом месте. ВНИМАНИЕ Часто требуется удалить строки, удовлетворяющие определенному условию. Так как при удалении строки из таблицы значений следующая строка становится текущей, то указанная ниже программа может удалить НЕ ВСЕ необходимые строки. В этом случае я рекомендую использовать следующий прием: ТабЗнач.ВыбратьСтроки; Пока ТабЗнач.ПолучитьСтроку=1 Цикл А вот еще один правильный алгоритм, предложенный Wlad: ТабЗнач.выбратьстроки;
#67 by Просто Миша
Пардон Так вроде, давно не сталкивался
#68 by kazam
С похожим смыслом к For to, но в лучшей реализации. Сказать что "В Си нет цикла "For to"" - тоже что сказать что если в машине не нужно переключать передачи - то в ней нет коробки передач.
#69 by kazam
руки за это поотрывать
#70 by NS
Никто не рассуждает о нужности этого цикла. констатируется факт - поведения цикла "for to" при изменении внутри цикла конечного значения значения счетчика регламентируется стандартами, и во всех языках одинаково. И в Си такого цикла нет.
#71 by kazam
ну и слава богу! дубовый цикл. Часто нужно изменить границу цикла.
#72 by Просто Миша
В общем самый простой и понятный способ(достаточно быстрый),подьем указателя КонецЕсли
#73 by NS
А когда нужно изменить границу цикла можно использовать другие конструкции - while и repeat (Либо "Пока ... цикл" в 1С) По ващей логике бинарная операция "*" абсолютно "дубовая", так как она не умеет складывать, а кому взбрело в голову придумать NOT вообще непонятно - это же ущербный XOR :) NOT A = A XOR (-1)
#74 by McNamara
А удаляльщикистрокТЗ никак не успокоятся))))
#75 by kazam
бинарные и булевы операции - это база. на них можно постоить и дубовую конструкцию, и гибкую. NOT - рулит.
#76 by DrZombi
А этот алгоритм лучше ;Р
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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