Имя: Пароль:
1C
1C 7.7
v7: "вечный" цикл при выборке из запроса :)
0 palpetrovich
 
20.03.15
14:58
кодик:

    Пока Запрос.Группировка(1) = 1 Цикл
        Пока Запрос.Группировка(2, -1) = 1 Цикл
            Прервать;
        КонецЦикла;
    КонецЦикла;

мне из второй выборки нужно только одно, последнее по упорядочиванию, значение  - вроде все логично, получил - прервал, ан нет, низзя тут так оказывается

что можно сделать для реализации сабжа делать?
1 IVT_2009
 
20.03.15
14:59
может выгрузить в ТЗ и взять это последнее значение?
2 palpetrovich
 
20.03.15
15:02
(1)  это понятно, непонятно почему так с выборкой получается
зы: без "Прервать;" - все отрабатывает как надо
3 Медведик
 
20.03.15
15:04
(2) Заведи переменную-флаг, как нашел нужное значение - флаг сбросил и целевой код пусть по "Если Флаг = 1" пропускается.
Топорно, но работать будет.
4 palpetrovich
 
20.03.15
15:07
(3) ну, примерно так сделал
Пока Запрос.Группировка(1) = 1 Цикл
    ПечДок = "";
    Пока Запрос.Группировка(2, -1) = 1 Цикл
        Если ПечДок = "" Тогда
            ПечДок = Запрос.Док;
        КонецЕсли;
    КонецЦикла;
    Сообщить(""+Запрос.Товар+"  "+ПечДок+" Цена= "+ПечЦена);
КонецЦикла;
5 Lazy Stranger
 
20.03.15
15:13
а если внутреннюю выборку не обходить целиком?

Пока Запрос.Группировка(1) = 1 Цикл
    ПечДок = "";
    Если Запрос.Группировка(2, -1) = 1 тогда
            ПечДок = Запрос.Док;
    КонецЕсли;
    Сообщить(""+Запрос.Товар+"  "+ПечДок+" Цена= "+ПечЦена);
КонецЦикла;
6 Злопчинский
 
20.03.15
15:13
боже, какая мутная хрень.
воспользуйтесь классическим гоуту если другое не подходит
7 Lazy Stranger
 
20.03.15
15:14
но вообще-то, емнип, "прервать" в конструкции из (0) вроде работало
8 palpetrovich
 
20.03.15
15:18
(5) "Если" я пробовал  изначально, конструкция "цикл+прервать" - уже потом, по результату с вечным циклом..
9 palpetrovich
 
20.03.15
15:21
(7) так работает
Пока Запрос.Группировка(2) = 1 Цикл
так не работает
Пока Запрос.Группировка(2, -1) = 1 Цикл
10 WebberNSK
 
20.03.15
15:32
(0) запросом получай сразу что нужно
нафига так писать код
11 palpetrovich
 
20.03.15
15:40
(10) научи пожалуйста, в результате нужна плоская табличка со структурой строк:
Товар-Поставщик-ПоследнийПриходныйДокумент-ЦенаПрихода-ОстатокНаСкладах
12 palpetrovich
 
20.03.15
15:57
(10) время вышло - ты балабол :)
13 Torquader
 
20.03.15
16:34
А что получается в запросе ?
Может быть, там вообще всё кардинально нужно переделывать, чем перебирать весь результат, чтобы увидеть конец ?
14 Злопчинский
 
20.03.15
17:33
(8) Прервать прерывает внешний цикл ближайший, а не все внешние..
15 Злопчинский
 
20.03.15
17:35
(11) можно попробовать, но геморно будет - придется тянуть из регистра партий, а в партиях у пиплов обычно бардак
16 Злопчинский
 
20.03.15
17:36
Можно взять регистр остатки на складах, склеить с Справочник.Партии (если ВЕДЕТСЯ ПАРТИОННЫЙ УЧЕТ) - взять последний элемент спр.партии для тек.номенклатуры - из него вытащить прих.документ и цену
17 palpetrovich
 
20.03.15
17:53
(14) естествеено :)
(16) справочника партии нет, из регистра Партии, - прихДок, если он не в выбранном периоде,  взять неоткуда, поэтому я "склеил" запрос к регистру остатков с запросом по документам. В общем костыль из (4) работает и, пока, этого хватает
18 Ёпрст
 
20.03.15
18:06
(0)
забудь про метод -1 в группировке, он всегда так криво работал

делай упоряддочивание в самом запросе.
19 Ёпрст
 
20.03.15
18:40
(11) по какому полю нужна сортировка по-убыванию?
20 Ёпрст
 
20.03.15
18:41
всё в чорном запросе можно слепить, почти вссё.
21 palpetrovich
 
20.03.15
18:56
(19) |Группировка Док Упорядочить по Док.ДатаДок;
22 Ёпрст
 
20.03.15
19:29
(21)
это же элементарно, ватсон
23 Ёпрст
 
20.03.15
19:31
Функция Вася = Сумма (Число(КонДата-ДатаДок));
...
Группировка Док УпорядочитьПО Вася;
24 palpetrovich
 
21.03.15
10:47
(23) прикольно, спасибо :)
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший