Имя: Пароль:
1C
 
Как связать остатки по складу с САМЫМИ последними ценами контрагентов
0 Yu13
 
04.02.09
09:20
Что то с утра туплю. Нужно получить остатки по складу и САМЫЕ последние цены контрагентов. Срез последних по ценам номенклатуры контрагентов даёт несколько последних цен (по типам цен). Как запросом получить табличку Номенклатура/ Остатки по складу/ САМАЯ последняя цена контрагентов(по времени)? В голову лезут самые бредовые варианты. Направьте на путь истинный.
1 Кадош
 
04.02.09
09:21
запрос
ЛЕВОЕ СОЕДИНЕНИЕ
2 Нуф-Нуф
 
04.02.09
09:21
Запрос
ЛЕВОЕ СОЕДИНЕНИЕ
САМЫЕ ПОСЛЕДНИЕ
3 MNS_Ротерта
 
04.02.09
09:31
(0) а дату среза поставили в виртуальной табл. РС?
4 Маркетолог
 
04.02.09
09:35
(3) Если нужны самые последние , то дата среза не обязательна.
5 Yu13
 
04.02.09
09:40
Ни фига, я и делаю левым соединением. Но те строки где есть несколько типов цен "затраиваются".
Нуф-Нуф:
Что такое "САМЫЕ ПОСЛЕДНИЕ"
6 DK_L
 
04.02.09
09:42
(5) Сделай максимум по цене с группировкой по номенклатуре
7 Yu13
 
04.02.09
09:45
DK L
Зачем максимум по цене? Мне последнюю надо...
8 Yu13
 
04.02.09
09:48
Так тоже не катит:
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Склад КАК Склад,
   ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
   МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
       ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстатки.Склад,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
9 Маркетолог
 
04.02.09
09:52
Может вот так ?

       "ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.Номенклатура,
|    ТоварыНаСкладахОстатки.КоличествоОстаток,
|    Цены.ТипЦен,
|    Цены.Цена
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
|        ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            МаксДата.Номенклатура КАК Номенклатура,
|            ЦеныНоменклатуры.ТипЦен КАК ТипЦен,
|            ЦеныНоменклатуры.Цена КАК Цена
|        ИЗ
|            (ВЫБРАТЬ
|                ЦеныНоменклатуры.Номенклатура КАК Номенклатура,
|                МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период
|            ИЗ
|                РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|            
|            СГРУППИРОВАТЬ ПО
|                ЦеныНоменклатуры.Номенклатура) КАК МаксДата
|                ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
|                ПО МаксДата.Номенклатура = ЦеныНоменклатуры.Номенклатура
|                    И МаксДата.Период = ЦеныНоменклатуры.Период) КАК Цены
|        ПО ТоварыНаСкладахОстатки.Номенклатура = Цены.Номенклатура"
10 НЕА123
 
04.02.09
10:04
попробуй так:

ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Склад КАК Склад,
   ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток,
   МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена КАК Цена
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
       ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(, Номенклатура = Номенклатура) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
       ПО ТоварыНаСкладахОстатки.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстатки.Склад,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.КоличествоОстаток,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
11 Yu13
 
04.02.09
10:18
Нет. Всё равно "двоится". Прям мистика какая-то...
12 hhhh
 
04.02.09
10:22
(5) так с типом цен надо заранее определиться.
13 Immortal
 
04.02.09
10:23
(12)да без разницы, просто надо левым соединением цеплять не "Цена,Период,ТипЦен", а "Цена,Период"
14 НЕА123
 
04.02.09
10:25
(11) в запросе (10) тоже двоится? странно...
15 Yu13
 
04.02.09
10:36
Тип цен заранее не известен, надо брать последний по времени.
16 Kaushly
 
04.02.09
10:49
Может так:
"ВЫБРАТЬ
|    ТоварыНаСкладахОстатки.Склад,
|    ТоварыНаСкладахОстатки.Номенклатура,
|    ТоварыНаСкладахОстатки.КоличествоОстаток,
|    ЕСТЬNULL(ВложенныйЗапрос.Цена, 0) КАК Цена
|ИЗ
|    РегистрНакопления.ТоварыНаСкладах.Остатки(&Дата, ) КАК ТоварыНаСкладахОстатки
|        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
|            ВложенныйЗапрос.Номенклатура КАК Номенклатура,
|            МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена) КАК Цена
|        ИЗ
|            (ВЫБРАТЬ
|                ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
|                МАКСИМУМ(ЦеныНоменклатурыКонтрагентовСрезПоследних.Период) КАК Период
|            ИЗ
|                РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
|            
|            СГРУППИРОВАТЬ ПО
|                ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура) КАК ВложенныйЗапрос
|                ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&Дата, ) КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
|                ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура
|                    И ВложенныйЗапрос.Период = ЦеныНоменклатурыКонтрагентовСрезПоследних.Период
|        
|        СГРУППИРОВАТЬ ПО
|            ВложенныйЗапрос.Номенклатура) КАК ВложенныйЗапрос
|        ПО ТоварыНаСкладахОстатки.Номенклатура = ВложенныйЗапрос.Номенклатура"
17 Маркетолог
 
04.02.09
10:53
Лучше скажите что делать если несколько последних цен ?
Ведь регистр сведений ЦеныНоменклатуры имеет периодичность День
18 hhhh
 
04.02.09
11:13
19 Yu13
 
04.02.09
11:17
Kaushly
Вроде получается похоже. Блин, вроде простая вещь, а как заморочено.
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn