Имя: Пароль:
1C
1С v8
Остатки товаров на момент заказа в запросе
, ,
0 MistaEr
 
24.09.16
13:26
Хочу получать остатки товаров на момент заказа, что то не так делаю


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

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

СГРУППИРОВАТЬ ПО
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.ХарактеристикаНоменклатуры,
    ВТ_Заказы.ДатаЗаказа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_Заказы.ДатаЗаказа КАК ДатаЗаказа,
    ВТ_Заказы.Номенклатура КАК Номенклатура,
    ВТ_Заказы.ХарактеристикаНоменклатуры,
    ВТ_Заказы.КоличествоЗаказа,
    ЕСТЬNULL(ВТ_Остатки.КоличествоКонечныйОстаток, 0) КАК КоличествоКонечныйОстаток
ИЗ
    ВТ_Заказы КАК ВТ_Заказы
        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Остатки КАК ВТ_Остатки
        ПО ВТ_Заказы.Номенклатура = ВТ_Остатки.Номенклатура
            И ВТ_Заказы.ХарактеристикаНоменклатуры = ВТ_Остатки.ХарактеристикаНоменклатуры
            И ВТ_Заказы.ДатаЗаказа = ВТ_Остатки.ДатаВремяЗаказа
1 zak555
 
24.09.16
13:42
с учётом движений документа ?
2 MistaEr
 
24.09.16
13:43
(1) Он выводит только начальный остаток, на все периоды заказов
3 zak555
 
24.09.16
13:43
какой-то запросы мутный, скажии словами что надо получить
4 MistaEr
 
24.09.16
13:54
ВТ_Заказы - получаю даты заказов и вообще заказанные за период товары, но эти заказы должны быть закрыты(реализованы) документов РеализацияТоваровУслуг

ВТ_Остатки - получаю остатки товаров на каждую дату заказа

Далее - Нужна таблица,

Номенклатура\ДатаЗаказа\КоличествоЗаказа\ОстатокНаМоментЗаказа\
5 MistaEr
 
24.09.16
13:59
(0) Тут МАКСИМУМ неверно стоит, а ставлю СУММА, тоже непонятно что получается
6 MistaEr
 
24.09.16
14:11
(3) Это вроде как бы Остатки на каждый день, но не совсем то. Это остатки на момент каждого заказа. Причем, каждая номенклатура ведь включена не в каждый заказ
7 PR2
 
24.09.16
14:12
(0) Заинтриговал. Продолжай.
8 MistaEr
 
24.09.16
14:19
(7) У меня больше нет вариантов. В СКД легко обратиться в общий модуль. А тут придется в цикле остатки доставать
9 PR2
 
24.09.16
14:32
(8) А что, разве в (0) не анонс был?
10 MistaEr
 
24.09.16
14:37
(9) Думал может ты такой умный быстро подправишь запрос
11 zak555
 
24.09.16
14:38
(6) мне первый пакет, например, не понятен
12 MistaEr
 
24.09.16
14:40
(11) ВТ_Заказы - получаю даты заказов и вообще заказанные за период товары, но эти заказы должны быть закрыты(реализованы) документов РеализацияТоваровУслуг


Делаю ПОлное соединение с реализованными, закрытыми заявками
13 zak555
 
24.09.16
14:42
(12) тебе надо получить остатки по тем заказам, который не реализованы ?
14 MistaEr
 
24.09.16
14:53
(13) нет, по тем которые попали в ВТ_Заказы
15 zak555
 
24.09.16
14:55
РегистрНакопления.ЗаказыПокупателей.Обороты(&НачДата, &КонДата, Регистратор, Номенклатура В ИЕРАРХИИ (&КаталогНоменклатуры)) КАК ЗаказыПокупателейОбороты
РегистрНакопления.ЗаказыПокупателей.Обороты(&НачДата, &КонДата, Регистратор, Номенклатура В ИЕРАРХИИ (&КаталогНоменклатуры)) КАК ЗаказыПокупателейОборотыРеализации
16 MistaEr
 
24.09.16
14:58
Условия смотри
17 RomarioAgro
 
24.09.16
15:59
таблица остатков, по моему не верно построена
что нужно сделать:
Таблица остатков и оборотов, если она строится с периодами (не целиком за период) в конкретном периоде (только если он не крайний) в котором не было оборотов, не содержит начальных и конечных остатков.
1) получаем таблицу остатков и оборотов ВТ_ОстаткиИОбороты;
2) проводим левое соединение ВТ_Заказы и ВТ_ОстаткиИОбороты по ВТ_Заказы.ДатаЗаказа <= ВТ_ОстаткиИОбороты.Период группируем по измерениям и получаем Максимум(ВТ_ОстаткиИОбороты.Период) - получаем таблицу ближайших периодов, содержащих остатки ВТ_ДатыОстатков.
3) проводим внутреннее соединение ВТ_ОстаткиИОбороты и ВТ_ДатыОстатков по ВТ_ОстаткиИОбороты.Период = ВТ_ДатыОстатков.Период
примерно так
18 RomarioAgro
 
24.09.16
16:02
ошибся с знаком
2) проводим левое соединение ВТ_Заказы и ВТ_ОстаткиИОбороты по ВТ_Заказы.ДатаЗаказа >=
19 youalex
 
24.09.16
18:47
1)
остатки на каждый день - считаются как РН.Остатки на начало периода + (объединение)  таблица периодов ЛС  с таблицей движений По РН.Период <=Период.Период.

2) Использовать .Обороты с периодоми Регистратор/Запись - имхо, моветон.
20 MistaEr
 
24.09.16
22:18
Всем спасибо, но я сделал в цикле
21 tixis
 
25.09.16
00:57
(8) В СКД обратиться в общий модуль = тот же цикл если чо