Имя: Пароль:
1C
 
Выбрать цену номенклатуры из последнего документа Поступление
0 Пип Пибип
 
23.05.11
17:54
Вечер добрый, господа.

Есть база УТ 10.3.10.4
Мне нужно получить последние цены Номенклатур из табличной части Товары документов Поступление товаров и услуг. Т.е, одна номенклатура - одна цена (из последнего документа, в котором эта Номенклатура встречается)
Делаю так:

ВЫБРАТЬ
   ПоступлениеТоваровУслугТовары.Ссылка,
   ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
   ПоступлениеТоваровУслугТовары.Цена
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК Фильтр
       ПО ПоступлениеТоваровУслугТовары.Ссылка = Фильтр.Ссылка
           И ПоступлениеТоваровУслугТовары.Ссылка.МоментВремени < Фильтр.МоментВремени

УПОРЯДОЧИТЬ ПО
   Номенклатура

И получаю более одной цены для Норменклатур на тестовых данных. Как исправить запрос?
1 simol
 
23.05.11
17:58
Сначала получаешь последние документы, а потом из них цены. А одновременно не получится
2 Grusswelle
 
23.05.11
17:59
+ АВТОУПОРЯДОЧИВАНИЕ
3 forforumandspam
 
23.05.11
18:10
Вот не пойму, зачем такой хитрый запрос. У меня запрос:

ВЫБРАТЬ
   ПоступлениеТоваровУслугТовары.Ссылка,
   ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
   ПоступлениеТоваровУслугТовары.Цена
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары

УПОРЯДОЧИТЬ ПО
   Номенклатура

даёт точно такой-же результат. А у тебя?
4 poligraf
 
23.05.11
18:11
(3) у тебя всего один приход в базе?
5 forforumandspam
 
23.05.11
18:15
(4) тестил в демо-базе, где 32 документа с заполненой табличной частью "Товары".
6 luckyluke
 
23.05.11
18:17
(3) ты хоть понимаешь, что ты здесь выбираешь вообще все документы за весь период?
7 poligraf
 
23.05.11
18:18
(6) оно работает. Не сбивай человека.
8 forforumandspam
 
23.05.11
18:19
(6) У меня запрос из (0) выдаёт все документы за весь период. ЧЯДН?
9 luckyluke
 
23.05.11
18:19
(7) не, ну если работает... то тогда конечно, че уж там.
10 luckyluke
 
23.05.11
18:21
(8) Ну вообще задача то стоит "Мне нужно получить последние цены Номенклатур из табличной части Товары документов Поступление товаров и услуг. Т.е, одна номенклатура - одна цена (из последнего документа, в котором эта Номенклатура встречается)", у него не получается, просит помощи... а ты ему (3), ЗТДТ?
11 forforumandspam
 
23.05.11
18:22
Кто-нибудь, помимо меня проверял результат запроса?
12 forforumandspam
 
23.05.11
18:23
13 luckyluke
 
23.05.11
18:24
(11) нахрена проверять результат запроса, если и так понятно что он делает?
(12) Зачем Ты Делаешь Так
14 forforumandspam
 
23.05.11
18:27
(13) А ты попробуй проверь. Секундное дело.
15 luckyluke
 
23.05.11
18:29
(14) зомбированный? Верующий? Что с тобой не так?
16 forforumandspam
 
23.05.11
18:30
(15) Почему со мной? У меня оба запроса дают один и тот-же результат. Подскажи, пожалуйста, по твоему мнению, почему они должны давать разный результат? Я сам в первый раз вижу такое написание запроса, мне очень интересно.
17 luckyluke
 
23.05.11
18:34
(16) блин, читай (10) до просветления.
18 forforumandspam
 
23.05.11
18:39
(17) Я тебя ПРОШУ, объясни мне, как должна работать такая конструкция запроса. Лень. Нет, так нет. А ссылка на (10) ничего не говорит. Спасибо.
19 luckyluke
 
23.05.11
18:39
+(17) автор по всей видимости хотел использовать вот это v8: FIFO в запросе для получения поледнего документа, но так как у него не получилось, он пришел и на форум спросить, а ты предложил не заморачиваться и сделать (3), я тебе задал вопрос в (6), а ты мне теперь будешь рассказывать, что твой запрос из (3) выдает тоже что и из (0) и поэтому получить последний док поступления вообще не стоит пытаться?
20 y22-k
 
23.05.11
18:43
(0) Вот Это проверь

ВЫБРАТЬ
   ВложенныйЗапрос.Ссылка,
   ПоступлениеТоваровУслугТовары.Номенклатура,
   ПоступлениеТоваровУслугТовары.Цена
ИЗ
   (ВЫБРАТЬ ПЕРВЫЕ 1
       ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
   ИЗ
       Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
   ГДЕ
       ПоступлениеТоваровУслуг.Проведен = ИСТИНА
   
   УПОРЯДОЧИТЬ ПО
       ПоступлениеТоваровУслуг.Дата УБЫВ) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ПО ВложенныйЗапрос.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка
21 luckyluke
 
23.05.11
18:59
(20) Тогда уж лучше так пробовать:
ВЫБРАТЬ
   ВложенныйЗапрос.Ссылка,
   ПоступлениеТоваровУслугТовары.Номенклатура,
   ПоступлениеТоваровУслугТовары.Цена
