Имя: Пароль:
1C
1С v8
Проблем с запросом.
0 almarbam
 
16.05.13
10:28
Привет. Нужна помощь или пример. Задача следующая:
- информацию о контрагентах, которым осуществлялись продажи;
- товары, которые продавались контрагентам;
- цену с НДС, по которой последний раз продали товар контрагенту.

Проблема собственно возникла на последнем этапе. Не могу сделать что бы выводилась цена по которой продавали КА последний раз товар. То есть если есть 2 продажи карандашей, то цена должна быть только та у которого договора больше дата.
1 salvator
 
16.05.13
10:31
(0) Показывай, что уже написал
2 almarbam
 
16.05.13
10:37
"ВЫБРАТЬ
   |    Продажа.КА,
   |    ПродажаТовары.Товар,
   |    ПродажаТовары.Сумма
   |ИЗ
   |    Документ.Продажа.Товары КАК ПродажаТовары
   |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа КАК Продажа
   |        ПО ПродажаТовары.Ссылка = Продажа.Ссылка";

Собственно не могу написать еще 1 запрос...
3 salvator
 
16.05.13
10:40
(2) 1. Этот запрос можно написать без соединения.
2. ИМХО, лучше брать информацию из регистров
4 Jonny_Khomich
 
16.05.13
10:43
(0) Я делал такое клиенту, (3) он тебе верно советует на счет регистров.
5 almarbam
 
16.05.13
10:45
Проблема в том что клиент не хочет что бы зменяли конфу... Поэтому регистры отпадают.
6 almarbam
 
16.05.13
10:46
Если можно написать без соединения, то хотел бы увидеть пример.
7 salvator
 
16.05.13
10:49
(5) Конфигурация какая?
8 almarbam
 
16.05.13
10:50
Самописная какая то, с любой типовой думаю таких проблем бы не возникло.
9 YHVVH
 
16.05.13
10:52
1.определить датувремя когда была последняя продажа товара клиенту
2. выбрать товар с ценой на эту датувремя по клиенту
10 Мимохожий Однако
 
16.05.13
10:53
(5)Делай внешним отчетом. Для того регистры и придумали, чтобы эффективнее получать информацию.
11 Jonny_Khomich
 
16.05.13
10:53
(5) т.е. документ продажи не делает проводки в регистрах?!
12 almarbam
 
16.05.13
10:54
Нет, проводки в регистрах нет.
13 Мимохожий Однако
 
16.05.13
10:56
(12)Переведи
14 palpetrovich
 
16.05.13
10:56
(5) - это пять! :)
15 salvator
 
16.05.13
11:11
(14) - а это четырнадцать :)
16 almarbam
 
16.05.13
11:32
Посидел с бубном, получилось такое чудо юдо.
ВЫБРАТЬ
   Продажа.КА КАК КА,
   ПродажаТовары.Товар,
   МАКСИМУМ(Продажа.Дата) КАК Дата
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа КАК Продажа
       ПО ПродажаТовары.Ссылка = Продажа.Ссылка

СГРУППИРОВАТЬ ПО
   Продажа.КА,
   ПродажаТовары.Товар
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Продажа.КА КАК КА,
   ПродажаТовары.Товар,
   ПродажаТовары.Сумма,
   Продажа.Ссылка,
   МАКСИМУМ(Продажа.Дата) КАК Дата,
   Продажа.НачислятьНДС,
   Продажа.НДСВСумме,
   ПродажаТовары.СуммаНДС,
   ВЫБОР
       КОГДА Продажа.НачислятьНДС = ИСТИНА
               И Продажа.НДСВСумме = ЛОЖЬ
           ТОГДА ПродажаТовары.Сумма + ПродажаТовары.СуммаНДС
       ИНАЧЕ ПродажаТовары.Сумма
   КОНЕЦ КАК Сумма
ПОМЕСТИТЬ йцу
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа КАК Продажа
       ПО ПродажаТовары.Ссылка = Продажа.Ссылка

СГРУППИРОВАТЬ ПО
   Продажа.Ссылка,
   ПродажаТовары.Сумма,
   Продажа.КА,
   ПродажаТовары.Товар,
   ПродажаТовары.СуммаНДС,
   Продажа.НачислятьНДС,
   Продажа.НДСВСумме

Как цену вывести теперь из второй таблицы?
17 AlexITGround
 
16.05.13
11:46
(16) ты определись, тебе с максимальной Ценой товара или же все-таки с Договором от последней продажи, или же с Договором от последней ДатыДоговора?
18 AlexITGround
 
