|
УТ11 обеспечение потребностей | ☑ | ||
---|---|---|---|---|
0
Double_Medved
14.05.13
✎
15:20
|
Подскажите, кто-то пользовался системой формирования закупок в УТ11? задача в общем у нее стоит простая довольно - для начала нужно рассчитать среднедневное потребления товара (рассчитывается для каждой номенклатуры и каждого склада и задается период расчета, например 5 дней). И она что-то высчитывает. Вообщем за 5 дней продано 12 штук товара, она рассчитывает - среднее - 0,6! и вот как это так? полез искать какой там запрос и... нашел вооот такой запрос:
ВЫБРАТЬ Товары.ИдентификаторСтроки КАК ИдентификаторСтроки, Товары.Номенклатура КАК Номенклатура, Товары.Характеристика КАК Характеристика, Товары.Склад КАК Склад ПОМЕСТИТЬ ТоварыСреднедневногоПотребления ИЗ &ТаблицаОтбора КАК Товары ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, Склад ; ///////////////////////////////////////////////////////////// ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, Товары.Характеристика КАК Характеристика, Товары.Склад КАК Склад, Товары.Склад КАК СкладПродаж, ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Товары.Склад.Календарь) КАК Календарь ПОМЕСТИТЬ ТоварыСоСкладамиПродаж ИЗ ТоварыСреднедневногоПотребления КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы ПО Товары.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, СкладПродаж, Календарь ; ВЫБРАТЬ ГрафикБезКалендаря.ДатаГрафика КАК ДатаГрафика ПОМЕСТИТЬ ГрафикБезКалендаря ИЗ &ГрафикБезКалендаря КАК ГрафикБезКалендаря ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ Товары.Календарь КАК Календарь, График.ДатаГрафика КАК Дата ПОМЕСТИТЬ ГрафикРаботыПоКалендарю ИЗ ТоварыСоСкладамиПродаж КАК Товары ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.КалендарныеГрафики КАК График ПО Товары.Календарь = График.Календарь И График.ДеньВключенВГрафик И ГОД(&ПериодКлассификацииДатаНачала) <= График.Год И График.Год <= ГОД(&ПериодКлассификацииДатаОкончания) И &ПериодКлассификацииДатаНачала <= График.ДатаГрафика И График.ДатаГрафика <= &ПериодКлассификацииДатаОкончания ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) КАК Календарь, ГрафикБезКалендаря.ДатаГрафика КАК Дата ИЗ ГрафикБезКалендаря КАК ГрафикБезКалендаря ИНДЕКСИРОВАТЬ ПО Календарь, Дата ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Остатки.Склад КАК Склад, Остатки.Номенклатура КАК Номенклатура, Остатки.Характеристика КАК Характеристика, НачалоПериода(Остатки.Период, ДЕНЬ) КАК Дата, ВЫБОР КОГДА Остатки.ВНаличииНачальныйОстаток > 0 И Остатки.ВНаличииКонечныйОстаток > 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЕстьОстатки, ВЫБОР КОГДА Остатки.ВНаличииКонечныйОстаток > 0 ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ЕстьКонечныйОстаток ПОМЕСТИТЬ ОстаткиТовараПоДням ИЗ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты( &ПериодКлассификацииДатаНачала, &ПериодКлассификацииДатаОкончания, ДЕНЬ, ДвиженияИГраницыПериода, (Номенклатура, Характеристика, Склад) В( ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, Товары.Характеристика КАК Характеристика, Товары.СкладПродаж КАК Склад ИЗ ТоварыСоСкладамиПродаж КАК Товары)) КАК Остатки ГДЕ Остатки.Период < &ПериодКлассификацииДатаОкончания ИНДЕКСИРОВАТЬ ПО Склад, Номенклатура, Характеристика, Дата, ЕстьОстатки, ЕстьКонечныйОстаток ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Выручка.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ВЫБОР КОГДА &ИспользоватьХарактеристикиНоменклатуры ТОГДА Выручка.АналитикаУчетаНоменклатуры.Характеристика ИНАЧЕ ЗНАЧЕНИЕ(Справочник.ХарактеристикиНоменклатуры.ПустаяСсылка) КОНЕЦ КАК Характеристика, Выручка.АналитикаУчетаНоменклатуры.Склад КАК Склад, Выручка.КоличествоОборот КАК Количество, НАЧАЛОПЕРИОДА(Выручка.Период, ДЕНЬ) КАК Дата ПОМЕСТИТЬ ВыручкаПоДням ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж.Обороты( &ПериодКлассификацииДатаНачала, &ПериодКлассификацииДатаОкончания, ДЕНЬ, ( АналитикаУчетаНоменклатуры.Номенклатура, АналитикаУчетаНоменклатуры.Характеристика, АналитикаУчетаНоменклатуры.Склад) В ( ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, Товары.Характеристика КАК Характеристика, Товары.СкладПродаж КАК Склад ИЗ ТоварыСоСкладамиПродаж КАК Товары)) КАК Выручка ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, Склад, Дата ; //////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Выручка.Номенклатура КАК Номенклатура, Выручка.Характеристика КАК Характеристика, Выручка.Склад КАК Склад, СУММА(ВЫБОР КОГДА Остатки.ЕстьОстатки ТОГДА Выручка.Количество ИНАЧЕ 0 КОНЕЦ) КАК Количество, СУММА(ВЫБОР КОГДА Остатки.ЕстьОстатки ТОГДА Выручка.Количество * Выручка.Количество ИНАЧЕ 0 КОНЕЦ) КАК КвадратКоличества ПОМЕСТИТЬ Продажи ИЗ ВыручкаПоДням КАК Выручка ЛЕВОЕ СОЕДИНЕНИЕ Константы КАК Константы ПО Выручка.Склад.Календарь = ЗНАЧЕНИЕ(Справочник.Календари.ПустаяСсылка) ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГрафикРаботыПоКалендарю КАК РабочиеДни ПО ЕСТЬNULL(Константы.ОсновнойКалендарьПредприятия, Выручка.Склад.Календарь) = РабочиеДни.Календарь И Выручка.Дата = РабочиеДни.Дата ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТовараПоДням КАК Остатки ПО Выручка.Дата = Остатки.Дата И Выручка.Номенклатура = Остатки.Номенклатура И Выручка.Характеристика = Остатки.Характеристика И Выручка.Склад = Остатки.Склад СГРУППИРОВАТЬ ПО Выручка.Номенклатура, Выручка.Характеристика, Выручка.Склад ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Товары.Номенклатура КАК Номенклатура, Товары.Характеристика КАК Характеристика, Товары.СкладПродаж КАК Склад, МАКСИМУМ(Остатки.Дата) КАК Дата, ВЫБОР КОГДА МАКСИМУМ(Остатки.Дата) = РабочиеДни.Дата ТОГДА ИСТИНА ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ОстатокДеньВДень ПОМЕСТИТЬ ДатыОстатка ИЗ ТоварыСоСкладамиПродаж КАК Товары ВНУТРЕННЕЕ СОЕДИНЕНИЕ ГрафикРаботыПоКалендарю КАК РабочиеДни ПО Товары.Календарь = РабочиеДни.Календарь ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТовараПоДням КАК Остатки ПО РабочиеДни.Дата >= Остатки.Дата И Товары.Номенклатура = Остатки.Номенклатура И Товары.Характеристика = Остатки.Характеристика И Товары.СкладПродаж = Остатки.Склад СГРУППИРОВАТЬ ПО Товары.Номенклатура, Товары.Характеристика, Товары.СкладПродаж, РабочиеДни.Дата ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, Склад, Дата, ОстатокДеньВДень ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ДатыОстатка.Номенклатура КАК Номенклатура, ДатыОстатка.Характеристика КАК Характеристика, ДатыОстатка.Склад КАК Склад, КОЛИЧЕСТВО(*) КАК ЧислоДней ПОМЕСТИТЬ ВсегоДнейКУчету ИЗ ДатыОстатка КАК ДатыОстатка ВНУТРЕННЕЕ СОЕДИНЕНИЕ ОстаткиТовараПоДням КАК Остатки ПО ДатыОстатка.Дата = Остатки.Дата И ДатыОстатка.Номенклатура = Остатки.Номенклатура И ДатыОстатка.Характеристика = Остатки.Характеристика И ДатыОстатка.Склад = Остатки.Склад ГДЕ ДатыОстатка.ОстатокДеньВДень И Остатки.ЕстьОстатки ИЛИ НЕ ДатыОстатка.ОстатокДеньВДень И Остатки.ЕстьКонечныйОстаток СГРУППИРОВАТЬ ПО ДатыОстатка.Номенклатура, ДатыОстатка.Характеристика, ДатыОстатка.Склад ИНДЕКСИРОВАТЬ ПО Номенклатура, Характеристика, Склад ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ НаборДанных.Склад КАК Склад, НаборДанных.Номенклатура КАК Номенклатура, НаборДанных.Характеристика КАК Характеристика, НаборДанных.ДисперсияПотребления КАК ДисперсияПотребления, ВЫБОР КОГДА НаборДанных.ВсегоДнейРаспредЦентра > 0 ТОГДА НаборДанных.ПродажиВсего / НаборДанных.ВсегоДнейРаспредЦентра ИНАЧЕ 0 КОНЕЦ КАК СреднедневноеПотребление, ВЫБОР КОГДА НаборДанных.ПродажиВсего > 0 И ДисперсияПотребления / НаборДанных.ПродажиВсего * НаборДанных.ВсегоДнейРаспредЦентра / НаборДанных.ПродажиВсего * НаборДанных.ВсегоДнейРаспредЦентра < 0.0025 ТОГДА ИСТИНА //Квадратичное отклонение менее 5% от дневного потребления ИНАЧЕ ЛОЖЬ КОНЕЦ КАК ПотреблениеСтабильно ПОМЕСТИТЬ СтатистикаПотребления ИЗ (ВЫБРАТЬ Товары.Склад КАК Склад, Товары.Номенклатура КАК Номенклатура, Товары.Характеристика КАК Характеристика, СУММА(ВЫБОР КОГДА ВсегоДнейКУчету.ЧислоДней > 1 ТОГДА ВЫРАЗИТЬ(Продажи.КвадратКоличества / (ВсегоДнейКУчету.ЧислоДней - 1) КАК ЧИСЛО(15, 3)) - ВЫРАЗИТЬ(Продажи.Количество / (ВсегоДнейКУчету.ЧислоДней - 1) * Продажи.Количество / ВсегоДнейКУчету.ЧислоДней КАК ЧИСЛО(15, 3)) ИНАЧЕ 0 КОНЕЦ) КАК ДисперсияПотребления, СУММА(ЕСТЬNULL(Продажи.Количество, 0)) КАК ПродажиВсего, МАКСИМУМ(ВЫБОР КОГДА Товары.Склад = Товары.СкладПродаж ТОГДА ВсегоДнейКУчету.ЧислоДней ИНАЧЕ 0 КОНЕЦ) КАК ВсегоДнейРаспредЦентра ИЗ ТоварыСоСкладамиПродаж КАК Товары ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВсегоДнейКУчету КАК ВсегоДнейКУчету ПО Товары.СкладПродаж = ВсегоДнейКУчету.Склад И Товары.Номенклатура = ВсегоДнейКУчету.Номенклатура И Товары.Характеристика = ВсегоДнейКУчету.Характеристика ЛЕВОЕ СОЕДИНЕНИЕ Продажи КАК Продажи ПО Товары.СкладПродаж = Продажи.Склад И Товары.Номенклатура = Продажи.Номенклатура И Товары.Характеристика = Продажи.Характеристика СГРУППИРОВАТЬ ПО Товары.Склад, Товары.Номенклатура, Товары.Характеристика) КАК НаборДанных ИНДЕКСИРОВАТЬ ПО Склад, Номенклатура, Характеристика ; ////////////////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Товары.ИдентификаторСтроки КАК ИдентификаторСтроки, ЕСТЬNULL(Статистика.СреднедневноеПотребление, 0) КАК СреднедневноеПотребление, ЕСТЬNULL(Статистика.ДисперсияПотребления, 0) КАК ДисперсияПотребления, ЕСТЬNULL(Статистика.ПотреблениеСтабильно, 0) КАК ПотреблениеСтабильно ИЗ ТоварыСреднедневногоПотребления КАК Товары ЛЕВОЕ СОЕДИНЕНИЕ СтатистикаПотребления КАК Статистика ПО Товары.Номенклатура = Статистика.Номенклатура И Товары.Характеристика = Статистика.Характеристика И Товары.Склад = Статистика.Склад УПОРЯДОЧИТЬ ПО ИдентификаторСтроки |
|||
1
Double_Medved
14.05.13
✎
15:22
|
Вот объясните мне - вот такое вот обязательно было делать? Хелп читал - там что-то типа "рассчитывается среднее потребление и все классно". А что мне пользователям ответить, которые спрашивают откуда такие цифры? Может имеет смысл переписать все это и сделать что-то типа (количество проданного товара/количество дней)? Или лучше не надо?
|
|||
2
Zapal
14.05.13
✎
15:39
|
— Безумие?... ЭТО СПАРТААА!!!... (с)
|
|||
3
Eugeneer
14.05.13
✎
15:45
|
(1) абсолютно с тобой согласен, и не только я - сотни фирм.
Вот пример http://subsystems.ru/catalog/29/155/ МОжешь сделать сам. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |