Имя: Пароль:
1C
1С v8
Бесконечный цикл по номенклатуре
,
0 sidalexsandr
 
13.04.18
14:33
Выборка = Справочники.БП_ПрейскурантНаРаботы.Выбрать();
Пока Выборка.Следующий() Цикл


// пропустить товар, который вне групп
Если Выборка.Наименование = "Компенсация командировочных затрат инженера выездного ремонта" Тогда
Продолжить;
КонецЕсли;

Если Выборка.Ссылка.ЭтоГруппа = Истина Тогда

// группы уже созданы пропустить группы
Продолжить;
КонецЕсли;



// Проверить, что родитель ЭтоГруппа, если найденный родитель
// это не группа, тогда запустить заново поиск родителя
Пока Истина Цикл
ТекРод = Справочники.Номенклатура.НайтиПоНаименованию(Выборка.Родитель, Истина);
Если ТекРод.ЭтоГруппа = Истина Тогда
Прервать;    
КонецЕсли;    

КонецЦикла;    

Сообщить("Выборка.Наименование = " + Выборка.Наименование);
Сообщить("ТекРод = " + ТекРод);

// Проверить если Выборка.Работа в справочнике номенклатура нашлась
// как группа, то искать дальше
Пока Истина Цикл
ТекТов = Справочники.Номенклатура.НайтиПоНаименованию(Выборка.Работа, Истина);
Если ТекТов.ЭтоГруппа = Ложь Тогда    
Прервать;    
КонецЕсли;    
Сообщить("Бесконечный цикл №2 = " + Выборка.Работа);
КонецЦикла;    



ТекТоварчик = ТекТов.ПолучитьОбъект();
ТекТоварчик.Родитель = ТекРод;
ТекТоварчик.Записать();


КонецЦикла;


Не понятно почему Бесконечный цикл №2. Цикл зацикливается на товаре который есть и как группа и как товар. Следовательно должно сработать прерывание цикла по условию ТекТов.ЭтоГруппа = Ложь.

Вопрос: почему не срабатывает условие ТекТов.ЭтоГруппа = Ложь?
1 Джинн
 
13.04.18
14:35
Что это?! Мой мозг взорвался.
2 Mihasya
 
13.04.18
14:36
Можэ оно просто равно NULL
3 piter3
 
13.04.18
14:36
Пятница
4 Cool_Profi
 
13.04.18
14:38
я, конечно, извиняюсь, но это уже даже не алкоголь..
5 Buster007
 
13.04.18
14:38
(0) ты там кем?)
6 Малыш Джон
 
13.04.18
14:38
(0) Думаю, для того чтобы написать сообщение, не обязательно каждый раз создавать новую ветку

https://www.forum.mista.ru/topic.php?id=817064&all=1
7 Малыш Джон
 
13.04.18
14:40
(0) вот это:

Пока Истина Цикл
ТекТов = Справочники.Номенклатура.НайтиПоНаименованию(Выборка.Работа, Истина);
Если ТекТов.ЭтоГруппа = Ложь Тогда    
Прервать;    
КонецЕсли;    
Сообщить("Бесконечный цикл №2 = " + Выборка.Работа);
КонецЦикла;    

по определению бесконечный цикл
8 sidalexsandr
 
13.04.18
14:41
(7) А как мне перейти к поиску следующего элемента справочника Номенклатура?
9 sidalexsandr
 
13.04.18
14:42
(6) Извини забыл
10 Масянька
 
13.04.18
14:45
(8) Зашибись...
А 12 лет чего делал?
11 sidalexsandr
 
13.04.18
14:45
(10) 7.7
12 Масянька
 
13.04.18
14:45
(11) И?
13 Любопытная
 
13.04.18
14:46
(9) пару строк поменять местами.
Правда для этого надо мозг включить...
14 sidalexsandr
 
13.04.18
14:47
(12) Что не понятного, программировал на 1с 7.7, потом учился в Политехе и потом начал работать с 1c 8.
15 Любопытная
 
13.04.18
14:47
(14) программировал на 7.7 это не оправдание ни разу.
16 sidalexsandr
 
13.04.18
14:48
Переформулирую вопрос: как запустить поиск элемента справочника повторный. Надо чтобы если поиск нашел группу, то продолжать искать дальше пока не найдется элемент.
17 Малыш Джон
 
13.04.18
14:49
(16) эммм... искать дальше - это куда? весь справочник перебрать?
18 Любопытная
 
13.04.18
14:51
Сделать запрос
19 Малыш Джон
 
13.04.18
14:52
если уж ты семерочник и не сталкивался с запросами(а сделать конечно же надо здесь и сейчас, и это разовая обработка)
ну найди ты все элементы у которых ЭтоГруппа = Ложь  - и делай с ними что хочешь:

Справочники.Номенклатура.НайтиПоРеквизиту("ЭтоГруппа", Ложь);
20 Малыш Джон
 
13.04.18
14:56
+(19) Видимо и правда, пятница))

Справочники.Номенклатура.Выбрать(,,Новый СТруктура("ЭтоГруппа",Ложь));
21 sidalexsandr
 
13.04.18
15:02
(20) Пятница. Понял надо цикл по справочнику номенклатура.
22 Малыш Джон
 
13.04.18
15:03
(21) но вообще, в восьмерке используют запросы, потому что цикл по полной выборке - это может быть очень долго.
23 Вафель
 
13.04.18
15:10
может все-таки запросом?
24 sidalexsandr
 
13.04.18
16:48
(23) Да ты прав, запрос быстрее. Но говорят, что запрос в цикле это плохо.Задача отпала, так как решили в название групп добавить
слово услуги.
25 Mankubus
 
13.04.18
16:51
(24) у тебя итак запрос в цикле, не поверишь
26 0xFFFFFF
 
13.04.18
17:49
(24) хахаха.
27 xXeNoNx
 
13.04.18
18:43
(24) (26) два раза мухахахаха