16.05.13
11:47
+17, а вдруг вы дешевле ему продавать начнете?
19 almarbam
 
16.05.13
11:47
с Договором от последней продажи
20 salvator
 
16.05.13
11:48
Выбирай напрямую из табличной части, нафига соединять?
21 almarbam
 
16.05.13
11:52
Потому что мне нужен список товаров проданных Каждому КА и стоимость последней продажи. Не забывай что можно продать товар1 за 20рублей от 21.01.2000 и товар1 за 50рублей от 21.12.2012. Нужно что бы вывелось именно последняя цена на этот товар.
22 almarbam
 
16.05.13
11:52
Или покажи пример как ты это видишь без соединения.
23 salvator
 
16.05.13
11:54
ВЫБРАТЬ
   ПродажаТовары.Ссылка.КА КАК КА,
   ПродажаТовары.Товар,
   МАКСИМУМ(ПродажаТовары.Ссылка.Дата) КАК Дата
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары
СГРУППИРОВАТЬ ПО
   ПродажаТовары.Ссылка.КА,
   ПродажаТовары.Товар
24 almarbam
 
16.05.13
11:57
И где тут цена?
25 salvator
 
16.05.13
11:58
(24) Я тебе лишь указал на ошибку в тексте запроса, который ты привел.
26 almarbam
 
16.05.13
12:00
Спасибо, но соть собственно проблема не в этом.
27 almarbam
 
16.05.13
12:00
Суть проблемы*
28 sapphire
 
16.05.13
12:02
И чо? В чем проблема? Не умеет писать соединения по неравенству?
29 almarbam
 
16.05.13
12:05
Я не мостак в запросах. Поэтому и обратился.
30 AlexITGround
 
16.05.13
12:09
(24) Добавь одну строчку в запросе с  Ценой и все
31 almarbam
 
16.05.13
12:43
Если просто добавить Цену то тогда в результате получится один и тот же товар несколько раз с разными ценами.
32 almarbam
 
16.05.13
12:52
И все же как к
ВЫБРАТЬ
   Продажа.КА,
   ПродажаТовары.Товар,
   МАКСИМУМ(Продажа.Ссылка) КАК Ссылка
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа КАК Продажа
       ПО ПродажаТовары.Ссылка = Продажа.Ссылка

СГРУППИРОВАТЬ ПО
   Продажа.КА,
   ПродажаТовары.Товар

Прицепить цену исходя из Продажи?
33 salvator
 
16.05.13
12:52
ВЫБРАТЬ
 Док.Контрагент,
 МАКСИМУМ(Док.Дата)
ИЗ Документ.ТвойДокумент КАК Док
СГРУППИРОВАТЬ ПО Док.Контрагент

Помести это в ВТ
Далее запрос по документам с соединением с ВТ по контрагенту и дате, выдергивай цену. Все.
34 almarbam
 
16.05.13
13:15
Сможешь привести полный пример? Что то не получается
35 palpetrovich
 
16.05.13
13:43
(34) дык, все-же написали уже

ВЫБРАТЬ
   ПродажаТовары.Ссылка.КА КАК КА,
   ПродажаТовары.Товар,
   Сумма(ПродажаТовары.Цена) КАК Цена,
   МАКСИМУМ(ПродажаТовары.Ссылка.Дата) КАК Дата
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары
СГРУППИРОВАТЬ ПО
   ПродажаТовары.Ссылка.КА,
   ПродажаТовары.Товар
36 almarbam
 
16.05.13
13:45
(35) Проблема в том что не не нужна сумма цены, мне нужна последняя цена продажи
37 Лирик
 
16.05.13
13:45
(35) "Сумма(ПродажаТовары.Цена) КАК Цена" это сильно. (34) Не делай так
38 palpetrovich
 
16.05.13
13:52
(37) млин :)
39 hhhh
 
16.05.13
13:55
(36)  МАКСИМУМ(ПродажаТовары.Цена) КАК Цена,
40 Лирик
 
16.05.13
13:56
(39) Еще один :( А подумать?
Как я понял из вышесказанного нужно что то, что то вроде этого:

ВЫБРАТЬ
   ВложенныйЗапрос.Товар КАК Товар,
   ВложенныйЗапрос.Дата КАК Дата,
   ВложенныйЗапрос1.Цена КАК Цена
ИЗ
   (ВЫБРАТЬ
       ПродажаТовары.Товар КАК Товар,
       МАКСИМУМ(ПродажаТовары.Ссылка.Дата) КАК Дата
   ИЗ
       Документ.Продажа.Товары КАК ПродажаТовары
   
   СГРУППИРОВАТЬ ПО
       ПродажаТовары.Товар ) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           ПродажаТовары.Ссылка.Дата КАК Дата,
           ПродажаТовары.Товар КАК Товар,
           ПродажаТовары.Цена КАК Цена
       ИЗ
           Документ.Продажа.Товары КАК ПродажаТовары) КАК ВложенныйЗапрос1
       ПО ВложенныйЗапрос.Товар= ВложенныйЗапрос1.Товар
           И ВложенныйЗапрос.Дата = ВложенныйЗапрос1.Дата
41 palpetrovich
 
16.05.13
13:58
(39) а зачем ему МАКСИМУМ цены?
(37) так че не так в (35) ?
42 hhhh
 
16.05.13
13:58
(40) чего подумать? сам подумай. Автору именно нужна максимальная цена, хотя он и другое написал. А твой запрос выдаст бред, если допустим последнее по дате продали брак или дяде васе с большой скидкой.
43 Лирик
 
16.05.13
14:00
Автору нужна " Нужно что бы вывелось именно последняя цена на этот товар."

!
44 hhhh
 
16.05.13
14:01
(43) это он так думает. А на самом деле нет.
45 palpetrovich
 
16.05.13
14:02
(43) по-ходу не только, еще последняя цена на этот товар именно этому контрагенту
46 almarbam
 
16.05.13
14:09
(42) Если бы мне нужна была максимальная цена, то я бы не задал бы вопрос о том как вывести последнюю цену продажи.
47 Лирик
 
16.05.13
14:17
(42) А если менеджер нашел лоха и продал ему с большой наценкой? Мой запрос решает поставленную задачу и показыват(0) принцип объясненный в (33), второе вложение я сделал для наглядности. Естественно будут траблы, если в одном документе один и тот же товар с разной ценой или, например, два документа с одинаковой датой, но это все второстепенно, ибо объясняем принцип решения конкретной задачи.
48 ramil_msk
 
16.05.13
14:20
ВЫБРАТЬ
   ПродажаТовары.Ссылка.КА КАК КА,
   ПродажаТовары.Товар,
   МАКСИМУМ(ПродажаТовары.Ссылка.Дата) КАК Дата
ПОМЕСТИТЬ ВТ
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары

СГРУППИРОВАТЬ ПО
   ПродажаТовары.Товар,
   ПродажаТовары.Ссылка.КА
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВТ.КА,
   ВТ.Товар,
   МАКСИМУМ(ПродажаТовары.Цена) КАК Цена
ИЗ
   ВТ КАК ВТ
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа.Товары КАК ПродажаТовары
       ПО ВТ.Дата = ПродажаТовары.Ссылка.Дата
СГРУППИРОВАТЬ ПО
   ВТ.Товар,
   ВТ.КА
49 almarbam
 
16.05.13
14:22
(47) И тут начался бред ...
Может кто то мне просто привести пример как к
ВЫБРАТЬ
   Продажа.КА,
   ПродажаТовары.Товар,
   МАКСИМУМ(Продажа.Ссылка) КАК Ссылка
ИЗ
   Документ.Продажа.Товары КАК ПродажаТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.Продажа КАК Продажа
       ПО ПродажаТовары.Ссылка = Продажа.Ссылка

СГРУППИРОВАТЬ ПО
   Продажа.КА,
   ПродажаТовары.Товар

Прикрутить цену исходя из полученного договора?
Цена не максимальная и не средняя и не минимальная, она точно такая как в полученном договоре.
50 almarbam
 
16.05.13
14:26
Для наглядности что получилось в данный момент из запроса.
Это
КА1  Товар1 Договор1
КА1  Товар2 Договор2
КА1  Товар3 Договор3

КА2  Товар4 Договор4
КА2  Товар2 Договор5
КА2  Товар3 Договор6
51 palpetrovich
 
16.05.13
14:26
(49) а где у тебя "договор"? ...я к примеру - не вижу :)
а вот из документа "Продажа" - я те показал в (35)

и это, Сумма(ПродажаТовары.Цена) КАК Цена, - это вовсе не "сумма цены" :)
52 Лирик
 
16.05.13
14:27
(49) А вот это уже наглость. Если бред - варись сам.
53 Лирик
 
16.05.13
14:28
(51) Это именно сумма цен, будут три продажи - будет сумма трех цен
54 ramil_msk
 
16.05.13
14:32
(48) Добавь условие что документы проведены. И если в один день цены на товар одинаковые, то результат должен быть верным.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан