Имя: Пароль:
1C
1C 7.7
v7: Цикл с разбитием на группы
0 Aragan
 
29.08.12
13:56
Что то не выспался наверное сегодня. Пишу такой обход таблицы

Смысл собрать все элементы с одинаковой группой и засунуть в функцию печати.. и какая то хрень получается

номгруппы = 1;
первый=1;    
остальное=0;
СпНаправлений.УдалитьВсе();

Пока ТзНаправлений.ПолучитьСтроку()=1 Цикл
   Если ТзНаправлений.Группы>1 Тогда  
       Если ТзНаправлений.Группы <> номгруппы Тогда
       Если первый = 1 Тогда
               СпНаправлений.УдалитьВсе();
                       СпНаправлений.ДобавитьЗначение(ТзНаправлений.Направление);
           номгруппы = ТзНаправлений.Группы;
           первый=0;
           Иначе
           номгруппы = ТзНаправлений.Группы;
           Печать(1);
           СпНаправлений.УдалитьВсе();
                       СпНаправлений.ДобавитьЗначение(ТзНаправлений.Направление);
           КонецЕсли;
       Иначе
       СпНаправлений.ДобавитьЗначение(ТзНаправлений.Направление);
       КонецЕсли;  
           
    КонецЕсли;
   КонецЦикла;
1 Ёпрст
 
29.08.12
13:59
сортировать ТЗ по группам не предлагать ?
2 Aragan
 
29.08.12
14:02
отсортировано уже все, просто затупил в какой момент  в печать бросить список и обнулить для следущей группы
3 Aragan
 
29.08.12
14:05
куда вот эти строчки пристроить ?

Печать(1);
СпНаправлений.УдалитьВсе();

они однозначно неправильно сейчас находятся и больше 2-х элементов я в список не записываю
4 Ёпрст
 
29.08.12
14:06
опосля цикла нужно проверить на РазмерСписка, если он >0 то еще раз печать..
5 Aragan
 
29.08.12
14:07
то бишь задача каждую группу с одинаковым номером в уже очищенный список засунуть
6 Aragan
 
29.08.12
14:08
(4) Там еще одно условие в цикле, если группа = 1
7 Ёпрст
 
29.08.12
14:09
Проц Печать()
  Ежели СпНаправлений.РазмерСписка()=0 Тогда
     Возврат;
  Конец Ежели;
КонецПроцы
.............

номгруппы = "";
СпНаправлений = СоздатьОбъект("СписокЗначений");

Пока ТзНаправлений.ПолучитьСтроку()=1 Цикл
   Если ТзНаправлений.Группы>1 Тогда  
       Если ТзНаправлений.Группы <> номгруппы Тогда
           Печать(1);
           СпНаправлений.УдалитьВсе();
       КонецЕсли;
       СпНаправлений.ДобавитьЗначение(ТзНаправлений.Направление);
   КонецЕсли;
КонецЦикла;
Печать(1);
8 Ёпрст
 
29.08.12
14:10
так, точнее

Проц Печать()
  Ежели СпНаправлений.РазмерСписка()=0 Тогда
     Возврат;
  Конец Ежели;
КонецПроцы

.............

номгруппы = "";
СпНаправлений = СоздатьОбъект("СписокЗначений");

Пока ТзНаправлений.ПолучитьСтроку()=1 Цикл
   Если ТзНаправлений.Группы>1 Тогда  
       Если ТзНаправлений.Группы <> номгруппы Тогда
           Печать(1);
           номгруппы  = ТзНаправлений.Группы;
           СпНаправлений.УдалитьВсе();
       КонецЕсли;
       СпНаправлений.ДобавитьЗначение(ТзНаправлений.Направление);
   КонецЕсли;
КонецЦикла;
Печать(1);
9 Aragan
 
29.08.12
14:34
(8) Спасибо, уже разобрался