![]() |
|
Как рассчитать остатки на каждый день периода, вычитая заказанное количество. | ☑ | ||
---|---|---|---|---|
0
Bob200555
08.06.16
✎
17:00
|
Допустим на 01.01 есть остаток товара 1000 единиц,
Заказы на 02.01 200ед. Остаток товара на конец 02.01 800 ед. Заказы на 03.01 500ед. Остаток товара на конец 03.01 300 ед. Заказы на 05.01 600ед. Остаток товара на конец 05.01 -300 ед. и т.д. Не пойму как на СКД это сделать. Нужны какие то временные переменные. |
|||
1
Nuobu
08.06.16
✎
17:06
|
(0) Можно запросом сделать, а не через СКД.
Гугл нарастающий итог в запросе |
|||
2
Fragster
гуру
08.06.16
✎
17:06
|
взять информацию из виртуальной таблицы "остатки и обороты" у соответствующего регистра?
|
|||
3
Fragster
гуру
08.06.16
✎
17:06
|
(1) нафиг
|
|||
4
Bob200555
08.06.16
✎
17:15
|
(2) Вы имеете ввиду:
для 01.01 с 01.01 по 01.01 - 800 ед. для 02.01 с 01.01 по 02.01 - 1100 ед. ... для 05.01 с 01.01 по 05.01 - 1400 ед. ??? |
|||
5
youalex
08.06.16
✎
17:21
|
Как-то так:
ВЫБРАТЬ РАЗЛИЧНЫЕ т.ДатаКалендаря, СпрНоменклатура.Ссылка КАК Номенклатура ПОМЕСТИТЬ вт_Календарь ИЗ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК т, Справочник.Номенклатура КАК СпрНоменклатура ГДЕ т.ДатаКалендаря МЕЖДУ &НачалоПериода И &КонецПериода И НЕ СпрНоменклатура.ЭтоГруппа И НЕ СпрНоменклатура.Услуга И НЕ СпрНоменклатура.ПометкаУдаления ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК КоличествоОстаток, &НачалоПериода КАК Период, ИСТИНА КАК этоОстаток ПОМЕСТИТЬ вт_Обороты ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&НачалоПериода) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.КоличествоОборот, ТоварыНаСкладахОбороты.Период, ЛОЖЬ ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&НачалоПериода , &КонецПериода , День) КАК ТоварыНаСкладахОбороты ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ вт_НоменклатураПериод.Номенклатура КАК Номенклатура, вт_НоменклатураПериод.ДатаКалендаря КАК ДатаКалендаря, СУММА(ЕСТЬNULL(вт_Обороты.КоличествоОстаток, 0)) КАК КонечныйОстаток //ПОМЕСТИТЬ вт_ОстаткиПоПериоду ИЗ вт_Календарь КАК вт_НоменклатураПериод ЛЕВОЕ СОЕДИНЕНИЕ вт_Обороты КАК вт_Обороты ПО вт_НоменклатураПериод.Номенклатура = вт_Обороты.Номенклатура И вт_НоменклатураПериод.ДатаКалендаря >= вт_Обороты.Период СГРУППИРОВАТЬ ПО вт_НоменклатураПериод.Номенклатура, вт_НоменклатураПериод.ДатаКалендаря |
|||
6
Fragster
гуру
08.06.16
✎
17:25
|
(4) я имею ввиду
ВЫБРАТЬ ТоварыНаСкладах.Период, ТоварыНаСкладах.КоличествоМестНачальныйОстаток КАК НачальньныйОстаток, ТоварыНаСкладах.КоличествоМестКонечныйОстаток КАК КонецчныйОстаток, ТоварыНаСкладах.КоличествоМестОборот КАК Оборот ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , День, , ) КАК ТоварыНаСкладах |
|||
7
Bob200555
08.06.16
✎
17:25
|
(5)А где тут заказы?
|
|||
8
youalex
08.06.16
✎
17:29
|
(7) Действительно. Странно...
|
|||
9
Bob200555
08.06.16
✎
17:29
|
Я наверное криво изъясняюсь.
Мне нужно на каждый день расчетный остаток товара за минусом будущих заказов. То есть это наглядный прогноз в какой день товар закончится. |
|||
10
Bob200555
08.06.16
✎
17:30
|
(9)
не "будущих заказов" а поступивших... |
|||
11
Nuobu
08.06.16
✎
17:35
|
(9) Тогда тебе нужны нарастающие итоги.
|
|||
12
Bob200555
08.06.16
✎
17:38
|
(11) Так ото ж... На СКД ни как?
|
|||
13
Fragster
гуру
08.06.16
✎
17:49
|
(9) для этого придуманы всякие регистры типа свободных остатков
|
|||
14
bootini
08.06.16
✎
18:13
|
(12) ВычислитьВыражение("Сумма(Сумма)", , , "Первая", "Текущая")
|
|||
15
bootini
08.06.16
✎
18:38
|
Или так запросом:
ВЫБРАТЬ ЗаказыПокупателейОстаткиИОбороты.Период, ЗаказыПокупателейОстаткиИОбороты.Номенклатура, ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток КАК Заказано ПОМЕСТИТЬ ВТ_Заказы ИЗ РегистрНакопления.ЗаказыПокупателей.ОстаткиИОбороты(&ТекущаяДата, , День, , ) КАК ЗаказыПокупателейОстаткиИОбороты ГДЕ ЗаказыПокупателейОстаткиИОбороты.КоличествоКонечныйОстаток > 0 ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Заказы.Период КАК Период, ВТ_Заказы.Номенклатура КАК Номенклатура, ВТ_Заказы.Заказано, СУММА(ВТ_Заказы1.Заказано) КАК НарстающийИтог ПОМЕСТИТЬ ВТ_ЗаказыСИтогом ИЗ ВТ_Заказы КАК ВТ_Заказы ЛЕВОЕ СОЕДИНЕНИЕ ВТ_Заказы КАК ВТ_Заказы1 ПО ВТ_Заказы.Номенклатура = ВТ_Заказы1.Номенклатура И ВТ_Заказы.Период >= ВТ_Заказы1.Период СГРУППИРОВАТЬ ПО ВТ_Заказы.Период, ВТ_Заказы.Номенклатура, ВТ_Заказы.Заказано ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ТоварыНаСкладахОстатки.Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток ПОМЕСТИТЬ Остатки ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ТекущаяДата, ) КАК ТоварыНаСкладахОстатки ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_ЗаказыСИтогом.Период КАК Период, ВТ_ЗаказыСИтогом.Номенклатура КАК Номенклатура, ЕСТЬNULL(Остатки.КоличествоОстаток, 0) - ВТ_ЗаказыСИтогом.НарстающийИтог КАК ОстанетсяНаСкладе ИЗ ВТ_ЗаказыСИтогом КАК ВТ_ЗаказыСИтогом ЛЕВОЕ СОЕДИНЕНИЕ Остатки КАК Остатки ПО ВТ_ЗаказыСИтогом.Номенклатура = Остатки.Номенклатура УПОРЯДОЧИТЬ ПО Номенклатура, Период |
|||
16
youalex
09.06.16
✎
01:59
|
(15) очень похоже, но только соединяться вроде должна таблица остатков Заказов (не остатковоборотов) - сама с собой по условию Ост1.ДокументЗаказа.ДатаОтгрузки >= Ост2.ДокументЗаказа.ДатаОтгрузки. В качестве периода - должен выступать (условно, хз какая там схема) этот реквизит, а не период движения. Движения, которого по условию задачи - еще нет.
|
|||
17
Fragster
гуру
09.06.16
✎
10:26
|
зачем все советуют сложный путь?
|
|||
18
bootini
09.06.16
✎
11:54
|
(16) Да, правильно, дату отгрузки надо тащить. Я даже не обратил внимания, по-быстрому запрос наваял, чтоб нарастающий итог работал.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |