Вход | Регистрация

1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Загадочный код в отчете

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

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует