|
Как рассчитать среднедневное потребление товара? | ☑ | ||
---|---|---|---|---|
0
Double_Medved
15.05.13
✎
10:11
|
Подскажите пожалуйста, УТ11, борюсь с параметрами обеспечения потребностей. Вообщем рассчитывается среднедневное потребление товара. Задается определенный период, например 3 дня. Было продано например 6 штук товара. Вроде бы среднее потребление - 2, но все не так просто. И тут начинается. Запрос для этого расчета в типовой конфигурации не много не мало листов на 8, у него штук 8 временных таблиц, там используются периоды и т.д. и он посчитает не 2 а 0,659. И как? Я начал в нем копаться и.. он берет не все дни в периоде, А ТОЛЬКО ТЕ У КОТОРЫХ НА КОНЕЦ ДНЯ ЕСТЬ ОСТАТОК НА СКЛАДЕ. Наверно это должно быть умно, но вот только например если мы в день продали весь товар, то остатка нет на конец дня и этот день не будет учитываться. И я думаю что это еще не все косяки... Подскажите, как логически верно считать среднедневное потребление?
|
|||
1
Double_Medved
15.05.13
✎
10:15
|
Можно ли написать вместо всего этого написать несколько строчек которые будут считать СреднедневноеПотребление = КоличествоПроданногоТовара / КоличествоРабочихДнейВПериодеРассчета ? Или в запросе на 8 листов есть какай-то хитрый и умный замысел?
|
|||
2
Maxus43
15.05.13
✎
10:15
|
как вам надо, так и считай, это управленческий учет, тут у каждого разные подходы
|
|||
3
Lama12
15.05.13
✎
10:18
|
(2)+1
(0) Среднедневных может быть сколько угодно. Вопрос - как их считать? |
|||
4
mikecool
15.05.13
✎
10:22
|
в ут 10.3 был отчет, который показывал среднедневное, по сути расчет сводился к суммированию остатка на начало периода, остатков на конец каждого отрезка и деленное на количество этих отрезков
|
|||
5
Фрэнки
15.05.13
✎
10:22
|
(0) логика запроса вряд ли может быть прокомментирована без детального разбора всех 8-ми листов, но это же лениво...
Навскидку - если в день с нулевым конечным остатком продано 1 штука, а при наличии свободного остатка продано 10 штук - какой вариант следует принимать в расчете? |
|||
6
Lama12
15.05.13
✎
10:24
|
(4) Забавно. :)
В одном периоде. На складе было 10. Поступило 50. На конец периода осталось 5. Среднее за период потребление - 5. :-D Мне нравятся такие расчеты. |
|||
7
Double_Medved
15.05.13
✎
10:28
|
Ну а как по идее надо? Может какая формула где есть в этом учете или еще что? Мне не надо за меня код написать, я просто не понимаю как рассчитывать по идее надо.
|
|||
8
Double_Medved
15.05.13
✎
10:29
|
Можно скопировать сюда конечно запрос, но в прошлый раз все обошли его стороной, и я решил не пугать народ. Мне бы знать как по идее надо рассчитывать.
|
|||
9
Double_Medved
15.05.13
✎
10:31
|
(5) день с нулевым остатком - это наверно когда типа после продажи осталось 0? нужно по идее учитывать все продажи, не важно сколько остатка осталось после них.
|
|||
10
Фрэнки
15.05.13
✎
10:32
|
(8) так я о том же, что лениво разбирать громоздкий код.
|
|||
11
Lama12
15.05.13
✎
10:35
|
(7) Это лучше спросить у заказчика.
Среднее можно считать Очень по разному. И ты правильно посчитаешь, а заказчик по своему считает. Форум тебе подскажет один, два, ну три варианта. Каждый из них будет верным. |
|||
12
Фрэнки
15.05.13
✎
10:36
|
(9) при недостаточном обеспечении учесть продажу в виде реального значения текущей потребности нельзя. Нужно вводить какой-то обобщающий признак, типа того, что был факт продажи вообще, при недостаточном обеспечении остатками, т.е. точного известного числа не даст.
з.ы. А ты про дефектуры в аптечных продажах слышал чего-то? |
|||
13
Double_Medved
15.05.13
✎
10:38
|
Вот запрос:
Запрос.Текст = "ВЫБРАТЬ | Товары.ИдентификаторСтроки КАК ИдентификаторСтроки, | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад |ПОМЕСТИТЬ ТоварыСреднедневногоПотребления |ИЗ | &ТаблицаОтбора КАК Товары |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Характеристика, | Склад |; | |//// //1. Для каждого склада получаем все склады для которых данный склад //является источником обеспечения по основному способу обеспечения //(факт продажи непосредственно с распределительного центра также учитываем). "ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад, | Товары.Склад КАК СкладПродаж, | ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Товары.Склад.Календарь) КАК Календарь |ПОМЕСТИТЬ ТоварыСоСкладамиПродаж |ИЗ | ТоварыСреднедневногоПотребления КАК Товары | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО Товары.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) |" + ?(НЕ УчитыватьВнутреннееТовародвижение, "", " | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад, | Способы.Склад КАК СкладПродаж, | ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Способы.Склад.Календарь) КАК Календарь |ИЗ | ТоварыСреднедневногоПотребления КАК Товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК Способы | ПО Способы.РеквизитДопУпорядочивания = 1 | И Товары.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И Товары.Склад = Способы.СпособОбеспеченияПотребностей.ИсточникОбеспеченияПотребностей | И Товары.Номенклатура = Способы.Номенклатура | И Товары.Характеристика = Способы.Характеристика | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО Способы.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад, | Способы.Склад КАК СкладПродаж, | ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Способы.Склад.Календарь) КАК Календарь |ИЗ | ТоварыСреднедневногоПотребления КАК Товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК Способы | ПО Способы.РеквизитДопУпорядочивания = 1 | И Способы.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И Товары.Склад = Способы.СпособОбеспеченияПотребностей.ИсточникОбеспеченияПотребностей | И Товары.Номенклатура = Способы.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК СпособыХарактеристика | ПО СпособыХарактеристика.РеквизитДопУпорядочивания = 1 | И Способы.Склад = СпособыХарактеристика.Склад | И Товары.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И Товары.Номенклатура = СпособыХарактеристика.Номенклатура | И Товары.Характеристика = СпособыХарактеристика.Характеристика | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО Способы.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) |ГДЕ | СпособыХарактеристика.Склад ЕСТЬ NULL | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад, | Способы.Склад КАК СкладПродаж, | ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Способы.Склад.Календарь) КАК Календарь |ИЗ | ТоварыСреднедневногоПотребления КАК Товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК Способы | ПО Способы.РеквизитДопУпорядочивания = 1 | И Способы.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И Способы.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И Товары.Склад = Способы.СпособОбеспеченияПотребностей.ИсточникОбеспеченияПотребностей | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК СпособыХарактеристика | ПО СпособыХарактеристика.РеквизитДопУпорядочивания = 1 | И Способы.Склад = СпособыХарактеристика.Склад | И Товары.Характеристика <> ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И Товары.Номенклатура = СпособыХарактеристика.Номенклатура | И Товары.Характеристика = СпособыХарактеристика.Характеристика | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК СпособыНоменклатура | ПО СпособыНоменклатура.РеквизитДопУпорядочивания = 1 | И СпособыХарактеристика.Склад ЕСТЬ NULL | И СпособыНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | И Способы.Склад = СпособыНоменклатура.Склад | И Товары.Номенклатура = СпособыНоменклатура.Номенклатура | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО Способы.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) |ГДЕ | СпособыХарактеристика.Склад ЕСТЬ NULL | И СпособыНоменклатура.Склад ЕСТЬ NULL") + " |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Характеристика, | СкладПродаж, | Календарь |; | //2. Для каждой номенклатуры получаем все комплекты в которые она входит, если комплект обеспечивается // на складе посредством сборки (по основному способу обеспечения). |///////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад, | Товары.СкладПродаж КАК СкладПродаж, | Товары.Календарь КАК Календарь, | Товары.Номенклатура КАК НоменклатураПродаж, | Товары.Характеристика КАК ХарактеристикаПродаж, | 1 КАК КоэффициентСборки |ПОМЕСТИТЬ ТоварыСНоменклатуройПродаж |ИЗ | ТоварыСоСкладамиПродаж КАК Товары |" + ?(НЕ УчитыватьСборкиТоваров, "", " | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | Товары.Склад КАК Склад, | Товары.СкладПродаж КАК СкладПродаж, | МАКСИМУМ(Товары.Календарь) КАК Календарь, | Комплектации.Ссылка.Владелец КАК НоменклатураПродаж, | Комплектации.Ссылка.Характеристика КАК ХарактеристикаПродаж, | СУММА(Комплектации.Количество) КАК КоэффициентСборки |ИЗ | ТоварыСоСкладамиПродаж КАК Товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.ВариантыКомплектацииНоменклатуры.Товары КАК Комплектации | ПО Товары.Номенклатура = Комплектации.Номенклатура | И Товары.Характеристика = Комплектации.Характеристика | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК НастройкаХарактеристика | ПО НастройкаХарактеристика.РеквизитДопУпорядочивания = 1 | И Комплектации.Ссылка.Владелец = НастройкаХарактеристика.Номенклатура | И Комплектации.Ссылка.Характеристика = НастройкаХарактеристика.Характеристика | И Товары.СкладПродаж = НастройкаХарактеристика.Склад | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК НастройкаНоменклатура | ПО НастройкаНоменклатура.РеквизитДопУпорядочивания = 1 | И НастройкаХарактеристика.Склад ЕСТЬ NULL | И Комплектации.Ссылка.Владелец = НастройкаНоменклатура.Номенклатура | И Товары.СкладПродаж = НастройкаНоменклатура.Склад | И НастройкаНоменклатура.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ВариантыОбеспеченияТоварами КАК НастройкаСклад | ПО НастройкаСклад.РеквизитДопУпорядочивания = 1 | И НастройкаХарактеристика.Склад ЕСТЬ NULL | И НастройкаНоменклатура.Склад ЕСТЬ NULL | И Товары.СкладПродаж = НастройкаСклад.Склад | И НастройкаСклад.Номенклатура = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) | И НастройкаСклад.Характеристика = ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | | ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СпособыОбеспеченияПотребностей КАК ОсновнойСпособ | ПО ЕСТЬNULL(НастройкаХарактеристика.СпособОбеспеченияПотребностей, | ЕСТЬNULL(НастройкаНоменклатура.СпособОбеспеченияПотребностей, | НастройкаСклад.СпособОбеспеченияПотребностей)) | = ОсновнойСпособ.Ссылка | |ГДЕ | Комплектации.Ссылка.Основной = ИСТИНА | И НЕ Комплектации.Ссылка.ПометкаУдаления | И ОсновнойСпособ.ТипОбеспечения = ЗНАЧЕНИЕ(Перечисление.ТипыОбеспечения.СборкаРазборка) | |СГРУППИРОВАТЬ ПО | Товары.Номенклатура, | Товары.Характеристика, | Товары.Склад, | Товары.СкладПродаж, | Комплектации.Ссылка.Владелец, | Комплектации.Ссылка.Характеристика") + " | |ИНДЕКСИРОВАТЬ ПО | НоменклатураПродаж, | ХарактеристикаПродаж, | СкладПродаж |; | //3. Получаем все рабочие дни в периоде расчета статистики (от начала периода по конец периода включительно). |///////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ГрафикБезКалендаря.ДатаГрафика КАК ДатаГрафика |ПОМЕСТИТЬ ГрафикБезКалендаря |ИЗ | &ГрафикБезКалендаря КАК ГрафикБезКалендаря |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ РАЗЛИЧНЫЕ | Товары.Календарь КАК Календарь, | График.ДатаГрафика КАК Дата |ПОМЕСТИТЬ ГрафикРаботыПоКалендарю |ИЗ | ТоварыСоСкладамиПродаж КАК Товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК График | ПО Товары.Календарь = График.Календарь | И График.ДеньВключенВГрафик | И ГОД(&ПериодКлассификацииДатаНачала) <= График.Год | И График.Год <= ГОД(&ПериодКлассификацииДатаОкончания) | И &ПериодКлассификацииДатаНачала <= График.ДатаГрафика | И График.ДатаГрафика <= &ПериодКлассификацииДатаОкончания | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) КАК Календарь, | ГрафикБезКалендаря.ДатаГрафика КАК Дата |ИЗ | ГрафикБезКалендаря КАК ГрафикБезКалендаря | |ИНДЕКСИРОВАТЬ ПО | Календарь, | Дата |; | //4. Для каждого дня, в котором было движение товара по складу, определяем //были ли остатки в начале и в конце дня или только в конце дня. |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Остатки.Склад КАК Склад, | Остатки.Номенклатура КАК Номенклатура, | Остатки.Характеристика КАК Характеристика, | НачалоПериода(Остатки.Период, ДЕНЬ) КАК Дата, | ВЫБОР | КОГДА Остатки.ВНаличииНачальныйОстаток > 0 И Остатки.ВНаличииКонечныйОстаток > 0 ТОГДА | ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ЕстьОстатки, | ВЫБОР | КОГДА Остатки.ВНаличииКонечныйОстаток > 0 ТОГДА | ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ЕстьКонечныйОстаток |ПОМЕСТИТЬ ОстаткиТовараПоДням |ИЗ | РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( | &ПериодКлассификацииДатаНачала, | &ПериодКлассификацииДатаОкончания, | ДЕНЬ, | ДвиженияИГраницыПериода, | (Номенклатура, Характеристика, Склад) В( | ВЫБРАТЬ | Товары.НоменклатураПродаж КАК Номенклатура, | Товары.ХарактеристикаПродаж КАК Характеристика, | Товары.СкладПродаж КАК Склад | ИЗ | ТоварыСНоменклатуройПродаж КАК Товары)) КАК Остатки |ГДЕ | Остатки.Период < &ПериодКлассификацииДатаОкончания |ИНДЕКСИРОВАТЬ ПО | Склад, | Номенклатура, | Характеристика, | Дата, | ЕстьОстатки, | ЕстьКонечныйОстаток |; | //5. Получаем обороты выручки по дням в периоде расчета статистики. |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Выручка.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, | ВЫБОР | КОГДА &ИспользоватьХарактеристикиНоменклатуры ТОГДА | Выручка.АналитикаУчетаНоменклатуры.Характеристика | ИНАЧЕ | ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) | КОНЕЦ КАК Характеристика, | Выручка.АналитикаУчетаНоменклатуры.Склад КАК Склад, | Выручка.КоличествоОборот КАК Количество, | НАЧАЛОПЕРИОДА(Выручка.Период, ДЕНЬ) КАК Дата |ПОМЕСТИТЬ ВыручкаПоДням |ИЗ | РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты( | &ПериодКлассификацииДатаНачала, | &ПериодКлассификацииДатаОкончания, | ДЕНЬ, | ( | АналитикаУчетаНоменклатуры.Номенклатура, | АналитикаУчетаНоменклатуры.Характеристика, | АналитикаУчетаНоменклатуры.Склад) | В ( | ВЫБРАТЬ | Товары.НоменклатураПродаж КАК Номенклатура, | Товары.ХарактеристикаПродаж КАК Характеристика, | Товары.СкладПродаж КАК Склад | ИЗ | ТоварыСНоменклатуройПродаж КАК Товары)) КАК Выручка |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Характеристика, | Склад, | Дата |; | |//////////////////////////////////////////////////////////////////////////////// //6. Принимаем выручку к расчету среднедневного только, если она была в рабочий день и в этот день не было пробоя остатка //(движение по складу в этот день быть обязано, из него и берем признак наличия остатков на начало и конец дня получения выручки). |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Выручка.Номенклатура КАК Номенклатура, | Выручка.Характеристика КАК Характеристика, | Выручка.Склад КАК Склад, | СУММА(ВЫБОР | КОГДА Остатки.ЕстьОстатки ТОГДА | Выручка.Количество | ИНАЧЕ | 0 | КОНЕЦ) КАК Количество, | СУММА(ВЫБОР | КОГДА Остатки.ЕстьОстатки ТОГДА | Выручка.Количество * Выручка.Количество | ИНАЧЕ | 0 | КОНЕЦ) КАК КвадратКоличества |ПОМЕСТИТЬ Продажи |ИЗ | ВыручкаПоДням КАК Выручка | ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы | ПО Выручка.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГрафикРаботыПоКалендарю КАК РабочиеДни | ПО ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Выручка.Склад.Календарь) = РабочиеДни.Календарь | И Выручка.Дата = РабочиеДни.Дата | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТовараПоДням КАК Остатки | ПО Выручка.Дата = Остатки.Дата | И Выручка.Номенклатура = Остатки.Номенклатура | И Выручка.Характеристика = Остатки.Характеристика | И Выручка.Склад = Остатки.Склад |СГРУППИРОВАТЬ ПО | Выручка.Номенклатура, | Выручка.Характеристика, | Выручка.Склад |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Характеристика, | Склад |; | //7. Для каждого рабочего дня склада определяем дату в которую сформирован актуальный остаток этого дня. |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Товары.НоменклатураПродаж КАК Номенклатура, | Товары.ХарактеристикаПродаж КАК Характеристика, | Товары.СкладПродаж КАК Склад, | МАКСИМУМ(Остатки.Дата) КАК Дата, | ВЫБОР | КОГДА МАКСИМУМ(Остатки.Дата) = РабочиеДни.Дата ТОГДА | ИСТИНА | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ОстатокДеньВДень |ПОМЕСТИТЬ ДатыОстатка |ИЗ | ТоварыСНоменклатуройПродаж КАК Товары | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГрафикРаботыПоКалендарю КАК РабочиеДни | ПО Товары.Календарь = РабочиеДни.Календарь | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТовараПоДням КАК Остатки | ПО РабочиеДни.Дата >= Остатки.Дата | И Товары.НоменклатураПродаж = Остатки.Номенклатура | И Товары.ХарактеристикаПродаж = Остатки.Характеристика | И Товары.СкладПродаж = Остатки.Склад |СГРУППИРОВАТЬ ПО | Товары.НоменклатураПродаж, | Товары.ХарактеристикаПродаж, | Товары.СкладПродаж, | РабочиеДни.Дата |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Характеристика, | Склад, | Дата, | ОстатокДеньВДень |; | //8. Определяем количество дней, в которые был остаток товара на складе. |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ДатыОстатка.Номенклатура КАК Номенклатура, | ДатыОстатка.Характеристика КАК Характеристика, | ДатыОстатка.Склад КАК Склад, | КОЛИЧЕСТВО(*) КАК ЧислоДней |ПОМЕСТИТЬ ВсегоДнейКУчету |ИЗ | ДатыОстатка КАК ДатыОстатка | ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТовараПоДням КАК Остатки | ПО ДатыОстатка.Дата = Остатки.Дата | И ДатыОстатка.Номенклатура = Остатки.Номенклатура | И ДатыОстатка.Характеристика = Остатки.Характеристика | И ДатыОстатка.Склад = Остатки.Склад |ГДЕ | ДатыОстатка.ОстатокДеньВДень И Остатки.ЕстьОстатки | ИЛИ НЕ ДатыОстатка.ОстатокДеньВДень И Остатки.ЕстьКонечныйОстаток |СГРУППИРОВАТЬ ПО | ДатыОстатка.Номенклатура, | ДатыОстатка.Характеристика, | ДатыОстатка.Склад |ИНДЕКСИРОВАТЬ ПО | Номенклатура, | Характеристика, | Склад |; | //9 Получаем итоговые статистические показатели по распределительному центру, рассчитываем признак стабильности потребления. |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | НаборДанных.Склад КАК Склад, | НаборДанных.Номенклатура КАК Номенклатура, | НаборДанных.Характеристика КАК Характеристика, | НаборДанных.ДисперсияПотребления КАК ДисперсияПотребления, | ВЫБОР | КОГДА НаборДанных.ВсегоДнейРаспредЦентра > 0 ТОГДА | НаборДанных.ПродажиВсего / НаборДанных.ВсегоДнейРаспредЦентра | ИНАЧЕ | 0 | КОНЕЦ КАК СреднедневноеПотребление, | ВЫБОР | КОГДА НаборДанных.ПродажиВсего > 0 И ДисперсияПотребления | / НаборДанных.ПродажиВсего * НаборДанных.ВсегоДнейРаспредЦентра | / НаборДанных.ПродажиВсего * НаборДанных.ВсегоДнейРаспредЦентра | < 0.0025 | ТОГДА | ИСТИНА //Квадратичное отклонение менее 5% от дневного потребления | ИНАЧЕ | ЛОЖЬ | КОНЕЦ КАК ПотреблениеСтабильно | ПОМЕСТИТЬ СтатистикаПотребления |ИЗ | (ВЫБРАТЬ | Товары.Склад КАК Склад, | Товары.Номенклатура КАК Номенклатура, | Товары.Характеристика КАК Характеристика, | СУММА(ВЫБОР | КОГДА ВсегоДнейКУчету.ЧислоДней > 1 ТОГДА | ВЫРАЗИТЬ(Товары.КоэффициентСборки * Товары.КоэффициентСборки | * Продажи.КвадратКоличества / (ВсегоДнейКУчету.ЧислоДней - 1) КАК ЧИСЛО(15, 3)) | - ВЫРАЗИТЬ( Товары.КоэффициентСборки * Продажи.Количество / (ВсегоДнейКУчету.ЧислоДней - 1) | * Товары.КоэффициентСборки * Продажи.Количество / ВсегоДнейКУчету.ЧислоДней КАК ЧИСЛО(15, 3)) | ИНАЧЕ | 0 | КОНЕЦ) КАК ДисперсияПотребления, | СУММА(ЕСТЬNULL(Товары.КоэффициентСборки * Продажи.Количество, 0)) КАК ПродажиВсего, | МАКСИМУМ(ВЫБОР | КОГДА Товары.Склад = Товары.СкладПродаж ТОГДА | ВсегоДнейКУчету.ЧислоДней | ИНАЧЕ | |
|||
14
Фрэнки
15.05.13
✎
10:39
|
12+ Дефектуру тоже регистрируют, иначе вообще не возможно узнать о потребностях в товаре, которого в наличии просто нет.
|
|||
15
mikecool
15.05.13
✎
10:40
|
(6) посчитай в разрезе дней и явно получишь другую цифру, не передергивай - посмотри как типовой отчет считает
|
|||
16
Double_Medved
15.05.13
✎
10:40
|
(14) про то чего там просто нет - это я уже прикрутил отдельную штуку. Если типа вообще 0 и по среднему потреблению не заказано то типа закажем одну штуку. Мне нужно именно узнать алгоритм расчета среднего потребления
|
|||
17
mikecool
15.05.13
✎
10:41
|
+15 в нете находил решение этого же самого, но запросом, почему 1сники не додумались до этого - хз, ибо в отчете решается все перебором
|
|||
18
Базис
naïve
15.05.13
✎
10:42
|
Среднедневная продажа = Продажи/Дни. Продажи неизменны при любой методике подсчёта. Дней может быть меньше, но никак не больше, то есть "хитрый" расчёт может давать результат больше, чем "в лоб". Как и почему их монстроидальный запрос получает среднедневную меньше, я не понимаю.
(13) Ну и кто будет читать эту простыню? Я в ответ могу прислать 26-экранный запрос. |
|||
19
Double_Medved
15.05.13
✎
10:45
|
(18) я про то же, я понимаю что никто не будет разбирать 8-экранный запрос
|
|||
20
Double_Medved
15.05.13
✎
10:46
|
(18) а меньше он получает потому что не учитывает продажи в тот день когда остатка стало 0. И может быть это не единственная проблема
|
|||
21
Фрэнки
15.05.13
✎
10:46
|
(18) да там в комментах пояснено как пробрасывают продажи, поэтому и средневная занижена, потому что части продаж и выручки просто не учитывают.
(19) Т.е. самое простое уточнение - если они не учитывают продажи товара в каком-то дне, то этот же день нужно исключить из расчета среднедневной продажи. Иначе делитель прежний, а делимое занижено |
|||
22
Фрэнки
15.05.13
✎
10:48
|
21+ тогда нужно вообще все дни с нулевым конечным остатком убирать из таблицы.
|
|||
23
Double_Medved
15.05.13
✎
10:51
|
(21) вообщем мне нужно учитывать все продажи, вне зависимости сколько там было остатка. А делить на какое количество дней правильно я точно не знаю. Например период расчета - 3 дня. В один из них продали 3 штуки и все.Можно:
1)Взять только дни когда были продажи. будет 3/1 = 3 2)Взять все рабочие дни в расчете. будет 3/3 = 1 |
|||
24
Фрэнки
15.05.13
✎
10:55
|
22+ А потом возникнет ситуация, когда расчет потребности окажется достоверно точным и всегда на конец дня будем выходить в ноль - что тогда считать?!
Кстати, получается, что целью расчета в этом запросе является значение достаточных запасов, предварительных для продаж на следующий день. (23) Циклы продаж нужно измерять не днями, а какими-то другими, более адекватными периодами, именно с точки зрения нормирования складских запасов. |
|||
25
Mikeware
15.05.13
✎
10:55
|
(23) а можно выкинуть выходные. а можно не выкидывать.
а можно выкидывать когда товара на остатках не было ни на начало, ни на конец. а можно и не выкидывать... и т.д. |
|||
26
Double_Medved
15.05.13
✎
10:57
|
А потом возникнет ситуация, когда расчет потребности окажется достоверно точным и всегда на конец дня будем выходить в ноль - что тогда считать?!
Я что-то этого не понял. Какая разница сколько остатка на конец дня? Продали 3 штуки, ну осталось 0, но 3 же продали. И по идее их надо бы учесть в среднедневном потреблении. |
|||
27
Double_Medved
15.05.13
✎
10:59
|
а можно выкидывать когда товара на остатках не было ни на начало, ни на конец. а можно и не выкидывать...
Ох блин, точно. Что с такими днями делать.. А вот если там в обед пришел товар а к ужину его продали? На начало и конец дня товара как бы не будет а продажи будут |
|||
28
Базис
naïve
15.05.13
✎
11:01
|
Более точно - фиксировать часы продажи, наверное. Но это надо делать, если розница, при закрытии кассовой смены.
|
|||
29
Double_Medved
15.05.13
✎
11:01
|
Просто изначально жаловались что высчитывает слишком низкое потребление. Что в реальности продается больше, чем он высчитывает. И типа разбирайся
|
|||
30
Double_Medved
15.05.13
✎
11:03
|
Предположим что период неделя. В один день продали 3 штуку и в другой 3 штуки. Получилось что за 2 дня продали 4 штуки. И при этом получилось что за неделю тоже продали 4 штуки
|
|||
31
Double_Medved
15.05.13
✎
11:04
|
блин что с этим делать
|
|||
32
Double_Medved
15.05.13
✎
11:04
|
ой блин не так
|
|||
33
Double_Medved
15.05.13
✎
11:04
|
Предположим что период неделя. В один день продали 1 штуку и в другой 3 штуки. Получилось что за 2 дня продали 4 штуки. И при этом получилось что за неделю тоже продали 4 штуки
|
|||
34
Double_Medved
15.05.13
✎
11:04
|
вот так
|
|||
35
Фрэнки
15.05.13
✎
11:16
|
по поводу нуля на конец дня - поступление товара происходит ежедневно?
|
|||
36
Double_Medved
15.05.13
✎
11:19
|
(35) нет, не ежедневно, как когда
|
|||
37
Double_Medved
15.05.13
✎
11:19
|
точного графика нет
|
|||
38
Фрэнки
15.05.13
✎
11:25
|
условно, если происходит поставка товара, то можно рассматривать два крайних случая:
- пополнение остатка взамен продажи - расчет новой нормы запаса по динамике продаж и поставка согласно этому расчету. Имхо, применение расчета из типовой УТ11 - это второй случай, когда поставки первым способом никто не отменил. В идеале можно говорить также о разной оборачиваемости номенклатуры и использовании разных алгоритмов расчета норм запасов, в зависимости от принадлежности номенклатуры к этим разным категориям по оборачиваемости. |
|||
39
Фрэнки
15.05.13
✎
11:35
|
В условии низкой оборачиваемости возникнет ситуация, когда временное отсутствие товара даст полное исчезновение спроса - потенциальный покупатель просто перестанет заходить. Если восстановление товарного запаса из группы с низкой оборачиваемостью реально делать сразу по факту регистрации продажи на кассе, тогда риски затоваривания этим всем перекладываются из торгового зала на поставщиков и все. Т.е. вам будет достаточно отфильтровать номенклатуры в разные категории и задавать разные графики поставок, согласно принадлежности к категории и способу расчета нормы запасов.
|
|||
40
Bigbro
15.05.13
✎
11:44
|
имхо.
если автор начальник отдела сбыта гнать метлой. если нет - задать вопрос как должен рассчитываться потребность начальнику отдела сбыта. предложить ему приведенные тут варианты например, пусть примет СВОЕ решение. исключаются из запроса дни с нулем в остатке на конец дня вполне разумно - если в среднем продажи исчисляются сотнями в день и в какой то день было продано пара единиц товара и остаток стал ноль - этот день сильно исказит результат, если его включать в расчет. кстати дни в которые было ноль на начало (или произвольный момент в средине) дня тоже должны по идее исключаться, но дни когда продаж не было но остаток был и технически возможость купить товар была - должны включаться (это к примеру с 2 продажами в неделю). |
|||
41
Фрэнки
15.05.13
✎
11:45
|
(37) а стратегия продаж на чем построена? насколько близка ваша розница к FMCG? А может быть у вас и не розница вовсе?
|
|||
42
Фрэнки
15.05.13
✎
11:50
|
(40) Имхо, у 1С-ника может просто не хватить кармы для продавливания в мозг руководства идей с изгнанием бесов :)
Но отрабатывать свою з/п по заданию руководства как-то приходится. Вот и пришел он к нам за дружеским советом. |
|||
43
Bigbro
15.05.13
✎
11:56
|
посмотрел запрос по диагонали - судя по комментариям вроде как все логично делается. единственный вопрос насчет учета дней с отсутствующим движением - они вроде не учитываются, я бы их учел.
ну и расчет стабильности потребления - там уже чистая статистика, надо принять решение какие отклонения приемлемы для использования авторасчета потребения по данному товару. если отклонения стабильно большие при различных выборах периода продаж для расчета и сдвига начальной даты - то по среднему потреблению авторасчет будет неприменим, придется использовать другие алгоритмы или вообще жестко заданные цифры. |
|||
44
Lama12
15.05.13
✎
13:34
|
Double_Medved
Что заказчик то говорит? Как ему среднее считать? Ты сам уже привел 2 варианта расчета. |
|||
45
Double_Medved
15.05.13
✎
14:02
|
Заказчик не знает как рассчитывать, им главное чтобы "рассчитанного реально хватало, но и избытка не было". Продают бытовую химию, номенклатуры очень много и продажи по каждой конкретной относительно небольшие и нестабильные. Могут в день купить 2 шт, потом не купить, потом купить одну, потом неделю не покупать и потом купить 10.
|
|||
46
Double_Medved
15.05.13
✎
14:03
|
С приставанием по поводу того как рассчитывать относятся так что типа а что ты сам не знаешь, откуда ж нам знать. Нам главное чтобы все было правильно и хорошо.
|
|||
47
Double_Medved
15.05.13
✎
14:05
|
(41) стратегии продаж никакой конкретной нет. Ну сделать там вроде рекламу, но подешевле. И еще есть накопительные скидочные карты.
|
|||
48
Double_Medved
15.05.13
✎
14:07
|
А вот чем уж прям неправильно будет если я возьму продажи за период и поделю на количество дней в периоде? Среднее арифметическое будет, чем уж это так неправильно?
|
|||
49
MSII
15.05.13
✎
14:09
|
(48) Если разделишь на количество рабочих дней в периоде, когда остаток товара был > 0, тогда будет правильно.
|
|||
50
Lama12
15.05.13
✎
14:37
|
(46) Эх... как сдавать работу то будешь?
Вот не хватит по твоим расчетам им товара и кто виноват будет? Бери любой алгоритм и пусть они утверждают его. |
|||
51
Double_Medved
15.05.13
✎
14:42
|
(50) Да, ты прав на 100%. Надо чтобы утвердили что-нибудь, а потом это делать.
|
|||
52
Фрэнки
16.05.13
✎
00:30
|
(50) Как можно узнать о том, чего в наличии просто нет? Ну по суди об этом сам: если регистрации дефектуры нет, то узнать существующим запросом о потребности в товарах которых на остатке физически нет просто нечем.
(48) Запрос как раз и содержит "ошибку" в том, что число дней периода берется общее, а продажи оставляются только от тех дней, когда конечные остатки ненулевые. Я уже предлагал выше свою версию. Суть ее в том, что расчет потребности для восстановления нормы запасов надо вести только по позициям с постоянным ненулевым остатком. Т.е. будут получены более точные рекомендуемые значения - оптимизация от избыточных запасов. Когда же запасы наоборот недостаточны, то такой расчет абсолютно недостоверен. Критерий недостаточности - отсутствие свободного остатка более чем на установленный период. Это может быть один день. А может быть и рабочая неделя, которую на каждый отдельный день делить толку нет. Кстати, закупка бытовой химии розничным покупателем идет впрок. Если в недели всего два рабочих дня (а это было перед майскими праздниками). то именно за два дня нуждающиеся в бытовой химии граждане пополнили свои домашние запасы, чтоб без проблем пережить праздники. Но пополнили только те, кто оставался праздновать дома, а не уехали на заграничные курорты. |
|||
53
Reaper_1c
16.05.13
✎
01:24
|
(52) Можно подумать этот запрос - единственное средство для управления запасами. Если товар уходит в нули - этот запрос вообще не нужен. Потребление и так превышает текущие закупки, а данных о спросе нет. Тут вывод тупой - увеличивать закупки пока не появится стабильный остаток. Да и вообще среднедневное потребление смысла не имеет. Если управляем запасами с точностью до дня - значит имеем высокую оборачиваемость. А это практически всегда неоднородное распределение по дням недели. Опять же, ограничений по объемам склада/поставок, частоте и срокам удовлетворения заказов поставщикам автор не называет. Для того, чтобы завести адекватное управление запасами нужно крепко думать вместе с продаванами/снабженцами. И не один день.
|
|||
54
Фрэнки
16.05.13
✎
09:28
|
(53) так я же об этом и толкую автору темы, что зря они для решения задачи о выстраивании стратегии продаж к запросу на среднедневную потребность прицепились
|
|||
55
Frost616
16.05.13
✎
09:31
|
Похоже я еще не проснулся, прочитал тему:
"Как рассчитать средневековое потребление товара?" |
|||
56
Sensodin
16.05.13
✎
09:47
|
(0)истина где-то там http://1c-wiki.ru/wiki/Ежедневные_остатки
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |