#0
by KAPACb
Задача - надо перебрать все строки в ТЗ, и та у которой несколько условий сработает отрабатывается, и удаляется.Но! Удаление строки сдвигает строки(так?) и получается, что несколько строк выпадут из списка.Делал через ВыбратьСтроки, ПолучитьСтроку, затем подумал сделать цикл от 1 до КоличествоСтрок, но понял что это проблему не решает. Удаление строки в любом случае сдвигает строки.Как быть?
#2
by MetaEditor
когда проклуб оживёт, поищи там по delstrtz.zip - с десяток способов решения этой задачи...
#3
by KAPACb
Чувак, ты конечно извини, но ты блин тормозишь штоли?Ну представь цуцл, А = от 1 до КоличествоСтрокЦуцл начался. А = 1.Ты строку отработал, удаляешь её. И первой строкой станет бывшая вторая строка. А второй строкой станет бывшая третья.Цуцл продолжается, А = 2. Но когда ты будешь побращаццо к строке №2, это будет бывшая третья строка! Т.е. первоначальная вторая строка пролетает мимо.
#4
by KAPACb
А это... типа... мне срочно бы надо...Есть вариант, если точно знать что строки сдигаются всегда вверх... Делать цикл и переменную цикла при удалении строки уменьшать на 1.Вкратце не расскажешь что это за десяток способов?
#5
by KAPACb
<><>ЯшЩюЩЩяЩюЋ«Щ®ЪўЩ®Ћ«Щ¬Щ«ЩшЩ®ЩяЪэЪ©ЪшЋ«ЩюЩЇЩяЩюЋ«ЩэЩюЩщЩ®Ћ«ЩяЩ«Ћ«ЋяЏЄЋшЋ«ЩЈЋ«ЩэЩюЪ©ЩюЩшЋ«ЪЄЩ©Щ®Ъ«ЩяЪЁЪ©ЪшЋ«Ш©Я¬ЋюЋ«ЯЈЋ«ЩэЪ«ЩюЩ©Щ®Ъ«ЩЈЪ©ЪшЋшЋ«Щ®ЪЄЩщЩЈЋ«ЪЄЪ©Ъ«ЩюЩъЩ«Ћ«ЩюЩЇЩяЩ«ЋшЋ«Ъ©ЩюЋ«ЪЇЪЄЮЈЋ«ЩюЩъЋюЏшЉ©‹©ЏюЯяЩюЋ«Щ©Ћ«Ш©Я¬Ћ«ЩшЩюЩЩ®Ъ©Ћ«ЩЈЋ«Щ©ЩюЩюЩЄЪўЩ®Ћ«ЩяЩ®Ћ«ЩЄЪщЪ©ЪшЋ«ЪЄЪ©Ъ«ЩюЩъЋшЋ«ЩЈЋ«Ъ©ЋюЩЇЋюЋшЋ«ЩяЪЁЩЩяЪщЋ«ЩЄЪЁЩЇЪЁЪ©Ћ«Щ®ЪўЩ®Ћ«ЩэЪ«ЩюЩ©Щ®Ъ«ЩъЩЈЋюЏшЉ©‹©ЏюЯ®ЪЄЪ©ЪшЋ«ЩщЩЈЋ«ЩъЩ«ЩъЩюЩўЋяЪ©ЩюЋ«ЩяЩ«ЩЈЩЄЩюЩщЩ®Щ®Ћ«ЩэЪ«ЩюЪЄЪ©ЩюЩ®Ћ«Ъ«Щ®ЪЈЩ®ЩяЩЈЩ®ЋшЋ«ЩЄЩ®Щ¬Ћ«Щ©ЋЁЋЁЩЄЩюЩяЩюЩ©Џэј›Я
#8
by Sla
+2 Да и в типовых, по крайней мере, 2 способа находил. Запусти поиск во всех текстах "УдалитьСтроку"
#11
by KAPACb
Старо, конечно, не сомневаюсь. Я впервые столкнулся. обработку пришли, пожалуйста, в мыло под ником. Я про такой способ думал в . Надо точно знать что все строки ниже удаленной сдвигаются вверх на 1. Это точно так и есть?
#12
by KAPACb
<><>німєм»нІн»»нн»єиєоєЅн»єін»єйє»єиєѕ№»нин»єоєїєпє»єкєон»єн№»єоєєєйєѕєи№йн»єн№й№№є»№о№є№ин»№»єѕ№іє»№№№инон»ј»н»№№№йн»єк№»єоєиєѕн»№№№ёєнєоєёєон»є№єоєн№»єо№єє»н»єпєі№їєієёє»н»єпєѕн»№єєкє»єјє»єйнон»»№є»єкн»№ј№№єон»єієпєоєёєїє»н»єй№ё№ј№ієѕн»єєєйєѕє№є»№№№инин»№јєѕєин»єёєоє№єо№»єі№№№иноЯ‹Я
#15
by Astat
Мои вопросы (уточняющие) - это попытка тебе помочь. А ты в ответ - оскорбляешь, плюс еще проблема твоя - не существующая (пока ты не дашь ответ на мой вопрос). Потому - ламер.
#16
by Jeronimo
Еще один вариант из разряда твердокаменных:-)пиши в массив номера строк, которые надо грохать. По таблице пробежался, а следом еще одним циклом грохаешь ненужные.
#17
by KAPACb
Дурень, я ж уже согласился что я ламер, это так же верно как и то что ты тормозЪ. Чё ж ты повторяешь, себя убедить хочешь?А ответ на твой вопрос в . Не тормози в следующий раз.
#19
by который не честный
после таких вопросов по простым алгоритмам и спорят - программисты-ли 1С или нет...
#21
by KAPACb
Ты тут в дожности шафки? Ничего по сути не сказал, только тупые комментарии. Друк, никто не спорит, 1С-ники НЕ программисты.Для тормозов типа объясняю, дело не в самом способе по "простым алгоритмам", способы я описывал еще в (3,4). А в том чтобы узнать станартное и максимально простое решение данной задачи.
#24
by который не честный
пока Тз.номерстроки>0 Цикл_Если надо удалить Тогда______Тз.УдалитьСтроку(Тз.НомерСтроки)___Иначе_____Тз.ПолучитьСтрокуКонецЕслиесли без ошибок
#25
by artbear
и изврат какой-то, честно говоря. будет работать, только если используем метод "ТекущаяСтрока".Все же просто и давно известноДля к = -ТЗ.КоличествоСтрок по -1 Цикл__КонецЕсли;ЗЫ А еще лучше прислушайтесь к КонецЦикла;
#26
by который не честный
artbear, странно, при получении строки Тз.ПолучитьСтрока она и так становится текущая. И работает всё нормально. А, я там забыл 1 строку, извинте...Цикл.........
#27
by artbear
текущей она становится, потому что ты используешь Таблицу, расположенную на форме!Если использовать просто переменную модуля или процедуры, такого не будет,и твой метод работать не будет!
#28
by который не честный
Повторяю - работает нормально.Берётся первая строка.Далее в цикле:Если надо удалить удаляем иначе взять следующую.Что тут не рабочего - не понятно...Или такая схема уже не работает(строка ен становится текущей?)??Тз.Чтото=1;????
#29
by artbear
А что, проверить не судьба?Таб.ТекущаяСтрока = 0ЗЫ Еще раз говорю, твой код будет работать, только если твоя таблица значений - это таблица на формеЗЗЫ ТекущаяСтрока как правило, имеет смысл только для таблиц на форме.Без обид, но учи матчасть :)
#30
by artbear
(29+) for Виноват, смотрел твой код из , дальше не видел .Такой подход также возможен, но мне, честно говоря, не нравится.ИМХО неудобный цикл :(
#31
by МимохожийОднако
Можно конечно ковыряться с удалением строк в ТЗ.Но практичнее открыть новую ТЗ с аналогичной структурой и копировать в нее нужные строки. Удаление строк логично применять только для таблицы значений на форме.А примеров кода уйма в типовых и нетиповых конфигурациях, не считая целого блока на профклубе.Данную ветку я рассматриваю только как разминку для мозгов и ... выплеска эмоций в преддверии праздников
#34
by Slawa
Да который не често победил. (ИМХО)Я думаю его метод более оптимальный, в плане производительности.век живи век учись
#35
by корум
___тз.получитьстрокупоНомеру(й);___если (твоё условие)=1 тогда___й=й-1;ИМХО, так проще будет...конецЦикла;
#37
by LDR
я поступал одним из трех способов.либо заводил доп. колонку НужноУдалять. по условию ее помечал или нет. потом доп. циклом пробегался.либо (если не смертельно) пробегал с конца таблицы.либо делал так:
#39
by Slawa
в классный способ, но мне кажется такой-же как и .Кстати кажется и один и второй страдают неопределенностью.Где гарантия что после УдалитьСтроку следующая станет текущей ?Тогда метод с ПолучитьСтрокуПоНомеру предпочтителен, т.к. будет работать всегда.ИМХО.
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- Добавить в сущест. ТЗ строку из другой ТЗ
- Знатоки ТЗ: Чел сказал, что может сохранить ТЗ в файл внутренннего формата 1С ?
- Создание ТЗ с вложенными ТЗ на основании плоской ТЗ методом группир. по колонкам
- ТЗ.Свернуть для ТЗ в ТЗ
- Роль: удаление и интерактивное удаление
- а если внутри выборки тз получать значение из строки тз, выборка собьется?
- v7: Как сделать подбор Номенклатуры из ТЗ в ТЗ?
В этой группе 1С
- 1C 7.7 Выгнать пользователей...
- Можно ли из 1С получить файл, находящийся в интернете по url`у?
- Торг2
- ЗаписьЖурналаРегистрации
- Журнал-ордер счета по субконто
- Акт ввода в эксплуатацию ОС (1С-бух)
- Графический обзор структуры БД в 1С.
- Как программно задать дату операции ?
- Вопрос по конфе Конвертация данных, редакция 2
- Как написать условие в Запросе, в списке значений с пометками
- Вопрос про выход из отпуска по уходу за ребенком
- Вопрос по ИТС!!!
- Можно ли расчитывать график "2 через 2" в "Камин"? (jb)
- Ошибка открытия таблицы 1SUSERS. Че делать?
- 1С+SQL .. об оптимальной настройке BackUp и Shrink...
- Выделение из одного ОС другого...
- v8 Как выделить часть текста жирным цветом
- Как записать реквизиты табличной части документа с помощью метаданных?
- Как из формы списка справочника узнать владельца...
- Открыть внешнюю обработку. Как?