|   |   | 
| 
 | Как в запросе выбрать из периодического регистра сведений за период.. | ☑ | ||
|---|---|---|---|---|
| 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) Ну у мя тоже была мысля сделать вложенный запрос, с каждодневным срезом... ))))Но, глупость, канешн     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |