Имя: Пароль:
1C
 
Регистр Сведений Как получить последнюю цену из ЦеныНоменклатуры
0 deaddy64
 
19.10.10
06:57
Ознакомился с http://www.forum.mista.ru/topic.php?id=434496
Хотелось бы увидеть запрос, результатом которого является таблица со строками, в которых по каждой номенклатуре содержится единственная последняя запись с ценой.
Сам разобраться не могу.
1 Рэйв
 
19.10.10
07:05
РегистрСведений.ЦеныНоменклатуры.СрезПоследних
2 deaddy64
 
19.10.10
07:11
ВЫБРАТЬ РАЗЛИЧНЫЕ
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура КАК Номенклатура,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Цена
ИЗ
   РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыКонтрагентовСрезПоследних
ГДЕ
   ЦеныНоменклатурыКонтрагентовСрезПоследних.ТипЦен.ТипЦеныНоменклатуры = &ТипЦеныНоменклатуры
   И ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура В(&Номенклатура)

Всё равно появляется одна и таже номенклатура с разной ценой.
3 Рэйв
 
19.10.10
07:13
//------------------
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних(&СамаяПоследняяДата)
4 Смит
 
19.10.10
07:15
ЦеныНоменклатурыКонтрагентов <> ЦеныНоменклатуры
5 Рэйв
 
19.10.10
07:16
(4)Ну да. вроде закупочные же хотел
6 deaddy64
 
19.10.10
07:19
С учетом поправок в (3) всё равно двоящаяся номенклатура.
7 Смит
 
19.10.10
07:20
(6) А с учетом (4)?
8 deaddy64
 
19.10.10
07:26
(7) ну так в ЦеныНоменклатурыКонтрагентов закупочные вроде хранятся. Мне закупочные и нужны.

Регистр сведений «Цены номенклатуры контрагентов»
В этом регистре хранится информация о зарегистрированных ценах контрагентов. Цены контрагентов регистрируются с помощью документа «Установка цен номенклатуры контрагентов».

Цены поставщиков могут быть также зарегистрированы при поступлении товаров от поставщика с помощью документа «Поступление товаров и услуг».

Цены могут быть зарегистрированы с периодичностью - день.
9 Мимохожий Однако
 
19.10.10
07:29
ВЫБРАТЬ ПЕРВЫЕ
10 deaddy64
 
19.10.10
07:32
(9) Тогда отобразится только одна строчка из всей таблицы.
11 Смит
 
19.10.10
07:32
(8) Понятно.
Чо делать когда:
Контрагент1, Яблоко, 10 руб.
Контрагент2, Яблоко, 15 руб.
Какую цену выводить?
12 deaddy64
 
19.10.10
07:38
(11)
Контрагент1, Яблоко, 10 руб., Дата закупки: 11.03.09
Контрагент2, Яблоко, 15 руб., Дата закупки: 17.05.10

Нужно вывести 2ую строку. Т.к. эта запись самая последняя по данной номенклатуре.
13 Смит
 
19.10.10
07:48
Попробуй сгруппировать по Максимум(ДАтаЗакупки)
14 deaddy64
 
19.10.10
07:51
(13)"Операция не разрешена в предложении СГРУПИРОВАТЬ"
Что не так сделал?
15 hhhh
 
19.10.10
07:55
(14) не занимайся ерундой. Закупочные цены хранятся в регистре ЦеныНоменклатуры.
16 Рэйв
 
19.10.10
08:07
(15)А по моему там как раз цены реализации.
17 deaddy64
 
19.10.10
08:50
(15) Мне сейчас лишь нужно правильно составить запрос для того, чтобы строки не двоились, а выводились только самые последние по дате.
В другом регистре тоже двоится.
18 Defender aka LINN
 
19.10.10
09:05
(17) Получить таблицу с макс. датами по номенклатуре из регистра и соединить с регистром. Какие проблемы?
19 deaddy64
 
19.10.10
09:45
(18) проблема в "Получить таблицу с макс. датами по номенклатуре"
Если можно, то кусок текста запроса в пример.
20 Defender aka LINN
 
19.10.10
10:11
(19) покажи как делаешь
21 deaddy64
 
19.10.10
10:51

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

СГРУППИРОВАТЬ ПО
   ЦеныНоменклатурыСрезПоследних.Номенклатура


Максимальные даты по каждой номенклатуре.
Я прав?
22 deaddy64
 
19.10.10
10:59
Период какой-то непонятный получается.
23 shuhard
 
19.10.10
11:05
(22) правильный период получается
крайний для каждой номенклатурины
24 deaddy64
 
19.10.10
11:06
Хм... Запутали меня с этими 2-мя регистрами.
РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
РегистрСведений.ЦеныНоменклатурыКонтрагентов.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних
25 Defender aka LINN
 
19.10.10
11:09
(21) срез тут лишний
26 байт
 
19.10.10
11:12
(21) а группировка для чего?
27 deaddy64
 
19.10.10
11:21
(26) без этой группировки запрос не выполнится, наверно из-за агрегатной функции МАКСИМУМ
28 deaddy64
 
19.10.10
11:49
Короче разобрался. Получилось вот что:

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

СГРУППИРОВАТЬ ПО
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Номенклатура,
   ЦеныНоменклатурыКонтрагентовСрезПоследних.Период
29 deaddy64
 
19.10.10
11:56
Спасибо всем, кто поучаствовал.
30 hhhh
 
19.10.10
12:39
(16) чего-то ты не в теме. Там все цены.
31 korefana
 
19.10.10
12:44
как то так

ВЫБРАТЬ
   ЦеныНоменклатурыСрезПоследних.Период,
   ЦеныНоменклатурыСрезПоследних.Номенклатура,
   ЦеныНоменклатурыСрезПоследних.ТипЦен,
   ЦеныНоменклатурыСрезПоследних.Валюта,
   ЦеныНоменклатурыСрезПоследних.Цена
ИЗ
   РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&НаДату, ТипЦен = &ТипЦен) КАК ЦеныНоменклатурыСрезПоследних
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший