|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Спрашиваю
08.11.13
✎
09:59
|
Задача один в один как тут - v8: Выбрать цену номенклатуры из последнего документа Поступление
то что там написали не работает. В результате запроса Получил выборку из документов прихода Номенклатура Цена По каждой номенклатуре есть столько строк с ценой, сколько в приходах. На всякий случай - текст запроса ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Ссылка.Ссылка, ПоступлениеТоваровУслугТовары.Ссылка.Дата КАК ДатаПрихода, ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка КАК Номенклатура, ПоступлениеТоваровУслугТовары.Цена ПОМЕСТИТЬ ПриходыВТ ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата <= &Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходыВТ.Номенклатура КАК Номенклатура, ПриходыВТ.Цена ИЗ ПриходыВТ КАК ПриходыВТ ГДЕ ПриходыВТ.Ссылка В (ВЫБРАТЬ ПЕРВЫЕ 1 ВложенныеПриходы.Ссылка ИЗ ПриходыВТ КАК ВложенныеПриходы ГДЕ ВложенныеПриходы.Номенклатура.Ссылка = ПриходыВТ.Номенклатура.Ссылка И ВложенныеПриходы.Ссылка = ПриходыВТ.Ссылка УПОРЯДОЧИТЬ ПО ВложенныеПриходы.ДатаПрихода УБЫВ) УПОРЯДОЧИТЬ ПО Номенклатура Вопрос: Как из выборки получить только первые записи по каждой номенклатуре? |
|||
1
alexiv79
08.11.13
✎
10:27
|
(0) ВЫБРАТЬ ПЕРВЫЕ 1
|
|||
2
Ofizer
08.11.13
✎
10:28
|
(0) там же в ссылке в конце ho0p предложил хороший вариант:
ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, ПоступлениеТоваровУслугТовары.Цена КАК Цена ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК Дата ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата < &Дата СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос ПО ПоступлениеТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.Номенклатура И ПоступлениеТоваровУслугТовары.Ссылка.Дата = ВложенныйЗапрос.Дата ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата < &Дата чем он не устраивает? |
|||
3
Ненавижу 1С
гуру
08.11.13
✎
10:28
|
(1) садись, два ))
|
|||
4
alexiv79
08.11.13
✎
10:29
|
+(1) Только непонятно какие тебе цены нужны - если из последних документов поступления то еще упорядовить нужно по дате документа по убыванию, если первые-то по возврастания. А вообще какая-то хреновая поставнока задачи и непонятно для чего так делать
|
|||
5
alexiv79
08.11.13
✎
10:29
|
(3) Почему?
|
|||
6
WildSery
08.11.13
✎
10:29
|
(0) Во-первых, чё это за фигня: ...Ссылка.Ссылка
Во-вторых, недостаточно связывать только по ссылке, надо ещё по номенклатуре. Чтобы было проще для понимания, легче написать так: ВЫБРАТЬ ПриходыВТ.Ссылка, ПриходыВТ.Номенклатура, ПриходыВТ.Цена ИЗ ПриходыВТ КАК ПриходыВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПриходыВТ.Ссылка КАК Ссылка, ПриходыВТ.Номенклатура КАК Номенклатура, МАКСИМУМ(ПриходыВТ.ДатаПрихода) КАК ДатаПрихода ИЗ ПриходыВТ КАК ПриходыВТ СГРУППИРОВАТЬ ПО ПриходыВТ.Ссылка, ПриходыВТ.Номенклатура) КАК Вл ПО ПриходыВТ.Ссылка = Вл.Ссылка И Вл.Номенклатура = ПриходыВТ.Номенклатура И Вл.ДатаПрихода = ПриходыВТ.ДатаПрихода |
|||
7
WildSery
08.11.13
✎
10:32
|
(5) Попробуй написать и осознай, почему.
|
|||
8
alexiv79
08.11.13
✎
10:36
|
(7) Да лень и некогда. Но мне кажется можно и проще сделать чем выше написали. Потом попробую
|
|||
9
Ненавижу 1С
гуру
08.11.13
✎
10:38
|
(5)
>>первые записи по КАЖДОЙ номенклатуре |
|||
10
alexiv79
08.11.13
✎
10:39
|
(9) ну навскиду там только номенклатура, дата и цена. упорядочиваем по дате дока по убыв и выбираем первые 1
|
|||
11
alexiv79
08.11.13
✎
10:40
|
(10) Не не так. только наменклатура и цена
|
|||
12
Ненавижу 1С
гуру
08.11.13
✎
10:43
|
(10) и получаем только 1 запись
|
|||
13
ИсчадиеADO
08.11.13
✎
10:48
|
корреллированный поздапрос
|
|||
14
el7cartel
08.11.13
✎
10:49
|
(12) не не верит?
|
|||
15
Спрашиваю
08.11.13
✎
10:59
|
(2)Эта штука не работает - дергает из базы записи по всем приходам, подозреваю, что используемая там конструкция МАКСИМУМ в том месте работать не будет
|
|||
16
el7cartel
08.11.13
✎
11:05
|
(15) ну вы подробней опишите что вам нужно! первые последние...конкретней вопрос озвучьте!
откройте консоль и проделайте, ничего сложного, глядите разберетесь))) |
|||
17
Ofizer
08.11.13
✎
11:06
|
(15) ну все правильно - сначала выбирает все приходы, но потом берет последний, что не так?
|
|||
18
Ofizer
08.11.13
✎
11:09
|
и еще вопрос: а почему зациклены на документах, движений в РС не создается вообще?
|
|||
19
Спрашиваю
08.11.13
✎
11:40
|
(18) База УТ 11 убитая в хлам, данные в регистрах не достоверны (в них до меня левыми обработками писали что попало), последовательности убиты, себестоимость не считается, все что есть - это документы и кое-что в регистре.
Ближайшая задача получить из того что есть финансовые показатели |
|||
20
Спрашиваю
08.11.13
✎
12:02
|
(6) Воспроизвел запрос
ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Ссылка.Ссылка, ПоступлениеТоваровУслугТовары.Ссылка.Дата, ПоступлениеТоваровУслугТовары.Номенклатура.Ссылка КАК Номенклатура, ПоступлениеТоваровУслугТовары.Цена КАК ЦенаЗакупа ПОМЕСТИТЬ ПриходыВТ ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата <= &Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПриходыВТ.Ссылка, ПриходыВТ.Номенклатура, ПриходыВТ.ЦенаЗакупа ПОМЕСТИТЬ ЦеныСДублями ИЗ ПриходыВТ КАК ПриходыВТ ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПриходыВТ.Ссылка КАК Ссылка, ПриходыВТ.Номенклатура КАК Номенклатура, МАКСИМУМ(ПриходыВТ.Дата) КАК Дата ИЗ ПриходыВТ КАК ПриходыВТ СГРУППИРОВАТЬ ПО ПриходыВТ.Ссылка, ПриходыВТ.Номенклатура, ПриходыВТ.Дата) КАК ВложенныйЗапрос ПО ПриходыВТ.Ссылка = ВложенныйЗапрос.Ссылка И ПриходыВТ.Номенклатура = ВложенныйЗапрос.Номенклатура И ПриходыВТ.Дата = ВложенныйЗапрос.Дата ругается, пишет - Поле не найдено "Номенклатура" Есть подозрение, что где-то неверно использовано .Ссылка |
|||
21
Kerk
08.11.13
✎
12:05
|
(19) Кстати, используй условие типа Где Документ.ПоступлениеТоваровУслуг.Проведен...
или хотя бы не помеченные на удаление. |
|||
22
Спрашиваю
08.11.13
✎
12:12
|
(21) Это я в курсе, в базе документы поступления вычищены, поэтому можно смело так поступать.
Попробуем переформулировать задачу есть выборка Номенклатура ЦенаПоступления в выборке одной номенклатуре, соответствует несколько строк, по разным поступлениям. Надо оставить только одну цену. Упорядочена по Номенклатуре и по дате поступления - строка с ценой более позднего поступления - выше. Нужно из выборки выкинуть дублирующие номенклатуру строки, ниже первой. |
|||
23
Kerk
08.11.13
✎
12:24
|
ВЫБРАТЬ
РеализацияТоваровПоследние.Номенклатура, МАКСИМУМ(РеализацияТоваровПоследние.Ссылка.Дата) КАК Дата ПОМЕСТИТЬ ВТ_ПоследниеПродажи ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровПоследние СГРУППИРОВАТЬ ПО РеализацияТоваровПоследние.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеПродажи.Номенклатура, ВТ_ПоследниеПродажи.Дата, РеализацияТоваровУслугТовары.Цена ИЗ ВТ_ПоследниеПродажи КАК ВТ_ПоследниеПродажи ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары ПО ВТ_ПоследниеПродажи.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура И ВТ_ПоследниеПродажи.Дата = РеализацияТоваровУслугТовары.Ссылка.Дата |
|||
24
Kerk
08.11.13
✎
12:24
|
На примере БП 3, документа реализация и только по товарам.
|
|||
25
Kerk
08.11.13
✎
12:27
|
Можно сделать и красивее, на основании одной выборки из документов, но подход тот же.
|
|||
26
Kerk
08.11.13
✎
12:34
|
ВЫБРАТЬ
РеализацияТоваровПоследние.Номенклатура, МАКСИМУМ(РеализацияТоваровПоследние.Ссылка.Дата) КАК Дата ПОМЕСТИТЬ ВТ_ПоследниеПродажи ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровПоследние СГРУППИРОВАТЬ ПО РеализацияТоваровПоследние.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РеализацияТоваровУслугТовары.Ссылка.Дата, РеализацияТоваровУслугТовары.Номенклатура, МАКСИМУМ(РеализацияТоваровУслугТовары.Цена) КАК Цена ПОМЕСТИТЬ ВТ_ЦенаПоВремени ИЗ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары СГРУППИРОВАТЬ ПО РеализацияТоваровУслугТовары.Ссылка.Дата, РеализацияТоваровУслугТовары.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ПоследниеПродажи.Номенклатура, ВТ_ПоследниеПродажи.Дата, ВТ_ЦенаПоВремени.Цена ИЗ ВТ_ПоследниеПродажи КАК ВТ_ПоследниеПродажи ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЦенаПоВремени КАК ВТ_ЦенаПоВремени ПО ВТ_ПоследниеПродажи.Номенклатура = ВТ_ЦенаПоВремени.Номенклатура И ВТ_ПоследниеПродажи.Дата = ВТ_ЦенаПоВремени.Цена |
|||
27
Kerk
08.11.13
✎
12:35
|
Если в одном документе или за одну секунду продавалась одна и также номенклатура, то берется максимальная цена.
|
|||
28
Kerk
08.11.13
✎
12:36
|
(26) И ВТ_ПоследниеПродажи.Дата = ВТ_ЦенаПоВремени.Цена
заменить на И ВТ_ПоследниеПродажи.Дата = ВТ_ЦенаПоВремени.Дата |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |