|
Условие на максимальную дату в запросе | ☑ | ||
---|---|---|---|---|
0
tatoshka0403
29.10.14
✎
10:36
|
Подскажите пожалуйста, делаю запрос на вычисление себестоимости товара( у нас себестоимость= последняя цена поступления)
ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.Количество, ВозвратТоваровОтПокупателяТовары.Себестоимость, ПоступлениеТоваровУслугТовары.Цена КАК Цена, ПоступлениеТоваровУслугТовары.Ссылка.Дата ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка И ВозвратТоваровОтПокупателяТовары.Ссылка.Дата >= ПоступлениеТоваровУслугТовары.Ссылка.Дата В запрос попадают все документы поступления а мне нужен только один который "ближе" всего к моему возврату. |
|||
1
vicof
29.10.14
✎
10:38
|
Максимум по дате, соединение по дата поступления меньше даты возврата.
|
|||
2
Крошка Ру
29.10.14
✎
10:40
|
(0) А если это поступение не проведено или на удаление помечено?
Может быть искать себестоимость стоит не в документах? |
|||
3
Ненавижу 1С
гуру
29.10.14
✎
10:42
|
>> у нас себестоимость= последняя цена поступления
это почему? |
|||
4
John83
29.10.14
✎
10:43
|
из этой же оперы
Валовая прибыль (последние продажи) |
|||
5
John83
29.10.14
✎
10:43
|
(3) ну захотелось им так - тебе жалко что ли?
|
|||
6
tatoshka0403
29.10.14
✎
10:44
|
(2) Спасибо, что напомнил про эти условия, но все документы проведены
(3) Я понимаю что это не всегда правильно, но клиенту так удобней. |
|||
7
PePaRiTB
29.10.14
✎
10:45
|
(0) Если нужны последние цены из поступлений/возвратов по номенклатуре, разумнее будет создать регистр сведений и делать движения документом поступления/возврата. Ах, да и LIFO запрещено законодательно, а тут даже лучше чем LIFO :)
|
|||
8
tatoshka0403
29.10.14
✎
10:49
|
Все же пойду в сторону партий товаров. Спасибо)
|
|||
9
tatoshka0403
29.10.14
✎
11:20
|
Думал думал и все же решил оставить так
ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Ссылка, ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.Цена, ПродажиСебестоимость.Стоимость, ПродажиСебестоимость.Регистратор ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ПродажиСебестоимость.Номенклатура ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка И ВозвратТоваровОтПокупателяТовары.Ссылка.Дата >= ПродажиСебестоимость.Регистратор.Дата Так как же сделать чтобы только одно(максимальное выводилась) выводилась? |
|||
10
Крошка Ру
29.10.14
✎
11:27
|
(9) в (1) же написано.
|
|||
11
Крошка Ру
29.10.14
✎
11:28
|
+(10) Группируешь по полям ссылка, номенклатура. По дате поступления - максимум, потом по дате (и номенклатуре со ссылкой) соединяешь с этой же таблицей.
|
|||
12
tatoshka0403
29.10.14
✎
11:31
|
ВЫБРАТЬ
ВозвратТоваровОтПокупателяТовары.Ссылка, ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.Цена, ПродажиСебестоимость.Стоимость, ПродажиСебестоимость.Регистратор, МАКСИМУМ(ПродажиСебестоимость.Регистратор.Дата) КАК РегистраторДата ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ПродажиСебестоимость.Номенклатура ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка И ВозвратТоваровОтПокупателяТовары.Ссылка.Дата >= ПродажиСебестоимость.Регистратор.Дата СГРУППИРОВАТЬ ПО ВозвратТоваровОтПокупателяТовары.Ссылка, ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.Цена, ПродажиСебестоимость.Стоимость, ПродажиСебестоимость.Регистратор Ну если я все правильно понял, то не помогает |
|||
13
tatoshka0403
29.10.14
✎
11:32
|
Упс забыл убрать, все спс заработало(11)
ВЫБРАТЬ ВозвратТоваровОтПокупателяТовары.Ссылка, ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.Цена, ПродажиСебестоимость.Стоимость, МАКСИМУМ(ПродажиСебестоимость.Регистратор.Дата) КАК РегистраторДата ИЗ Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ПродажиСебестоимость.Номенклатура ГДЕ ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка И ВозвратТоваровОтПокупателяТовары.Ссылка.Дата > ПродажиСебестоимость.Регистратор.Дата СГРУППИРОВАТЬ ПО ВозвратТоваровОтПокупателяТовары.Ссылка, ВозвратТоваровОтПокупателяТовары.Номенклатура, ВозвратТоваровОтПокупателяТовары.Цена, ПродажиСебестоимость.Стоимость |
|||
14
H A D G E H O G s
29.10.14
✎
11:34
|
(0) Думаю, скоро придет Элли и отмиздит питомца за тормозной запрос.
|
|||
15
H A D G E H O G s
29.10.14
✎
11:37
|
Дада, там просто адов план запроса получается с Индексным сканом регистра.
|
|||
16
tatoshka0403
29.10.14
✎
11:41
|
(15)Лучше было брать ПродажиСебестоимость.Обороты ?
|
|||
17
John83
29.10.14
✎
11:58
|
что-то мне подсказывает, что запрос не только тормозной, но и нерабочий..
|
|||
18
John83
29.10.14
✎
11:59
|
(16) лучше посмотреть мой пример в (4)
|
|||
19
tatoshka0403
29.10.14
✎
13:29
|
(17) Запрос рабочий
(18) Мой запрос плох тем что я не использую виртуальные таблицы и не устанавливаю по ним условия? |
|||
20
John83
29.10.14
✎
13:37
|
(19) хотя да.. в конце отсекаешь лишние записи..
именно! не стоит без надобности использовать физ. таблицы |
|||
21
tatoshka0403
29.10.14
✎
13:41
|
(20)Спасибо сделаю по твоему примеру, а сейчас пока доделаю на этом запросе.
|
|||
22
tatoshka0403
29.10.14
✎
16:33
|
(20)
Запрос = Новый Запрос; Запрос.УстановитьПараметр("Ссылка", Ссылка); Запрос.Текст = "ВЫБРАТЬ | ВозвратТоваровОтПокупателяТовары.Ссылка, | ВозвратТоваровОтПокупателяТовары.Номенклатура, | ВозвратТоваровОтПокупателяТовары.Цена, | ПродажиСебестоимость.Стоимость, | МАКСИМУМ(ПродажиСебестоимость.Регистратор.Дата) КАК РегистраторДата |ИЗ | Документ.ВозвратТоваровОтПокупателя.Товары КАК ВозвратТоваровОтПокупателяТовары | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПродажиСебестоимость КАК ПродажиСебестоимость | ПО ВозвратТоваровОтПокупателяТовары.Номенклатура = ПродажиСебестоимость.Номенклатура |ГДЕ | ВозвратТоваровОтПокупателяТовары.Ссылка.Дата > ПродажиСебестоимость.Регистратор.Дата | И ВозвратТоваровОтПокупателяТовары.Ссылка = &Ссылка | |СГРУППИРОВАТЬ ПО | ВозвратТоваровОтПокупателяТовары.Ссылка, | ВозвратТоваровОтПокупателяТовары.Номенклатура, | ВозвратТоваровОтПокупателяТовары.Цена, | ПродажиСебестоимость.Стоимость"; Выборка = Запрос.Выполнить().Выбрать(); ДокументОбъект= Ссылка.ПолучитьОбъект(); Для каждого СтрТабличнойЧасти Из ДокументОбъект.Товары Цикл СтрТабличнойЧасти.Себестоимость=Выборка.Стоимость; КонецЦикла; ДокументОбъект.Записать(); Запрос пока еще не правил, но процедура не работает, где ошибка? |
|||
23
tatoshka0403
29.10.14
✎
16:33
|
(22) к (20)
|
|||
24
Ёпрст
29.10.14
✎
16:44
|
(22) там же, где и всегда!
|
|||
25
John83
29.10.14
✎
18:25
|
(22) и где у тебя обход по выборке
PS я уж не говорю про то, что ты даже не удосужился выложить ошибку |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |