|
Количество дней присутствия на остатке | ☑ | ||
---|---|---|---|---|
0
pv94384
21.07.11
✎
09:25
|
Как с помощью конструктора отчета определить количество дней присутствия товара на остатке? Т.е. допустим товар пришел 1го, а 2го его продали... потом этот же товар пришел 10го и 11го его снова продали... Таким образом на остатке он присутствовал 2 дна (1го и 10го)...
|
|||
1
Maxus43
21.07.11
✎
09:27
|
2-го и 11-го он тоже был на складе
|
|||
2
pv94384
21.07.11
✎
09:30
|
ну это палка о 2х концах... может они в 00:00:00 продали... Это не меняет сути дела... Это просто для примера было приведено... В тех отчетах, которые я находил подобные данные высчитываются по разнице последнего дня продажи товара и первого дня прихода...
|
|||
3
Maxus43
21.07.11
✎
09:32
|
(2) Ну так и надо по сути... надо анализировать обороты, и в одном запросе это тяжело помоему сделать
|
|||
4
Ненавижу 1С
гуру
21.07.11
✎
09:34
|
не знаю, поможет или нет, но могу поделиться запросом для универсального отчета УТ 10
ВЫБРАТЬ ВложенныйЗапрос.День, ВложенныйЗапрос.Номенклатура, СУММА(ВложенныйЗапрос.Количество) КАК Количество, ВложенныйЗапрос.ЭтоОстаток ПОМЕСТИТЬ Расходы ИЗ (ВЫБРАТЬ НАЧАЛОПЕРИОДА(&ДатаКонца, ДЕНЬ) КАК День, ТоварыНаСкладахОстатки.Номенклатура КАК Номенклатура, ТоварыНаСкладахОстатки.КоличествоОстаток КАК Количество, ИСТИНА КАК ЭтоОстаток ИЗ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон, {(Склад), (Номенклатура).* КАК Номенклатура}) КАК ТоварыНаСкладахОстатки ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ), ТоварыНаСкладахОбороты.Номенклатура, ТоварыНаСкладахОбороты.КоличествоРасход, ЛОЖЬ ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(&ДатаНач, &ДатаКон, Запись, {(Склад), (Номенклатура).* КАК Номенклатура}) КАК ТоварыНаСкладахОбороты ГДЕ ТоварыНаСкладахОбороты.КоличествоРасход > 0) КАК ВложенныйЗапрос СГРУППИРОВАТЬ ПО ВложенныйЗапрос.День, ВложенныйЗапрос.Номенклатура, ВложенныйЗапрос.ЭтоОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ) КАК День, ТоварыНаСкладахОбороты.Номенклатура, СУММА(ТоварыНаСкладахОбороты.КоличествоОборот) КАК Количество ПОМЕСТИТЬ Приходы ИЗ РегистрНакопления.ТоварыНаСкладах.Обороты(, &ДатаКон, Запись, {(Склад), (Номенклатура).* КАК Номенклатура}) КАК ТоварыНаСкладахОбороты ГДЕ ТоварыНаСкладахОбороты.КоличествоОборот > 0 СГРУППИРОВАТЬ ПО НАЧАЛОПЕРИОДА(ТоварыНаСкладахОбороты.Период, ДЕНЬ), ТоварыНаСкладахОбороты.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Расходы.День, Расходы.Номенклатура, Расходы.Количество, СУММА(Расходы1.Количество) КАК КоличествоНакопительно, Расходы.ЭтоОстаток ПОМЕСТИТЬ РасходыНакопительно ИЗ Расходы КАК Расходы ЛЕВОЕ СОЕДИНЕНИЕ Расходы КАК Расходы1 ПО Расходы.Номенклатура = Расходы1.Номенклатура И (Расходы.ЭтоОстаток И Расходы1.ЭтоОстаток ИЛИ (НЕ Расходы.ЭтоОстаток) И Расходы1.ЭтоОстаток ИЛИ (НЕ Расходы.ЭтоОстаток) И (НЕ Расходы1.ЭтоОстаток) И Расходы.День <= Расходы1.День) СГРУППИРОВАТЬ ПО Расходы.День, Расходы.Номенклатура, Расходы.Количество, Расходы.ЭтоОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Приходы.День, Приходы.Номенклатура, Приходы.Количество, СУММА(Приходы1.Количество) КАК КоличествоНакопительно ПОМЕСТИТЬ ПриходыНакопительно ИЗ Приходы КАК Приходы ЛЕВОЕ СОЕДИНЕНИЕ Приходы КАК Приходы1 ПО Приходы.Номенклатура = Приходы1.Номенклатура И Приходы.День <= Приходы1.День СГРУППИРОВАТЬ ПО Приходы.День, Приходы.Номенклатура, Приходы.Количество ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ СпрНоменклатура.Ссылка КАК Номенклатура, РасходыНакопительно.День КАК ДеньРасхода, ПриходыНакопительно.День КАК ДеньПрихода, РАЗНОСТЬДАТ(ПриходыНакопительно.День, РасходыНакопительно.День, ДЕНЬ) КАК РазностьДат, ВЫБОР КОГДА РасходыНакопительно.КоличествоНакопительно > ПриходыНакопительно.КоличествоНакопительно ТОГДА ПриходыНакопительно.КоличествоНакопительно ИНАЧЕ РасходыНакопительно.КоличествоНакопительно КОНЕЦ - ВЫБОР КОГДА РасходыНакопительно.КоличествоНакопительно - РасходыНакопительно.Количество < ПриходыНакопительно.КоличествоНакопительно - ПриходыНакопительно.Количество ТОГДА ПриходыНакопительно.КоличествоНакопительно - ПриходыНакопительно.Количество ИНАЧЕ РасходыНакопительно.КоличествоНакопительно - РасходыНакопительно.Количество КОНЕЦ КАК Количество, РасходыНакопительно.ЭтоОстаток ПОМЕСТИТЬ Итоговая ИЗ РасходыНакопительно КАК РасходыНакопительно ЛЕВОЕ СОЕДИНЕНИЕ ПриходыНакопительно КАК ПриходыНакопительно ПО РасходыНакопительно.Номенклатура = ПриходыНакопительно.Номенклатура И (РасходыНакопительно.КоличествоНакопительно > ПриходыНакопительно.КоличествоНакопительно - ПриходыНакопительно.Количество) И (РасходыНакопительно.КоличествоНакопительно - РасходыНакопительно.Количество < ПриходыНакопительно.КоличествоНакопительно) ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК СпрНоменклатура ПО РасходыНакопительно.Номенклатура = СпрНоменклатура.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Итоговая.Номенклатура, СУММА(Итоговая.РазностьДат * Итоговая.Количество) / СУММА(Итоговая.Количество) КАК СреднееДней, СУММА(Итоговая.Количество) КАК Количество ПОМЕСТИТЬ ИтоговаяСвернуто ИЗ Итоговая КАК Итоговая СГРУППИРОВАТЬ ПО Итоговая.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Итоговая.Номенклатура КАК Номенклатура0, Итоговая.ДеньРасхода, Итоговая.ДеньПрихода, Итоговая.РазностьДат КАК РазностьДат, Итоговая.ЭтоОстаток, Итоговая.Количество КАК Количество, ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА 0 ИНАЧЕ Итоговая.Количество КОНЕЦ КАК Оборот, ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА Итоговая.Количество ИНАЧЕ 0 КОНЕЦ КАК Остаток, ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК Резерв, ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА Итоговая.Количество ИНАЧЕ 0 КОНЕЦ - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) КАК Свободно, Итоговая.Количество * ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * КурсыВалютСрезПоследних.Курс КАК КоличествоСумма, ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА 0 ИНАЧЕ Итоговая.Количество КОНЕЦ * ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * КурсыВалютСрезПоследних.Курс КАК ОборотСумма, ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА Итоговая.Количество ИНАЧЕ 0 КОНЕЦ * ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * КурсыВалютСрезПоследних.Курс КАК ОстатокСумма, ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) * ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * КурсыВалютСрезПоследних.Курс КАК РезервСумма, (ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА Итоговая.Количество ИНАЧЕ 0 КОНЕЦ - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)) * ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * КурсыВалютСрезПоследних.Курс КАК СвободноСумма, ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент * КурсыВалютСрезПоследних.Курс КАК Цена {ВЫБРАТЬ Номенклатура0.*, ДеньРасхода, ДеньПрихода, РазностьДат, Количество, Оборот, Остаток, Резерв, Свободно, ЭтоОстаток, КоличествоСумма, ОборотСумма, ОстатокСумма, РезервСумма, СвободноСумма, Цена} ИЗ Итоговая КАК Итоговая ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИтоговаяСвернуто КАК ИтоговаяСвернуто ПО Итоговая.Номенклатура = ИтоговаяСвернуто.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаКон, {(Номенклатура).*, (Склад).*}) КАК ТоварыВРезервеНаСкладахОстатки ПО Итоговая.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, {(ТипЦен)}) КАК ЦеныНоменклатурыСрезПоследних ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаКон, ) КАК КурсыВалютСрезПоследних ПО ЦеныНоменклатурыСрезПоследних.Валюта = КурсыВалютСрезПоследних.Валюта ПО Итоговая.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура {ГДЕ Итоговая.Номенклатура.*, Итоговая.ДеньРасхода, Итоговая.ДеньПрихода, Итоговая.РазностьДат, Итоговая.Количество, ИтоговаяСвернуто.СреднееДней КАК СреднееЧислоДней, Итоговая.ЭтоОстаток, (ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА 0 ИНАЧЕ Итоговая.Количество КОНЕЦ) КАК Оборот, (ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА Итоговая.Количество ИНАЧЕ 0 КОНЕЦ) КАК Остаток, (ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)) КАК Резерв, (ВЫБОР КОГДА Итоговая.ЭтоОстаток ТОГДА Итоговая.Количество ИНАЧЕ 0 КОНЕЦ - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)) КАК Свободно, (ЦеныНоменклатурыСрезПоследних.Цена / ЦеныНоменклатурыСрезПоследних.ЕдиницаИзмерения.Коэффициент) КАК Цена} {УПОРЯДОЧИТЬ ПО Номенклатура0.*, РазностьДат, Количество, ИтоговаяСвернуто.СреднееДней, ДеньРасхода, ДеньПрихода, ЭтоОстаток, Оборот, Остаток, Резерв, Свободно, КоличествоСумма, ОборотСумма, ОстатокСумма, РезервСумма, СвободноСумма, Цена} ИТОГИ СУММА(РазностьДат * Количество) / СУММА(Количество) КАК РазностьДат, СУММА(Количество), СУММА(Оборот), СУММА(Остаток), ВЫБОР КОГДА Номенклатура0 ЕСТЬ NULL ТОГДА СУММА(Резерв) ИНАЧЕ МАКСИМУМ(Резерв) КОНЕЦ КАК Резерв, СУММА(Остаток) - ВЫБОР КОГДА Номенклатура0 ЕСТЬ NULL ТОГДА СУММА(Резерв) ИНАЧЕ МАКСИМУМ(Резерв) КОНЕЦ КАК Свободно, СУММА(КоличествоСумма), СУММА(ОборотСумма), СУММА(ОстатокСумма), ВЫБОР КОГДА Номенклатура0 ЕСТЬ NULL ТОГДА СУММА(РезервСумма) ИНАЧЕ МАКСИМУМ(РезервСумма) КОНЕЦ КАК РезервСумма, СУММА(ОстатокСумма) - ВЫБОР КОГДА Номенклатура0 ЕСТЬ NULL ТОГДА СУММА(РезервСумма) ИНАЧЕ МАКСИМУМ(РезервСумма) КОНЕЦ КАК СвободноСумма, СУММА(КоличествоСумма) / СУММА(Количество) КАК Цена ПО ОБЩИЕ, Номенклатура0 {ИТОГИ ПО Номенклатура0.*} |
|||
5
alex-pro
21.07.11
✎
09:39
|
Вполне реально, считаются обороты и группируются по дням.
|
|||
6
mzelensky
21.07.11
✎
09:41
|
вот что-то похожее от прошлого прогера осталось:
Запрос.Текст = "ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад, | СУММА(ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.Период = НАЧАЛОПЕРИОДА(&ДатаОкончания, ДЕНЬ) | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0 | ТОГДА ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток <= 0 | ТОГДА РАЗНОСТЬДАТ(ТоварыНаСкладахОстаткиИОбороты.ПредыдущийПериод, ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ) | ИНАЧЕ РАЗНОСТЬДАТ(ТоварыНаСкладахОстаткиИОбороты.ПредыдущийПериод, &ДатаОкончания, ДЕНЬ) + 1 | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток > 0 | ТОГДА РАЗНОСТЬДАТ(ТоварыНаСкладахОстаткиИОбороты.Период, &ДатаОкончания, ДЕНЬ) + 1 | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ | ИНАЧЕ ВЫБОР | КОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстатокПредыдущий > 0 | ТОГДА РАЗНОСТЬДАТ(ТоварыНаСкладахОстаткиИОбороты.ПредыдущийПериод, ТоварыНаСкладахОстаткиИОбороты.Период, ДЕНЬ) | ИНАЧЕ 0 | КОНЕЦ | КОНЕЦ) КАК КоличествоДней |ИЗ | (ВЫБРАТЬ | ТаблицаПредыдущиеПериоды.Номенклатура КАК Номенклатура, | ТаблицаПредыдущиеПериоды.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТаблицаПредыдущиеПериоды.Склад КАК Склад, | ТаблицаПредыдущиеПериоды.Период КАК Период, | ТаблицаПредыдущиеПериоды.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, | ТаблицаПредыдущиеПериоды.ПредыдущийПериод КАК ПредыдущийПериод, | ТоварыНаСкладахОстаткиИОборотыПредыдущие.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстатокПредыдущий | ИЗ | (ВЫБРАТЬ | ТоварыНаСкладахОстаткиИОбороты1.Номенклатура КАК Номенклатура, | ТоварыНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстаткиИОбороты1.Склад КАК Склад, | ТоварыНаСкладахОстаткиИОбороты1.Период КАК Период, | ТоварыНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток, | МАКСИМУМ(ТоварыНаСкладахОстаткиИОбороты2.Период) КАК ПредыдущийПериод | ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | &ДатаНачала, | &ДатаОкончания, | День, | , | Склад В (&СЗСклады) | И (НЕ Номенклатура В ИЕРАРХИИ (&СЗГруппы))) КАК ТоварыНаСкладахОстаткиИОбороты1 | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | &ДатаНачала, | &ДатаОкончания, | День, | , | Склад В (&СЗСклады) | И (НЕ Номенклатура В ИЕРАРХИИ (&СЗГруппы))) КАК ТоварыНаСкладахОстаткиИОбороты2 | ПО (ИСТИНА) | И ТоварыНаСкладахОстаткиИОбороты1.Номенклатура = ТоварыНаСкладахОстаткиИОбороты2.Номенклатура | И ТоварыНаСкладахОстаткиИОбороты1.Склад = ТоварыНаСкладахОстаткиИОбороты2.Склад | И ТоварыНаСкладахОстаткиИОбороты1.Период > ТоварыНаСкладахОстаткиИОбороты2.Период | | СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты1.Номенклатура, | ТоварыНаСкладахОстаткиИОбороты1.ХарактеристикаНоменклатуры, | ТоварыНаСкладахОстаткиИОбороты1.Склад, | ТоварыНаСкладахОстаткиИОбороты1.Период, | ТоварыНаСкладахОстаткиИОбороты1.КоличествоКонечныйОстаток) КАК ТаблицаПредыдущиеПериоды | ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | &ДатаНачала, | &ДатаОкончания, | День, | , | Склад В (&СЗСклады) | И (НЕ Номенклатура В ИЕРАРХИИ (&СЗГруппы))) КАК ТоварыНаСкладахОстаткиИОборотыПредыдущие | ПО (ИСТИНА) | И ТаблицаПредыдущиеПериоды.Номенклатура = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Номенклатура | И ТаблицаПредыдущиеПериоды.Склад = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Склад | И ТаблицаПредыдущиеПериоды.ПредыдущийПериод = ТоварыНаСкладахОстаткиИОборотыПредыдущие.Период) КАК ТоварыНаСкладахОстаткиИОбороты | |СГРУППИРОВАТЬ ПО | ТоварыНаСкладахОстаткиИОбороты.Номенклатура, | ТоварыНаСкладахОстаткиИОбороты.Склад |АВТОУПОРЯДОЧИВАНИЕ"; |
|||
7
Eugeneer
21.07.11
✎
09:45
|
В типовой рознице есть отчет в котором есть праивльный алгоритм. И очень кстати простой.
|
|||
8
pv94384
29.07.11
✎
12:25
|
А какой из отчетов?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |