Имя: Пароль:
1C
 
V8: запрос в консоли запросов выдаёт результаты, а из под системы - нет
0 andrewrocker
 
29.06.25
21:04
Всем привет!

Не могу осилить странную ситуацию - если сделать тот же самый запрос из консоли запросов, то он выдаёт норм - массив остатков партий, однако если этот код впечатать в конфигуратор, тогда запрос выдаёт "неопределено".

Не могу понять в чем ошибка может быть? Все параметры выкинул из запроса.



Процедура РассчитатьПартииНаСервере()

    Для Каждого Строка из Объект.Товары Цикл
        
        Запрос = Новый Запрос;
        Запрос.Текст = "ВЫБРАТЬ
                       |    ПартииТоваровОстатки.Организация КАК Организация,
                       |    ПартииТоваровОстатки.Склад КАК Склад,
                       |    ПартииТоваровОстатки.Номенклатура КАК Номенклатура,
                       |    ПартииТоваровОстатки.КодГТД КАК КодГТД,
                       |    ПартииТоваровОстатки.КодТНВЭД КАК КодТНВЭД,
                       |    ПартииТоваровОстатки.ДокументПартии КАК ДокументПартии,
                       |    ПартииТоваровОстатки.КоличествоОстаток КАК КоличествоОстаток,
                       |    ПартииТоваровОстатки.БалансоваяСтоимостьБезНДСОстаток КАК БалансоваяСтоимостьБезНДСОстаток
                       |ИЗ
                       |    РегистрНакопления.ПартииТоваров.Остатки КАК ПартииТоваровОстатки";
        //               |ГДЕ
        //               |    ПартииТоваровОстатки.Номенклатура = &Номенклатура
        //               |    И ПартииТоваровОстатки.Склад = &Склад
        //               |    И ПартииТоваровОстатки.Организация = &Организация"
        //;
        //Запрос.УстановитьПараметр("Организация",Объект.Организация.Ссылка);
        //Запрос.УстановитьПараметр("Номенклатура",Строка.Номенклатура.Ссылка);
        //Запрос.УстановитьПараметр("Склад",Объект.Склад.Ссылка);
        Выборка = Запрос.Выполнить();
        РезультатыВыборки = Выборка.Выбрать();
        РасчетныйОстаток = Строка.Количество;        
        Пока РезультатыВыборки.Следующий() Цикл
            Строка = РезультатыВыборки.ДокументПартии;
        КонецЦикла;
    КонецЦикла;    
                      
КонецПроцедуры
1 Garykom
 
гуру
29.06.25
21:15
Мдя...
2 PR
 
29.06.25
21:20
Ну, кто первый догадается, что в ТЧ Товары ноль строк и причем здесь вообще это?
12.5 лет стажа, какой позор
3 andrewrocker
 
29.06.25
21:21
(1) вы умные и сильные люди, мы тоже хотим стать умными и сильными людьми. Я честно гуглил "свой кейс", но не могу найти какие-то близкие хотя бы примеры
4 andrewrocker
 
29.06.25
21:23
(2) Оно не ноль, цикл выполняется два раза, строчки видны на сервере, т.к. объект сохранён заранее
5 andrewrocker
 
29.06.25
21:26
Если обратиться к РегиструНакоплений.ПартииТоваров как Остатки и обороты, а не как Остатки, то он выбрасывает не две строчки, а кучу всего. Хотя при обращении к этой таблице как к Остаткам, 1с выбрасывает ноль строк результата.

Мне при этом не нужно анализировать обороты, хочу поймать остатки на момент проведения документа.
6 PR
 
29.06.25
21:25
(4) А что ты ждал увидеть вместо Неопределено?
"Добрый вечер, уважаемый Иван Петрович"?
7 andrewrocker
 
29.06.25
21:27
(6) Я искренне ожидал увидеть три (две) строчки результата запроса
8 PR
 
29.06.25
21:30
(7) Ну так разверни строку и получи строку с колонками
Или результат запроса выгрузи в ТЗ и там смотри
Понаберут по объявлению, ТЗ от выборки из запроса не отличают
9 andrewrocker
 
29.06.25
21:36
(8) Благодарю тебя!

Суть решения в том, что метод был "выбрать()", его нужно было заменить на "выгрузить()".
10 PR
 
29.06.25
21:37
(9) Я про то и говорю, что выбрать возвращает выборку, а выгрузить — ТЗ
Независимо от того, куда вы едете — это в гору и против ветра!