|
Как в запросе выбрать из периодического регистра сведений за период.. | ☑ | ||
---|---|---|---|---|
0
realevgenius
31.01.17
✎
22:59
|
Всем - привет!
Начинающий, сильно не ругайте. Задачка, например, есть несколько документов Покупка, с табличными частями. Надо проставить цены из регистра сведений. Но дата среза должна равняться дате очередного документа. Типа такого текста запроса - не работает, значение null. ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Ссылка, ПоступлениеТоваровУслугТовары.Номенклатура, ПоступлениеТоваровУслугТовары.Цена, ПоступлениеТоваровУслугТовары.Количество, ПоступлениеТоваровУслугТовары.Сумма, ЦеныНоменклатурыСрезПоследних.Цена КАК ЦенаУстановлена ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура И ПоступлениеТоваровУслугТовары.Ссылка.ДатаВходящегоДокумента = ЦеныНоменклатурыСрезПоследних.Период ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата >= &Дата1 И ПоступлениеТоваровУслугТовары.Ссылка.Дата <= &Дата2 Помогите, люди добрые?! Спасибо! |
|||
1
mkalimulin
31.01.17
✎
23:04
|
Это называется "срез последних на каждую дату в запросе".
Можно посмотреть тут: Книга знаний: Срез последних на каждую дату в запросе и в гугле. Пользуйтесь конструктором JUG. Там есть библиотека шаблонов (и этот случай тоже). http://catalog.mista.ru/public/569569/ |
|||
2
realevgenius
31.01.17
✎
23:07
|
Спасибо!
Полез читать! Пробовал гуглить, но, видимо сформулировал неправильно |
|||
3
Fram
31.01.17
✎
23:09
|
(1) необязательно.
(0) соединяй с основной таблицей регистра а не виртуальной с условием ДатаДока >= ПериодРегистра. потом Максимум по Периоду Регистра |
|||
4
Fram
31.01.17
✎
23:10
|
Потом по этому периоду опять соединяешь с регистром и получаешь цены
|
|||
5
realevgenius
31.01.17
✎
23:17
|
(4) Честно, не осилил... Что и как соединять... Опыта нет...(((
|
|||
6
Fram
31.01.17
✎
23:18
|
(5) а как ты (0) наваял?
|
|||
7
realevgenius
31.01.17
✎
23:23
|
(6) Ну вот, что-то с чем-то слепил... )) Я делал подобное, но приходилось в одном запросе выборку сделать, потом в выборке получать цену из другого запроса, подставляя дату... Чушь, в общем.... Попытался соединить...
|
|||
8
Fram
31.01.17
✎
23:26
|
(7) извини, но тогда это получается "не по Сеньке шапка". не способен ты еше писать такие запросы.
попроси у шефа задание попроще. |
|||
9
realevgenius
31.01.17
✎
23:27
|
(8) Ну, вот, стараюсь понять, вникнуть... Тебе хорошо, ты уже при рождении писал запросы любые... ))
|
|||
10
realevgenius
31.01.17
✎
23:32
|
Почитал статьи... Профи пишет как это делается, не вдаваясь в подробности, видимо для других профи. Ценность статьи с точки зрения обучения = "0", ибо начинающий не поймет, а для профи оно не надо, им итак все известно... )))
|
|||
11
Fram
31.01.17
✎
23:32
|
(9) алгоритм я описал:
- соединяешь документ с регистром (не срез последних!) по ДатаВходДока >= ПериодРегистра - вычисляешь максимальную (последнюю дату) для каждого набора данных - результат соединяешь опять с регистром и получаешь цены дальше сам |
|||
12
realevgenius
31.01.17
✎
23:39
|
(11) ВЫБРАТЬ
ВложенныйЗапрос.Ссылка, ВложенныйЗапрос.Номенклатура, ЦеныНоменклатуры.Цена ИЗ (ВЫБРАТЬ ПоступлениеТоваровУслугТовары.Ссылка КАК Ссылка, ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, МАКСИМУМ(ЦеныНоменклатуры.Период) КАК Период ИЗ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ПоступлениеТоваровУслугТовары.Номенклатура = ЦеныНоменклатуры.Номенклатура И ПоступлениеТоваровУслугТовары.Ссылка.ДатаВходящегоДокумента >= ЦеныНоменклатуры.Период ГДЕ ПоступлениеТоваровУслугТовары.Ссылка.Дата >= &Дата1 И ПоступлениеТоваровУслугТовары.Ссылка.Дата <= &Дата2 СГРУППИРОВАТЬ ПО ПоступлениеТоваровУслугТовары.Ссылка, ПоступлениеТоваровУслугТовары.Номенклатура) КАК ВложенныйЗапрос ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры ПО ВложенныйЗапрос.Номенклатура = ЦеныНоменклатуры.Номенклатура И ВложенныйЗапрос.Период = ЦеныНоменклатуры.Период |
|||
13
Fram
31.01.17
✎
23:41
|
(12) можешь когда захочешь ))
половину вознаграждения мне |
|||
14
realevgenius
31.01.17
✎
23:42
|
(13) Ок! "0" / 2 = "0" )))
Но могу сказать - Спасибо большое! ))) |
|||
15
Fram
31.01.17
✎
23:43
|
(12) Тип цены наверно еще должен быть. И единицу измерения цены учесть не забудь
|
|||
16
realevgenius
31.01.17
✎
23:44
|
||||
17
realevgenius
31.01.17
✎
23:45
|
(15) Да, это понятно... Там много чего...
Прицепить не мог саабразить как |
|||
18
Fram
31.01.17
✎
23:46
|
(16) Срез на кажлый день это бред неприменимый в реальной жизни. за 20 лет в 1С ни разу не понадобилось
|
|||
19
realevgenius
31.01.17
✎
23:49
|
(18) Ну например, задача - проверять входящие цены, сравнивая с установленными... Не зашкаливают ли... Проверять в каждом документе, на дату не документа, а поставщика... Давай сотовый, могу денег закинуть за подсказку, кстаьт..
|
|||
20
Fram
31.01.17
✎
23:51
|
(19) я не про твою задачу, я про буквальный срез на каждый день
|
|||
21
realevgenius
31.01.17
✎
23:53
|
(20) Ну у мя тоже была мысля сделать вложенный запрос, с каждодневным срезом... ))))Но, глупость, канешн
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |