|   |   | 
| 
 | Бесконечный цикл по номенклатуре | ☑ | ||
|---|---|---|---|---|
| 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) два раза мухахахаха     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |