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


1С:Предприятие :: 1С:Предприятие 8 общая

Бесконечный цикл по номенклатуре

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


// пропустить товар, который вне групп 

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

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

// группы уже созданы пропустить группы 

Продолжить; 
КонецЕсли; 



// Проверить, что родитель ЭтоГруппа, если найденный родитель 

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

КонецЦикла;    

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

// Проверить если Выборка.Работа в справочнике номенклатура нашлась 

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



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


КонецЦикла; 


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

Вопрос: почему не срабатывает условие ТекТов.ЭтоГруппа = Ложь?
 
 
   Джинн
 
1 - 13.04.18 - 14:35
Что это?! Мой мозг взорвался.
   Mihasya
 
2 - 13.04.18 - 14:36
Можэ оно просто равно NULL
   piter3
 
3 - 13.04.18 - 14:36
Пятница
   Cool_Profi
 
4 - 13.04.18 - 14:38
я, конечно, извиняюсь, но это уже даже не алкоголь..
   Buster007
 
5 - 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 = " + Выборка.Работа); 
КонецЦикла;    

по определению бесконечный цикл
   sidalexsandr
 
8 - 13.04.18 - 14:41
(7) А как мне перейти к поиску следующего элемента справочника Номенклатура?
   sidalexsandr
 
9 - 13.04.18 - 14:42
(6) Извини забыл
   Масянька
 
10 - 13.04.18 - 14:45
(8) Зашибись...
А 12 лет чего делал?
 
 Рекламное место пустует
   sidalexsandr
 
11 - 13.04.18 - 14:45
(10) 7.7
   Масянька
 
12 - 13.04.18 - 14:45
(11) И?
   Любопытная
 
13 - 13.04.18 - 14:46
(9) пару строк поменять местами.
Правда для этого надо мозг включить...
   sidalexsandr
 
14 - 13.04.18 - 14:47
(12) Что не понятного, программировал на 1с 7.7, потом учился в Политехе и потом начал работать с 1c 8.
   Любопытная
 
15 - 13.04.18 - 14:47
(14) программировал на 7.7 это не оправдание ни разу.
   sidalexsandr
 
16 - 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) Видимо и правда, пятница))

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


Список тем форума
Рекламное место пустует  Рекламное место пустует
Закон Брукера: Даже маленькая практика стоит большой теории.
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует