|
v7: Загадочный код в отчете | ☑ | ||
---|---|---|---|---|
0
zenon46
27.11.18
✎
17:16
|
Уважаемые форумчане.
Есть некий отчет по формированию прайс-листа, разбираюсь как работает, и никак не пойму для чего автор использовал сию конструкцию. На входе имеется ТЗ в которой лежат элементы справочника номенклатуры и группы этого же справочника, сортирована ТЗ по наименованию. Поз = ТабЗнач.КоличествоСтрок(); Удалить2 = 1; Удалить1 = 1; Пока Поз > 0 Цикл ТабЗнач.ПолучитьСтрокуПоНомеру(Поз); Если ТабЗнач.Товар.ЭтоГруппа()=0 Тогда Удалить2 = 0; Удалить1 = 0; Иначе Если (ТабЗнач.Товар.Уровень() = 2) Тогда Если Удалить2 = 1 Тогда ТабЗнач.УдалитьСтроку(); Иначе Удалить2 = 1; КонецЕсли ИначеЕсли (ТабЗнач.Товар.Уровень() = 1) Тогда Если Удалить1 = 1 Тогда ТабЗнач.УдалитьСтроку(); Иначе Удалить1 = 1; КонецЕсли; КонецЕсли КонецЕсли; Поз = Поз - 1; КонецЦикла; |
|||
1
Вафель
27.11.18
✎
17:18
|
удаляет уровень 2 и 1
|
|||
2
VladZ
27.11.18
✎
17:20
|
+1 причем не просто удаляет, а "витиевато".
|
|||
3
zenon46
27.11.18
✎
17:21
|
(1) да но справочник имеет 5 уровней, никак не могу понять логику этих действий.
|
|||
4
Масянька
27.11.18
✎
17:23
|
(3) 1 и 2 уровень что содержат? Причем (если не гоню) - обрабатывается только группа "Товар".
Вот в Товар следующее что? |
|||
5
КонецЦикла
27.11.18
✎
17:23
|
Наиболее наглядно удаление строк в ТиС прописано, в подготовке таблицы
Если работает и не раздражает можно оставить :) |
|||
6
Sserj
27.11.18
✎
17:38
|
(0) Судя по всему код удаляет группы 1 и 2 уровня в которых нет элементов, оставляя нижележащие группы.
|
|||
7
zenon46
27.11.18
✎
18:38
|
(6) видимо это была специфика "их" базы, т.к. у меня например 5 вложений в номенклатуре.
|
|||
8
zenon46
27.11.18
✎
18:56
|
(6) по каким строчкам, сделали вывод что "в которых нет элементов" ?
|
|||
9
Sserj
27.11.18
✎
18:57
|
(7) 5 вложений именно элементов или только групп?
Тут получается примерно так: Группа1Уровень1 Группа2Уровень2 Группа3Уровень3 ЭлементУровень4 .. Группа4Уровень1 Группа5Уровень2 Группа6Уровень3 ЭлементУровень2 ЭлементУровень2 Вот тут удалятся Группа1Уровень1,Группа2Уровень2 останется Группа3Уровень3 Но в то же время останутся Группа5Уровень2, так как в ней есть элемент ЭлементУровень2 и Группа4Уровень1 так как в ней есть ЭлементУровень2. |
|||
10
Sserj
27.11.18
✎
19:00
|
(8)
Если ТабЗнач.Товар.ЭтоГруппа()=0 Тогда Удалить2 = 0; Удалить1 = 0; ... Когда встречается товар флаги удаления сбрасываются и первая встретившаяся группа не будет удалена а только переставит флаг в 1. И так далее, следующий товар опять сбросит флаг. Но эта логика должна опираться на то что таблица изначально отсортирована по иерархии. |
|||
11
ikea
27.11.18
✎
19:53
|
(0) Удаляет в ТЗ только группы 2-го и 1-го уровня, кроме последних по сортировке. Т.е. в ТЗ останется одна группа 2-го уровня и одна группа 1-го уровня (последние отсортированные по наименованию), все элементы и все группы уровень которых 3 и более.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |