|
v7: Удалить строки из ТЗ. | ☑ | ||
---|---|---|---|---|
0
bizon2008
19.10.11
✎
13:06
|
День добрый, народ.
Алгоритм стырил с учебника мисты. Процедура ОставитьТолькоДиконтныйТовар() тбТовары.ВыбратьСтроки(); Пока тбТовары.ПолучитьСтроку()=1 Цикл Пока (тбТовары.Товар.НетСкидки = 0) и (тбТовары.НомерСтроки<>0) Цикл тбТовары.УдалитьСтроку(); //следующая строка стала текущей Сообщить("111 " + тбТовары.Товар); КонецЦикла; КонецЦикла; КонецПроцедуры Получаю ошибку. 111 Яндова красный 111 Ящик сбирающийся.Размер в собранном виде 365х255х365 81004 111 Мешок строительный 111 Пока (тбТовары.Товар.НетСкидки = 0) и (тбТовары.НомерСтроки<>0) Цикл {Обработка.ГрупповаяПечатьЭтикеток.Форма.Модуль(603)}: Значение не представляет агрегатный объект (НетСкидки) Грубо цикл работает и дальше. |
|||
1
zak555
19.10.11
✎
13:06
|
удалять с конца
|
|||
2
Нуф-Нуф
19.10.11
✎
13:11
|
удаля строки сбиваешь выборку. получай строки в цикле "для". и получай строки по номеру
|
|||
3
ЧеловекДуши
19.10.11
✎
13:11
|
Удаляй без "тбТовары.ВыбратьСтроки();", а номеру строки "НомерСтроки"
И перебором по циклу. |
|||
4
Попытка1С
19.10.11
✎
13:12
|
Для Сч = - тбТовары.КоличествоСтрок() По -1 Цикл
тбТовары.ПолучитьСтрокуПоНомеру(-Сч); ... КонецЦикла; |
|||
5
1Сергей
19.10.11
✎
13:13
|
Идн=1;
Пока Идн<=ТЗ.КоличествоСтрок() Цикл ТЗ.ПолучитьСтрокуПоНомеру(Идн); Если <условие> Тогда ТЗ.УдалитьСтроку(Идн); Иначе Идн=Идн+1; КонецЕсли; КонецЦикла |
|||
6
Ахиллес
19.10.11
✎
13:13
|
Это уже даже не смешно. Неплохо было бы ввести баны за подобные вопросы.
И, да, кстати можно ссылку на учебник, где ты там такую ахинею нашёл? |
|||
7
palpetrovich
19.10.11
✎
13:15
|
(6) чего только в учебниках нет... :)
|
|||
8
bizon2008
19.10.11
✎
13:15
|
||||
9
Рэйв
19.10.11
✎
13:16
|
(6)Код работает.У него просто поля НетСкидки нет:-)
|
|||
10
bizon2008
19.10.11
✎
13:17
|
(9)Конечно, как до конца ТЗ дошли так поле и кончилось.
|
|||
11
bizon2008
19.10.11
✎
13:17
|
(5)Спасибо. Утащил этот вариант.
|
|||
12
povar
19.10.11
✎
13:18
|
(10) ...
|
|||
13
Рэйв
19.10.11
✎
13:19
|
(10)При НомереСтроки= 0 оно туда не попадет
|
|||
14
Aprobator
19.10.11
✎
13:19
|
(9) +100500.
(10) ага - как последнюю строку удалил, так и ппц. |
|||
15
ЧеловекДуши
19.10.11
✎
13:19
|
Автор читать не умеет
//ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ !!! ТабЗнач.ВыбратьСтроки(); Пока ТабЗнач.ПолучитьСтроку()=1 Цикл ...Если <условие> Тогда ......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей, ...КонецЕсли; КонецЦикла; //ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ !!! //ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ !!! |
|||
16
Ахиллес
19.10.11
✎
13:19
|
(7) Ну вообще то имелся в виду http://mista.ru/tutor_1c/index.htm вот этот учебник, как я понимаю.
(8) //ЭТА ПРОГРАММА НЕПРАВИЛЬНАЯ !!! ТабЗнач.ВыбратьСтроки(); Пока ТабЗнач.ПолучитьСтроку()=1 Цикл ...Если <условие> Тогда ......ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей, ...КонецЕсли; КонецЦикла; Пипец... для тебя специально Митичкин капсом выделил и в красный цвет покрасил, что так делать нельзя, но тебе пофигу. |
|||
17
Lexxxxx
19.10.11
✎
13:21
|
Он вроде как использовал:
А вот еще один правильный алгоритм, предложенный Wlad: ТабЗнач.выбратьстроки(); Пока ТабЗнач.ПолучитьСтроку()=1 Цикл .......Пока (<условие>) и (ТабЗнач.НомерСтроки<>0) Цикл ..............ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей .......КонецЦикла; КонецЦикла; а не первый вариант. |
|||
18
ЧеловекДуши
19.10.11
✎
13:23
|
(17)А они все неправильные, это как баловаться с гранатой.
Лучше всего сделать, как в (5) |
|||
19
bizon2008
19.10.11
✎
13:23
|
А вот еще один правильный алгоритм, предложенный Wlad:
ТабЗнач.выбратьстроки(); Пока ТабЗнач.ПолучитьСтроку()=1 Цикл .......Пока (<условие>) и (ТабЗнач.НомерСтроки<>0) Цикл ..............ТабЗнач.УдалитьСтроку(); //следующая строка стала текущей .......КонецЦикла; КонецЦикла; |
|||
20
ЧеловекДуши
19.10.11
✎
13:23
|
+(17)Можно даже без "ТЗ.ПолучитьСтрокуПоНомеру(Идн);". Так даже быстрей пойдет
|
|||
21
bizon2008
19.10.11
✎
13:23
|
(15)(16) см (16)
|
|||
22
zak555
19.10.11
✎
13:23
|
(19) удаляй с конфа - не парь мозг
|
|||
23
zak555
19.10.11
✎
13:24
|
*с конца
|
|||
24
bizon2008
19.10.11
✎
13:24
|
(15)(16) см (19)
|
|||
25
Aprobator
19.10.11
✎
13:24
|
(17) это неправильный алгоритм. После удаления последней строки в таблице, что будет с проверкой условия? Если, конечно, в условии ТабЗнач.НомерСтроки <> 0 не поставить первым подусловием.
|
|||
26
bizon2008
19.10.11
✎
13:24
|
Да ладно. Не грузитесь. Сделал как в (5).
|
|||
27
ЧеловекДуши
19.10.11
✎
13:24
|
(21)Молодец... мы читать умеем :)
|
|||
28
Aprobator
19.10.11
✎
13:26
|
+(25) т.е. сделать вот так:
Тогда все взлетит. |
|||
29
Lexxxxx
19.10.11
✎
13:26
|
(18) Но ведь там написано правильный! :)
Я обычно просто с конца удаляю. |
|||
30
Эльниньо
19.10.11
✎
13:37
|
Процедура ОставитьТолькоДиконтныйТовар()
тбТовары.ВыбратьСтроки(); Пока тбТовары.ПолучитьСтроку()=1 Цикл Пока (тбТовары.НомерСтроки<>0) и (тбТовары.Товар.НетСкидки = 0) Цикл тбТовары.УдалитьСтроку(); //следующая строка стала текущей КонецЦикла; КонецЦикла; КонецПроцедуры |
|||
31
Cthulhu
19.10.11
✎
13:40
|
тбТовары.УдалитьСтроку(); //следующая строка стала текущей - ОПА. Или никакая - если удалена последняя.
Если тбТовары.НомерСтроки=0 Тогда Прервать КонецЕсли; // добавь это и алё. Сообщить("111 " + тбТовары.Товар); |
|||
32
bizon2008
19.10.11
✎
13:45
|
(30)Кто близок к автору. Скажите в учебнике ошибку нашли.
|
|||
33
Эльниньо
19.10.11
✎
13:52
|
(32) Нехрен мой алгоритм печатать в учебниках без моего согласия.
|
|||
34
Cthulhu
19.10.11
✎
13:53
|
(33): обломись-ка.
алгоритмы не могут являться объектом авторского права. |
|||
35
Эльниньо
19.10.11
✎
13:55
|
(33) Да шучу я. Просто приятно, когда твои креативы в учебниках появляются.
|
|||
36
Irbis
19.10.11
✎
13:57
|
Опять? Это же Сузуки в 7.7
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |