![]() |
|
8.2 Убрать пустые строки | ☑ | ||
---|---|---|---|---|
0
polkin
10.02.10
✎
09:01
|
Как убрать пустые строки из таблицы?
Для Каждого Строка Из ..... Если ЗначениеНеЗаполнено..... если две строки подряд, одну пропускает.... |
|||
1
Ksandr
10.02.10
✎
09:02
|
Таблица.Найти не работает в 8.2?
З.Ы. про 8.2 ни слова не знаю |
|||
2
Ksandr
10.02.10
✎
09:03
|
ой, точнее НайтиСтроки
|
|||
3
birkoFFFF
10.02.10
✎
09:04
|
а Свернуть(...) не предлагать ?
|
|||
4
Ненавижу 1С
гуру
10.02.10
✎
09:05
|
(0) это не 8.2 это классический алгоритм проверки при трудоустройстве, короче, собирай вещи
|
|||
5
simol
10.02.10
✎
09:12
|
Что ты понимаешь под пустой строкой таблицы?
|
|||
6
polkin
10.02.10
✎
09:18
|
(5) Нужно в таблице если в колонке Количестро = 0 убрать строку.
|
|||
7
polkin
10.02.10
✎
09:19
|
точнее удалить строку
|
|||
8
Rusty Nail
10.02.10
✎
09:22
|
(7) тогда см. (3)
|
|||
9
Ненавижу 1С
гуру
10.02.10
✎
09:25
|
в (3) написан откровенный бред
|
|||
10
Rusty Nail
10.02.10
✎
09:31
|
(9) согласен, затупил
|
|||
11
polkin
10.02.10
✎
10:26
|
ну и как правильно?
|
|||
12
birkoFFFF
10.02.10
✎
10:31
|
(9) ню-ню )))
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Объект", Объект.Cсылка); Запрос.Текст= "ВЫБРАТЬ | ЗаказПокупателя.Товары.( | Количество, | Номенклатура КАК Номенклатура | ) |ИЗ | Документ.ЗаказПокупателя КАК ЗаказПокупателя |ГДЕ | ЗаказПокупателя.Ссылка = &Объект | |УПОРЯДОЧИТЬ ПО | Номенклатура" ; Выборка= Запрос.Выполнить().Выгрузить(ТЧ); ТЧ.Свернуть("Номенклатура","Количество"); Объект[ИмяТабличнойЧасти].Очистить(); ТЧ.выгрузить(Объект[ИмяТабличнойЧасти]); Если это не работает или работает медленнее перебора, тот пускай первым бросит в меня камень... |
|||
13
Ненавижу 1С
гуру
10.02.10
✎
10:33
|
(12) результат будет не тем же, кроме того, нули как бы остаются
|
|||
14
birkoFFFF
10.02.10
✎
10:37
|
(13) как понять не тем-же ? будет без строчек где Количество=0 ...
|
|||
15
Ненавижу 1С
гуру
10.02.10
✎
10:38
|
Массив = ТЧ.НайтиСтроки(Новый Структура("Количество",0));
Для каждого Стр из Массив Цикл ТЧ.Удалить(Стр); КонецЦикла; |
|||
16
Ненавижу 1С
гуру
10.02.10
✎
10:39
|
(14) нет, останутся и с нулями тоже
|
|||
17
birkoFFFF
10.02.10
✎
10:40
|
(15) а если там 1000 строк ?
(16) ню-ню... Проверь, это код обработки по заполнению ТЧ, которой у меня снабженцы пользуются по 200 раз в день... |
|||
18
ИначеЕсли
10.02.10
✎
10:42
|
Можно цикл запустить, если количество = 0, то строку удалять.
Только цикл надо с конца таблицы запускать, а не с начала. |
|||
19
Дикообразко
10.02.10
✎
10:42
|
(17) в открытом документе? сидящим полностью в памяти?
|
|||
20
birkoFFFF
10.02.10
✎
10:43
|
(19) ты о чем ?
|
|||
21
Ненавижу 1С
гуру
10.02.10
✎
10:45
|
(17) Если там всего одна строка с нулевым количеством, то?
|
|||
22
Дикообразко
10.02.10
✎
10:46
|
(20)
а) сомневаюсь что запрос к БД будет быстрее перебора строк таблицы находящейся в ОЗУ на клиенте б) твой запрос не уберет номенклатуры с нулевым количеством (при условии если она больше в документе не встречается). |
|||
23
birkoFFFF
10.02.10
✎
10:46
|
(21) да хоть одна, хоть 10000, и хоть все с нулями, хоть через одну...
|
|||
24
birkoFFFF
10.02.10
✎
10:46
|
(22) проверь )))
|
|||
25
Дикообразко
10.02.10
✎
10:47
|
(23) попробуй
Ном1 0 Ном2 3 Ном2 0 после твоего запроса должно получиться Ном1 0 Ном2 3 |
|||
26
Ненавижу 1С
гуру
10.02.10
✎
10:49
|
(23) вот упертая, а я говорю, если там одна строка с 0, то она же и останется
кстати и в (25) тоже пример как бы говорит |
|||
27
ИначеЕсли
10.02.10
✎
10:50
|
Если цель просто убрать пустые строки, то свёртку вообще лучше не использовать.
Свёртка - это аналог СГРУППИРОВАТЬ, работает по-моему пропорционально N^2 |
|||
28
birkoFFFF
10.02.10
✎
10:51
|
(26) (25) Проверь сначала, потом спорь...
|
|||
29
Ненавижу 1С
гуру
10.02.10
✎
10:51
|
(28) уже проверил, дальше?
|
|||
30
birkoFFFF
10.02.10
✎
10:52
|
(29) ну и ?
|
|||
31
Ненавижу 1С
гуру
10.02.10
✎
10:52
|
(30) остаются с нулем
|
|||
32
ИначеЕсли
10.02.10
✎
10:55
|
ВсегоСтрок = ТЧ.Количество();
Для Стр = 1 по ВсегоСтрок Цикл Строка = ТЧ[ВсегоСтрок - Стр]; Если Строка.Количество = 0 Тогда ТЧ.Удалить(Строка); КонецЕсли; КонецЦикла; И не надо никаких запросов городить. |
|||
33
Дикообразко
10.02.10
✎
10:56
|
(32) были же более красивые алгоритмы .. кхм
|
|||
34
ИначеЕсли
10.02.10
✎
10:56
|
(33) в (15) хороший и наглядный
|
|||
35
Дикообразко
10.02.10
✎
10:59
|
(34) угу, в принципе в 8ке только его и юзаю
|
|||
36
Ненавижу 1С
гуру
10.02.10
✎
11:02
|
с запросом в корне неверно, даже если это ТЧ объекта, то:
- объект может быть не записан - объект может быть изменен |
|||
37
birkoFFFF
10.02.10
✎
11:16
|
(36)
Это никак не влияет на результат запроса. Данные берутся у объекта на тот момент на который сделан запрос и его "записанность" никак не влияет на результат... Иначе как-бы работали в принципе ВСЕ обработки по заполнению ТЧ... |
|||
38
Ненавижу 1С
гуру
10.02.10
✎
11:20
|
(37) ты признала, что работает твой алгоритм неправильно в общем случае?
теперь признай, что для не записанного объекта твой запрос выдаст пустой результат и все просто очистится |
|||
39
bvg
10.02.10
✎
11:51
|
в (15) все правильно, другое лучше не рассматривать
|
|||
40
polkin
10.02.10
✎
14:45
|
Спасибо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |