Имя: Пароль:
1C
1С v8
что я делаю не так? (запрос)
Ø (Asmody 02.12.2014 08:01)
0 nevopros
 
02.12.14
07:11
запрос1=новый запрос;
    для каждого стр из объект.Товары цикл
    запрос1.Текст="ВЫБРАТЬ ПЕРВЫЕ 1
                  |    РеализацияТоваровУслуг.Товары.(
                  |        Номенклатура,
                  |        Цена
                  |    )
                  |ИЗ
                  |    Документ.РеализацияТоваровУслуг КАК РеализацияТоваровУслуг
                  |ГДЕ
                  |    РеализацияТоваровУслуг.Проведен = ИСТИНА
                  |    И РеализацияТоваровУслуг.Товары.Номенклатура = &ном
                  |    И РеализацияТоваровУслуг.Партнер = &партнер
                  |
                  |УПОРЯДОЧИТЬ ПО
                  |    РеализацияТоваровУслуг.Дата УБЫВ";
                  запрос1.УстановитьПараметр("ном",стр.номенклатура);
                  запрос1.УстановитьПараметр("партнер",объект.Партнер);
                  итогз=запрос1.Выполнить().Выгрузить();
                  если итогз.Количество()>0 тогда
        стр.ценапр=итогз[0].цена;          
        конецесли;
    конеццикла;    

В итоге ошибка - поле не обнаружено (цена)
1 Cube
 
02.12.14
07:11
(0) Расстрелять!
2 Chameleon1980
 
02.12.14
07:13
(0) на тебя ругаются ужо.
в том числе за запрос в цихле
3 nevopros
 
02.12.14
07:14
(2)
а как без цикла тут?
4 Chameleon1980
 
02.12.14
07:15
а прочитать дык вообще красота
5 Cube
 
02.12.14
07:15
(3) Без цикла никак. Без запроса в цикле - запросто...
6 break
 
02.12.14
07:16
(2) в запросе можно напрямую и к табличной части обращаться
7 Мимохожий Однако
 
02.12.14
07:17
(0)В чём цель сия творения?
8 nevopros
 
02.12.14
07:20
(7)
в заказе последнюю цену реализации по клиенту получить
9 Cube
 
02.12.14
07:24
(8) Про регистры что-нибудь слыхал? Для чего они предназначены?
10 nevopros
 
02.12.14
07:25
В общем сам доделал. Работает за доли секунды.
&НаСервере
Процедура ВспомнитьЦенуНаСервере()
    запрос1=новый запрос;
    для каждого стр из объект.Товары цикл
    запрос1.Текст="ВЫБРАТЬ ПЕРВЫЕ 1
                  |    РеализацияТоваровУслугТовары.Ссылка,
                  |    РеализацияТоваровУслугТовары.Цена КАК Ц1,
                  |    РеализацияТоваровУслугТовары.Номенклатура
                  |ИЗ
                  |    Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
                  |ГДЕ
                  |    РеализацияТоваровУслугТовары.Ссылка.ПометкаУдаления = ЛОЖЬ
                  |    И РеализацияТоваровУслугТовары.Номенклатура = &Ном
                  |    И РеализацияТоваровУслугТовары.Ссылка.Партнер = &Партнер";
                  запрос1.УстановитьПараметр("Ном",стр.номенклатура);
                  запрос1.УстановитьПараметр("Партнер",объект.Партнер);
                  итогз=запрос1.Выполнить().Выгрузить();
                  если итогз.Количество()>0 тогда
        стр.ценапр=итогз[0].Ц1;          
        конецесли;
    конеццикла;              
КонецПроцедуры
11 Любопытная
 
02.12.14
07:26
Фу, какая гадость
Убрать к чертовой матери цикл, товары подавать в запрос пачкой.
12 wertyu
 
02.12.14
07:27
(11) охлаждёнными и под соусом
13 Cube
 
02.12.14
07:28
(10) "Работает за доли секунды"
На документе в 1000 строк проверял? А ты проверь, прежде чем делать такие голословные выводы.
Переделывай на один большой красивый запрос или расстрел!
14 nevopros
 
02.12.14
07:29
(13)
какой нах расстрел, я на фикси, тут щас фанфары будут )
15 Зэни Эль Мутабос
 
02.12.14
07:30
(0)> В итоге ошибка - поле не обнаружено (цена)

Попробуй
стр.ценапр=итогз[0].ТоварыЦена;
16 Cube
 
02.12.14
07:32
(14) Можешь тешить себя мыслями о том, что ты крут, но ты ни о чем, пока что...
Хочешь быть крутым - учись, не хочешь учиться - к нам твои "довольные" клиенты прибегут за переделкой твоих наколенных поделок. А ты пойдешь двор подметать...
17 Зэни Эль Мутабос
 
02.12.14
07:33
(14) > тут щас фанфары будут

Даже представить боюсь куда тебе их щасунут.
18 13_Mult
 
02.12.14
07:36
тут щас фанфары будут. facepalm
19 wertyu
 
02.12.14
07:42
(8) так ты цену первой реализации получишь
20 wertyu
 
02.12.14
07:44
+(19) причем первую не по дате документа, по порядку внесения в базу
21 wertyu
 
02.12.14
07:45
+(20) а по*
22 Любопытная
 
02.12.14
07:48
(14) А тебя не Рома случаем зовут?
23 nevopros
 
02.12.14
07:48
(19)
да, тут не весь код, там еще сортировка вставлена по убыванию
(16)
а можете нарисовать, как красиво, с вашей точки зрения?
24 nevopros
 
02.12.14
07:52
500 позиций 30сек, для конторы терпимо.
25 Cube
 
02.12.14
07:53
(23) "а можете нарисовать, как красиво, с вашей точки зрения?"
Я бы сделал так:
1). Объект.Товары в ВТ запроса.
2). К этой ВТ добавляем колонку с датой последней продажи (из регистра)
3). Находим последний регистратор по дате из п.2.
4). Получаем цену (стоимость/Количество) из регистра по регистратору из п.3.
5). Загружаем результат запроса прямо в Объект.Товары.

Даже без циклов...
26 Cube
 
02.12.14
07:54
(24) 30 сек - это писец)))) Вариант (25) отработает на порядок быстрее.
27 Cube
 
02.12.14
07:56
(25) И это всё в одном запросе.
28 wertyu
 
02.12.14
07:56
(25) неправильно, в продажах партнёра нет, надо внутреннее соединение делать
29 Cube
 
02.12.14
07:57
(28) Смотря где... В УПП есть.
30 nevopros
 
02.12.14
08:00
у меня ут 11
31 Asmody
 
02.12.14
08:01
Тема не отражает суть сообщения