Имя: Пароль:
1C
1С v8
Запрос для получения цен
,
0 elevika
 
21.06.14
18:48
Помогите, плизз, с запросом.
УТ 10. Есть массив с набором номенклатуры. Необходимо для этой номенклатуры получить последние цены покупки, независимо от контрагента. В простом запросе к СрезуПоследних:
ВЫБРАТЬ
ЦеныКонтрагентов.Номенклатура КАК Номенклатура,
ЦеныКонтрагентов.Цена
ИЗ
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(
&ТекДата,
            ТипЦен = &ТипЦен
                И Номенклатура В (&МасНоменклатура)) КАК ЦеныКонтрагентов

Результат выдается с учетом Контрагентов, т.е. на каждую номенклатуру может быть несколько цен (от разных поставщиков).
Как из
1 Wobland
 
21.06.14
18:48
сгруппи
2 elevika
 
21.06.14
18:49
Не дописала ))
Как избавиться выбрать цену с последним периодом?
3 Wobland
 
21.06.14
18:50
(2) а последний период - это что?
4 Wobland
 
21.06.14
18:51
и что с этим потом делать? и как избавиться от дублей после запроса к реальной таблице с максимумом по периоду?
5 elevika
 
21.06.14
18:53
(3) последний период - наибольшая дата
(4) вот и я спрашиваю: КАК? )) Как получить нужные цены?
6 Wobland
 
21.06.14
18:54
(5) максимальная дата..
20140505 - гвоздь - 80
20140505 - гвоздь - 120
какой гвоздь брать?
7 elevika
 
21.06.14
18:55
(6) такой проблемы не будет, т.к. поступления в один день могут быть только от одного поставщика и значит по одной цене
8 Wobland
 
21.06.14
18:55
так-то запросить максимальные периоды и номенклатуры из регистра, соединить потом с регистром по периоду и номенклатуре, взять цену
9 Wobland
 
21.06.14
18:56
(7) не убедила
10 User_Agronom
 
21.06.14
18:59
(6) 100 руб. Средне арифметическое))
11 elevika
 
21.06.14
18:59
(9) это не важно )) просто хорошо знаю нашу специфику
(8) а вот с этого места поподробнее (фигово у меня с запросами)... "соединить потом с регистром по периоду и номенклатуре" - это как?
12 Wobland
 
21.06.14
19:03
(11) обратно не убедила. произнеси это в монитор, может, тебе поверят

выбрать максимум(период), номенклатура поместить хламидомонада из РС сгруппировать по номенклатура; выбрать номенклатура, цена из хламидомонада соединение РС по номенклатуре и периоду
13 elevika
 
21.06.14
19:05
(12) спасибо, пошла пробовать
14 Wobland
 
21.06.14
19:05
(12) где период<&задуманного
15 elevika
 
21.06.14
19:07
(14) а в параметрах к РС нельзя задать период?
16 Wobland
 
21.06.14
19:10
(15) нет
17 rphosts
 
21.06.14
19:18
(16)ээээ, с чего это? Непериодический?
18 Wobland
 
21.06.14
19:19
(17) виртуальный таблиц тут не спасёт
19 rphosts
 
21.06.14
19:24
(2) пакетный запрос, план:
1. отбираем цены из среза.
2.Отбираем из 1. максимальную дату для каждой номенклатуры (группировка по номенклатуре, агрегируемые полы: Дата (функция максимум)).
3.отбираем из 1. только те строки для которых пара Номенклатура + Дата есть в 2.

Как избавиться от тех случаев кода по какой-либо номенклатуре есть в 1 день несколько записей от нескольких поставщиков - решайте сами (есть разные варианты для разных задач)
20 rphosts
 
21.06.14
19:25
поля = поля
21 Wobland
 
21.06.14
19:26
(19) а как ты период из среза получишь?
22 rphosts
 
21.06.14
19:32
(21)в смысле? РС периодический? Тебе религия запрещает из него период получить?
УТ под рукой нет, но думаю не принципиально... получу запросом, типа так:
http://s61.radikal.ru/i171/1406/47/3436128bd0a2.png
23 Wobland
 
21.06.14
19:36
ну может, крайняя рюмка была лишней ;)
24 rphosts
 
21.06.14
19:37
(23) тебя на столбак точно кто-то покусал
25 Wobland
 
21.06.14
19:49
(24) там был беркут
но я за объединение пунктов 1 и 2 - получится как у меня, только из среза ;)
26 rphosts
 
21.06.14
19:51
(25) если их объедитнять, то в 3. снова лезть в базу... а тут в 1ю всё что нужно прочитали в память и там дальше кручу-верчу-обмануть хочу...
27 elevika
 
21.06.14
20:34
Спасибо, все получилось! Заодно немного разобралась с пакетным запросом ))
28 elevika
 
21.06.14
20:56
Еще один вопрос. Если нужно условие отбора по реквизиту через точку РегСв.ТипЦен.ТипЦенНоменклатуры. Как лучше:
- через параметры РегСв.
- через условие ГДЕ
??
29 Wobland
 
21.06.14
20:57
я уже сегодня пел эту песню
v8: Запрос по остаткам в УТ 10.3
30 elevika
 
21.06.14
20:59
(29) ОК, почитаю
31 elevika
 
21.06.14
21:07
(29) Разницу между параметрами и ГДЕ поняла. Вопрос в другом: обращаюсь не к ревизиту РегСв., а к реквизиту реквизита (РегСв.ТипЦен.ТипЦенНоменклатуры). Запросу без разницы?
32 Wobland
 
21.06.14
21:12
без разницы. можно я не буду рассказывать о том, что это получается дополнительный джойн на уровне СУБД?
а что это за ерундень такая - ТипЦен.ТипЦенНоменклатуры?
33 elevika
 
21.06.14
21:17
(32) Вот про этот джоин я и спрашивала ))
ТипЦен - Спр. ТипыЦенКонтрагентов, у него есть рекв. ТипЦенНоменклатуры. Т.е. в спр. для каждого Контр. отдельная запись. А нам надо независимо от Контрагентов все с ТипомЦенНоменклатуры=ОсновнаяЦенаПокупки
34 elevika
 
21.06.14
21:19
(33) ТипЦенНомекнлатуры - это тоже спр.
35 Wobland
 
21.06.14
21:19
тип цен типа цен - это безусловно прекрасно
36 Wobland
 
21.06.14
21:22
джойн.. на семёрке ты прямых запросов не писала, быстро вправляют мозг ;) возьмём SQL. не умеет он через точку обращаться. значит, надо ещё таблицу подтягивать и уже из неё получать реквизит реквизита. а если тип составной?
37 elevika
 
21.06.14
21:26
(36) Да, я примерно представляю себе эту схему.. когда оочень давно писала скульные запросы, но простенькие, сложных не требовалось... тем не менее схему представляю, потому и спрашивала, в каком месте лучше - в параметрах или в условиях
38 Wobland
 
21.06.14
21:29
нет больше вопросов? тогда с тебя пирожок с луком и яйцом, традиционные когда-то 20 поцелуев в прошлом ;)
39 elevika
 
21.06.14
21:32
(38) я тебя поцелую... потом... если захочешь...©
Вопросов пока больше нет. Спасибо за помощь