ИЗ

  (ВЫБРАТЬ ПЕРВЫЕ 1

       ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
   ИЗ
       Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
   ГДЕ
       ПоступлениеТоваровУслуг.Ссылка.Проведен
       И ПоступлениеТоваровУслуг
.Номенклатура = &Номенклатура
   
   УПОРЯДОЧИТЬ ПО
       ПоступлениеТоваровУслуг.Ссылка.МоментВремени УБЫВ) КАК ВложенныйЗапрос
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ПО ВложенныйЗапрос.Ссылка = ПоступлениеТоваровУслугТовары.Ссылка


Но опять же, ему нужно скорей всего не на одну номенклатуру, а на список... в ТЧ реализации или где он там её пользует...
22 poligraf
 
23.05.11
19:21
(20) (21) ПЕРВЫЕ - выберет первую запись. Проверял:)

Надо сначала получать список последних документов по каждой номенклатуре. ВТ или вложенный запрос (в них будет что-то вроде группировки по номенклатуре и Максимум(Документ.Дата)) и эту таблицу уже фильтром в основной запрос.
23 y22-k
 
23.05.11
23:27
(21)(22)
все ступил неправильно задачу прочел
Автор если объем не большой не тупи и сделай запрос в цикле
на небольших объемах это не критично
Или тебе это надо для отчета какого-то
тогда проще принудительно писать цену  в РС цены поставщиков
и оттуда хапать последние записи на дату
Мне кажется так как ты хочешь может получиться мега запрос который по времени будет дольше выполняться
24 Maniac
 
23.05.11
23:33
Учите коррелированные подзапросы
25 Maniac
 
23.05.11
23:42
С вас по сто баксов

ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура,
   ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
   ПоступлениеТоваровУслуг.Ссылка.Дата КАК ДатаПРИХОДА
   ПоступлениеТоваровУслуг.Цена КАК Цена
ПОМЕСТИТЬ ПРИХОДЫ
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Продажи.Номенклатура,
   Продажи.СтоимостьОборот КАК СтоимостьОборот,
   Продажи.Группа КАК Группа
ИЗ
   ПРИХОДЫ КАК ПРИХОДЫ
ГДЕ
   ПРИХОДЫ.Ссылка В
           (ВЫБРАТЬ ПЕРВЫЕ 1
               ВложенныеПРИХОДЫ.Ссылка
           ИЗ
               ПРИХОДЫ КАК ВложенныеПРИХОДЫ
           ГДЕ ВложенныеПРИХОДЫ.Номенклатура = ПРИХОДЫ.Номенклатура
               И ВложенныеПРИХОДЫ.Ссылка = ПРИХОДЫ.Ссылка
           УПОРЯДОЧИТЬ ПО
               ВложенныеПРИХОДЫ.ДатаПРИХОДА УБЫВ)

УПОРЯДОЧИТЬ ПО
   Номенклатура
ИТОГИ ПО
   Номенклатура
26 Maniac
 
23.05.11
23:43
сори там ошибки есть. поправите сами. писал без 1С.
27 Maniac
 
23.05.11
23:45
ВЫБРАТЬ
   ПоступлениеТоваровУслуг.Номенклатура КАК Номенклатура,
   ПоступлениеТоваровУслуг.Ссылка КАК Ссылка,
   ПоступлениеТоваровУслуг.Ссылка.Дата КАК ДатаПРИХОДА
   ПоступлениеТоваровУслуг.Цена КАК Цена
ПОМЕСТИТЬ ПРИХОДЫ
ИЗ
   Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслуг
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
   Продажи.Номенклатура,
   Продажи.Цена КАК Цена
ИЗ
   ПРИХОДЫ КАК ПРИХОДЫ
ГДЕ
   ПРИХОДЫ.Ссылка В
           (ВЫБРАТЬ ПЕРВЫЕ 1
               ВложенныеПРИХОДЫ.Ссылка
           ИЗ
               ПРИХОДЫ КАК ВложенныеПРИХОДЫ
           ГДЕ ВложенныеПРИХОДЫ.Номенклатура = ПРИХОДЫ.Номенклатура
               И ВложенныеПРИХОДЫ.Ссылка = ПРИХОДЫ.Ссылка
           УПОРЯДОЧИТЬ ПО
               ВложенныеПРИХОДЫ.ДатаПРИХОДА УБЫВ)

УПОРЯДОЧИТЬ ПО
   Номенклатура
ИТОГИ ПО
   Номенклатура
28 Maniac
 
23.05.11
23:45
ВЫБРАТЬ
   Продажи.Номенклатура,
   Продажи.Цена КАК Цена
ИЗ

сместо продажи тоже приходы.
29 ho0p
 
24.05.11
00:16
Как то так, только надо добавить условие:


ВЫБРАТЬ
 ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
 ПоступлениеТоваровУслугТовары.Цена КАК Цена
ИЗ
 Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
     ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
         ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
         МАКСИМУМ(ПоступлениеТоваровУслугТовары.Ссылка.Дата) КАК Дата
     ИЗ
         Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
     
     СГРУППИРОВАТЬ ПО
         ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос
     ПО ПоступлениеТоваровУслугТовары.Номенклатура = ВложенныйЗапрос.Номенклатура
         И ПоступлениеТоваровУслугТовары.Ссылка.Дата = ВложенныйЗапрос.Дата
30 Пип Пибип
 
25.05.11
09:35
Совсем забыл. Спасибо!
Основная теорема систематики: Новые системы плодят новые проблемы.