Имя: Пароль:
1C
1С v8
Непонятная работа перебора результата запроса
,
0 LivingStar
 
18.09.14
21:27
выполняется запрос

ВЫБРАТЬ
    ЦеныСрезПоследних.Регистратор
ИЗ
    РегистрСведений.Цены.СрезПоследних(&ТекущаяДата, спрИсполнитель = &ИсполнительКонтрагент) КАК ЦеныСрезПоследних

в запросе выбирается 4 записи, так как их столько есть в регистре по одному документу

но в цикле перебор идет 800 с лишнем записей, почему, что не так сделано?

    Запрос.УстановитьПараметр("ИсполнительКонтрагент", Ссылка);
    Запрос.УстановитьПараметр("ТекущаяДата",          ТекущаяДата());
    Рез = Запрос.Выполнить();
    Если Не Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();
        Пока Выборка.Следующий() Цикл
            ФормаДок = Выборка.Регистратор.ПолучитьФорму();
1 Крошка Ру
 
18.09.14
21:28
(0) сдается мне, что-то ты скрываешь...
2 Vladal
 
18.09.14
21:28
> по одному документу

и

> СрезПоследних(&ТекущаяДата,

Может, там и 4 документа, но в них может быть некисло по несколько тысяч строк
3 LivingStar
 
18.09.14
21:29
спрИсполнитель = &ИсполнительКонтрагент - это условие на одну из табличных частей документа
4 LivingStar
 
18.09.14
21:30
(2) да не в регистр помещены 4 записи и они в одной из табличных частей документа, я так понимаю

Выборка.Следующий()

должна отработать максимум 4 раза, а она крутит более 800 раз
5 Vladal
 
18.09.14
21:31
(3) Открой личико, покажи весь запрос или расскажи всю задачу. Возможно, твою задачу можно решить и другим способом.
6 Крошка Ру
 
18.09.14
21:32
(5) +1
7 Крошка Ру
 
18.09.14
21:33
А ещё лучше покажи всё условие Если Не Рез.Пустой() Тогда
8 Крошка Ру
 
18.09.14
21:33
А то может ты где выборку сбрасываешь...
9 LivingStar
 
18.09.14
21:34
в выборке после Выборка.Следующий() по shift+f9 и f2 одна строка
10 LivingStar
 
18.09.14
21:34
(8) да не
11 Крошка Ру
 
18.09.14
21:35
(9) Да ладна!!! Кто бы мог подумать...
12 Крошка Ру
 
18.09.14
21:36
Вставь
Сообщить(Выборка.Количество());

и скажи что вывелось
13 LivingStar
 
18.09.14
21:37
чет не то короче, буду разбираться, не ожидал такого!
14 Крошка Ру
 
18.09.14
21:37
ну или в отладчике посмотри
15 Vladal
 
18.09.14
21:39
Может вместо

    Рез = Запрос.Выполнить();
    Если Не Рез.Пустой() Тогда
        Выборка = Рез.Выбрать();


писать

    Рез = Запрос.Выполнить();
    Если Рез.Пустой() Тогда
        Возврат; // или что ты предпочитаешь в это время суток
    КонецЕсли;
    Выборка = Рез.Выбрать();
16 Крошка Ру
 
18.09.14
21:39
"Запрос.Выполнить().Выгрузить()" что в отладчике показывает?
17 Vladal
 
18.09.14
21:39
(16) Всю интригу ... коту под хвост
18 Крошка Ру
 
18.09.14
21:44
(17) Ну, это так... Для развития сюжета. Судя по портфолио ТСа, там ещё поле непаханое интриг нас ждет...
19 Vladal
 
18.09.14
22:08
(18) Я тебе хотел сказать, что вместо "сообщить(выборка.количество())" надо бы в ТЗ выгрузить...

Ждём месье с отчетом о результатах.
20 H A D G E H O G s
 
19.09.14
00:17
мсьё знатный тукан, ждем срыв покровов.
21 LivingStar
 
19.09.14
09:28
(15) да не, там все нормально с этим, выборка же происходит если запрос не пустой, а как это разветвлять не имеет значения

(16) я думаю в таблицу значений выгрузит то что есть в запросе, то есть 4 выбранные записи

выборка производится из регистра сведений подчиненного регистратору, может в этом дело? выбирается 4 записи, а в переборе по Следующий() начинает крутить не понятно какой цикл
22 ДенисЧ
 
19.09.14
09:29
разрешаю показать весь код
23 Балоун
 
19.09.14
09:31
(22) правильно, сегодня уже можно
24 Любопытная
 
19.09.14
09:33
(21) Ты прям регистр открыл и 4 записи в нем увидел?
25 1Сергей
 
19.09.14
09:36
Причем тут регистратор?
26 Крошка Ру
 
19.09.14
09:40
(21) Я ж спросил, что Запрос.Выполнить().Выгрузить() в отладчике показывает, а не "как ты думаешь, что он там покажет"
27 LivingStar
 
19.09.14
09:43
(24) по контрагенту по которому я делаю отбор есть 4 записи, но по Shift + F9 + F2, одна запись того документа в котором в одной из тч их 4 по этому контрагенту, и переберает сейчас 4

(26) сейчас гляну
28 LivingStar
 
19.09.14
09:48
(26) выгружается в таблицу значений 4 записи
29 Крошка Ру
 
19.09.14
09:50
(28) Ок. Тогда код перебора целиком показывай. Сегодня пятница, сегодня можно, ветку не забанят.
30 Любопытная
 
19.09.14
09:51
А зачем ТС форму регистратора получает?
31 Крошка Ру
 
19.09.14
09:53
(30) Какая любопытная!
Этот вопрос мы на сладкое оставим.
32 Любопытная
 
19.09.14
09:56
Предположу, что запрос не тот. Или просто не весь)
33 LivingStar
 
19.09.14
10:05
(28) перебор в 0 есть
(30) что бы её открыть

это из справочника контрагенты по кнопке открывается документ в тч которого он есть, или создается новый с добавлением его в тч документа, в кратце
34 Крошка Ру
 
19.09.14
10:09
(33) ты код показывай, а то я счас до грамматики докапываться начну
35 Любопытная
 
19.09.14
10:12
Я в сказки не верю. Не может быть, чтобы в результате 4 строки, а цикл 800 раз ходил.
36 Балоун
 
19.09.14
10:17
(35) а я верю в автора. талантище!