Консультация № 175082
09.12.2009, 22:15
0.00 руб.
0 4 1
Доброе время суток, уважаемые эксперты. Руководство загорелось идеей контролировать минимальные остатки и в случае необходимости дозакупать нужное его количество. В ТиС 7.7 это было реализовано весьма удобно ,через задание минимальных остатков в свойствах элемента номенклатуры,тогда как на восьмой платформе разработчики слишком перемудрили в этом вопросе и в результате создали документ Установка значений точки заказа , на основании данных которого формируется отчет Анализ точки заказа. Дабы привести работу данного механизма к некоему подобию того как это было реализовано на 7 платформе, я немного исправил код в отчете и документе, дабы алгоритм работы тупо отнимал минимальный остаток от фактического наличия номенклатуры, без расчета всяческих ненужных/бесполезных коэффициентов (как это было реализовано в оригинале). Все работает, но как исключить попадание в печ. форму товара который не требуется дозакупать(т.е.расчет производится правильно, но товар который не требуется дозакупать просто вхолостую выводится в отчет). Фрагмент кода запроса прилагаю. Заранее спасибо.

Приложение:
ВЫБРАТЬ //РАЗЛИЧНЫЕ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(ВложенныйЗапрос.Остаток) КАК Остаток,
| СУММА(ВложенныйЗапрос.ОжидаемоеПоступление) КАК ОжидаемоеПоступление,
| СУММА(ВложенныйЗапрос.ЗначениеТочкиЗаказа) КАК ЗначениеТочкиЗаказа,
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) КАК МинимальныйСтраховойЗапас,
| ВЫБОР КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) > (СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление)) ТОГДА
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас - ВложенныйЗапрос.Остаток)
| КОНЕЦ КАК НеобходимыйОбъемЗакупки,

Обсуждение

Неизвестный
10.12.2009, 09:31
общий
FilipN, дайте код полностью
Неизвестный
10.12.2009, 10:13
общий
Мдя, "чего-то в супе не хватает" (С). Код в студию!

Вхолостую могут расчитываться, когда товары а) либо не попадают в выборку, б) неверно срабатывает условие сравненияч остатка (не попал в ввыборку, следовательно нет на остатке?), в) еще что-то, что можно определить из текста процедуры, которго у нас нет.
Неизвестный
11.12.2009, 10:16
общий
М.Денис:
Вот полный текст запроса

Код:
ВЫБРАТЬ //РАЗЛИЧНЫЕ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(ВложенныйЗапрос.Остаток) КАК Остаток,
| СУММА(ВложенныйЗапрос.ОжидаемоеПоступление) КАК ОжидаемоеПоступление,
| СУММА(ВложенныйЗапрос.ЗначениеТочкиЗаказа) КАК ЗначениеТочкиЗаказа,
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) КАК МинимальныйСтраховойЗапас,
| ВЫБОР КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) > (СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление)) ТОГДА
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас - ВложенныйЗапрос.Остаток)
| КОНЕЦ КАК НеобходимыйОбъемЗакупки,
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас)< СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление) ТОГДА
|
| МАКСИМУМ(ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком) КАК СрокДоставки
| //СВОЙСТВА
|
|{ВЫБРАТЬ
| ВложенныйЗапрос.Склад.* КАК Склад,
| ВложенныйЗапрос.Номенклатура.* КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры
| //СВОЙСТВА
|}
|
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа КАК СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа КАК ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса КАК ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач КАК ДатаНач,
| ВложенныйЗапрос.ДатаКон КАК ДатаКон,
| ВложенныйЗапрос.Остаток КАК Остаток,
| ВложенныйЗапрос.ОжидаемоеПоступление КАК ОжидаемоеПоступление,
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &Фиксированная ТОГДА
| СУММА(ВложенныйЗапрос.ЗначениеТочкиЗаказа)
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &СреднийРазмерПартии ТОГДА
| СРЕДНЕЕ(Закупки.КоличествоОборот) * ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа / 100
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &ОптимальныйРазмерЗаказа ТОГДА
| СУММА(Продажи.КоличествоОборот) / (РАЗНОСТЬДАТ(ВложенныйЗапрос.ДатаНач, ВложенныйЗапрос.ДатаКон, День) + 1) *
| ВЫБОР КОГДА ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком > 0 ТОГДА
| ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком
| ИНАЧЕ
| 1
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК ЗначениеТочкиЗаказа,
|
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &Фиксированная ТОГДА
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас)
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &СреднийРазмерПартии ТОГДА
| СРЕДНЕЕ(Закупки.КоличествоОборот) * ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса / 100
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &ОптимальныйРазмерЗаказа ТОГДА
| (МАКСИМУМ(Продажи.КоличествоОборот) - СРЕДНЕЕ(Продажи.КоличествоОборот)) / (РАЗНОСТЬДАТ(ВложенныйЗапрос.ДатаНач, ВложенныйЗапрос.ДатаКон, День) + 1) *
| ВЫБОР КОГДА ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком > 0 ТОГДА
| ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком
| ИНАЧЕ
| 1
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК МинимальныйСтраховойЗапас
| ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа КАК СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ЗначениеТочкиЗаказа КАК ЗначениеТочкиЗаказа,
| ВложенныйЗапрос.МинимальныйСтраховойЗапас КАК МинимальныйСтраховойЗапас,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа КАК ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса КАК ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач КАК ДатаНач,
| ВложенныйЗапрос.ДатаКон КАК ДатаКон,
| ВложенныйЗапрос.Остаток КАК Остаток,
| ЕСТЬNULL(СУММА(ЗаказыПоставщикам.КоличествоОстаток), 0) КАК ОжидаемоеПоступление
|
| ИЗ (ВЫБРАТЬ
| ЗначенияТочкиЗаказа.Склад КАК Склад,
| ЗначенияТочкиЗаказа.Номенклатура КАК Номенклатура,
| ЗначенияТочкиЗаказа.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ЗначенияТочкиЗаказа.СпособОпределенияЗначенияТочкиЗаказа КАК СпособОпределенияЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ЗначениеТочкиЗаказа КАК ЗначениеТочкиЗаказа,
| ЗначенияТочкиЗаказа.МинимальныйСтраховойЗапас КАК МинимальныйСтраховойЗапас,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаЗначенияТочкиЗаказа КАК ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса КАК ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ЗначенияТочкиЗаказа.ДатаНач КАК ДатаНач,
| ЗначенияТочкиЗаказа.ДатаКон КАК ДатаКон,
| ЕСТЬNULL(СУММА(ТоварыНаСкладах.КоличествоОстаток), 0) КАК Остаток
| ИЗ
| РегистрСведений.ЗначенияТочкиЗаказа.СрезПоследних(&ДатаОтчета) КАК ЗначенияТочкиЗаказа
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон) КАК ТоварыНаСкладах
| ПО ЗначенияТочкиЗаказа.Номенклатура = ТоварыНаСкладах.Номенклатура И
| ЗначенияТочкиЗаказа.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры И
| ВЫБОР КОГДА ЗначенияТочкиЗаказа.Склад <> &ПустойСклад ТОГДА
| ЗначенияТочкиЗаказа.Склад = ТоварыНаСкладах.Склад
| ИНАЧЕ
| Истина
| КОНЕЦ
|
| ГДЕ
| ЗначенияТочкиЗаказа.СпособОпределенияЗначенияТочкиЗаказа <> &НеКонтролировать
|
| СГРУППИРОВАТЬ ПО
| ЗначенияТочкиЗаказа.Склад,
| ЗначенияТочкиЗаказа.Номенклатура,
| ЗначенияТочкиЗаказа.ХарактеристикаНоменклатуры,
| ЗначенияТочкиЗаказа.СпособОпределенияЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ЗначениеТочкиЗаказа,
| ЗначенияТочкиЗаказа.МинимальныйСтраховойЗапас,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ЗначенияТочкиЗаказа.ДатаНач,
| ЗначенияТочкиЗаказа.ДатаКон
| ) КАК ВложенныйЗапрос
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаКон) КАК ЗаказыПоставщикам
| ПО ВложенныйЗапрос.Номенклатура = ЗаказыПоставщикам.Номенклатура И
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЗаказыПоставщикам.ХарактеристикаНоменклатуры И
| (ЗаказыПоставщикам.ЗаказПоставщику.ДатаПоступления = ДОБАВИТЬКДАТЕ(&ДатаКон, День, -1)) И
| ВЫБОР КОГДА ВложенныйЗапрос.Склад <> &ПустойСклад ТОГДА
| ВложенныйЗапрос.Склад = ЗаказыПоставщикам.ЗаказПоставщику.Склад
| ИНАЧЕ
| Истина
| КОНЕЦ
|
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ЗначениеТочкиЗаказа,
| ВложенныйЗапрос.МинимальныйСтраховойЗапас,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач,
| ВложенныйЗапрос.ДатаКон,
| ВложенныйЗапрос.Остаток
| ) КАК ВложенныйЗапрос
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты(,, День,) КАК Закупки
| ПО ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &СреднийРазмерПартии И
| ВложенныйЗапрос.Номенклатура = Закупки.Номенклатура И
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = Закупки.ХарактеристикаНоменклатуры И
| (Закупки.ДокументЗакупки.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.ДатаНач, День) И КОНЕЦПЕРИОДА(ВложенныйЗапрос.ДатаКон, День))
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(,, День,) КАК Продажи
| ПО ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &ОптимальныйРазмерЗаказа И
| ВложенныйЗапрос.Номенклатура = Продажи.Номенклатура И
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = Продажи.ХарактеристикаНоменклатуры И
// Старт (МБК Котельников 22.02.2007)
//
// ВРЕМЕННО !!! для бета версии
// Закомментированные строки типовой конфигурации
// | (Продажи.ДокументПродажи.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.ДатаНач, День) И КОНЕЦПЕРИОДА(ВложенныйЗапрос.ДатаКон, День))
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = Продажи.ХарактеристикаНоменклатуры
// Финиш (МБК Котельников 22.02.2007)
|
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач,
| ВложенныйЗапрос.ДатаКон,
| ВложенныйЗапрос.Остаток,
| ВложенныйЗапрос.ОжидаемоеПоступление
|
| ) КАК ВложенныйЗапрос
|
|//СОЕДИНЕНИЯ
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры
| //СГРУППИРОВАТЬПО
|
|{ГДЕ
| ВложенныйЗапрос.Склад.* КАК Склад,
| ВложенныйЗапрос.Номенклатура.* КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.Остаток КАК Остаток,
| ВложенныйЗапрос.ОжидаемоеПоступление КАК ОжидаемоеПоступление,
| ВложенныйЗапрос.ЗначениеТочкиЗаказа КАК ЗначениеТочкиЗаказа,
| ВложенныйЗапрос.МинимальныйСтраховойЗапас КАК МинимальныйСтраховойЗапас,
| ВЫБОР
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) > СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление)
| ТОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас - ВложенныйЗапрос.Остаток)
| КОНЕЦ КАК НеобходимыйОбъемЗакупки,
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас)< СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление) ТОГДА
| | ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком КАК СрокДоставки
| //СВОЙСТВА
| //КАТЕГОРИИ
|}
|
|{УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Склад.*,
| ВложенныйЗапрос.Номенклатура.*,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.*,
| Остаток,
| ОжидаемоеПоступление,
| ЗначениеТочкиЗаказа,
| МинимальныйСтраховойЗапас,
| НеобходимыйОбъемЗакупки,
| СрокДоставки
| //ОБЩИЕ_СВОЙСТВА
|}
|
|ИТОГИ СУММА(Остаток), СУММА(ОжидаемоеПоступление), СУММА(ЗначениеТочкиЗаказа), СУММА(МинимальныйСтраховойЗапас), СУММА(НеобходимыйОбъемЗакупки), МАКСИМУМ(СрокДоставки) ПО ОБЩИЕ,
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры
|
|{ИТОГИ ПО
| ВложенныйЗапрос.Склад.*,
| ВложенныйЗапрос.Номенклатура.*,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.*
| //ОБЩИЕ_СВОЙСТВА
|}
|АВТОУПОРЯДОЧИВАНИЕ";
Неизвестный
11.12.2009, 16:47
общий
это ответ
Здравствуйте, FilipN.

1. Попробуйте добавить условие (см. приложение, начинается на Имеющие)
2. Попробуйте изменить соединения из Левого на Внутреннее.

Если что - пишите.

Приложение:
ВЫБРАТЬ //РАЗЛИЧНЫЕ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| СУММА(ВложенныйЗапрос.Остаток) КАК Остаток,
| СУММА(ВложенныйЗапрос.ОжидаемоеПоступление) КАК ОжидаемоеПоступление,
| СУММА(ВложенныйЗапрос.ЗначениеТочкиЗаказа) КАК ЗначениеТочкиЗаказа,
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) КАК МинимальныйСтраховойЗапас,
| ВЫБОР КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) > (СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление)) ТОГДА
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас - ВложенныйЗапрос.Остаток)
| КОНЕЦ КАК НеобходимыйОбъемЗакупки,
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас)< СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление) ТОГДА
|
| МАКСИМУМ(ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком) КАК СрокДоставки
| //СВОЙСТВА
|
|{ВЫБРАТЬ
| ВложенныйЗапрос.Склад.* КАК Склад,
| ВложенныйЗапрос.Номенклатура.* КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры
| //СВОЙСТВА
|}
|
|ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа КАК СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа КАК ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса КАК ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач КАК ДатаНач,
| ВложенныйЗапрос.ДатаКон КАК ДатаКон,
| ВложенныйЗапрос.Остаток КАК Остаток,
| ВложенныйЗапрос.ОжидаемоеПоступление КАК ОжидаемоеПоступление,
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &Фиксированная ТОГДА
| СУММА(ВложенныйЗапрос.ЗначениеТочкиЗаказа)
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &СреднийРазмерПартии ТОГДА
| СРЕДНЕЕ(Закупки.КоличествоОборот) * ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа / 100
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &ОптимальныйРазмерЗаказа ТОГДА
| СУММА(Продажи.КоличествоОборот) / (РАЗНОСТЬДАТ(ВложенныйЗапрос.ДатаНач, ВложенныйЗапрос.ДатаКон, День) + 1) *
| ВЫБОР КОГДА ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком > 0 ТОГДА
| ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком
| ИНАЧЕ
| 1
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК ЗначениеТочкиЗаказа,
|
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &Фиксированная ТОГДА
| СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас)
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &СреднийРазмерПартии ТОГДА
| СРЕДНЕЕ(Закупки.КоличествоОборот) * ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса / 100
| ИНАЧЕ
| ВЫБОР КОГДА ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &ОптимальныйРазмерЗаказа ТОГДА
| (МАКСИМУМ(Продажи.КоличествоОборот) - СРЕДНЕЕ(Продажи.КоличествоОборот)) / (РАЗНОСТЬДАТ(ВложенныйЗапрос.ДатаНач, ВложенныйЗапрос.ДатаКон, День) + 1) *
| ВЫБОР КОГДА ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком > 0 ТОГДА
| ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком
| ИНАЧЕ
| 1
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ
| КОНЕЦ КАК МинимальныйСтраховойЗапас
| ИЗ
| (ВЫБРАТЬ
| ВложенныйЗапрос.Склад КАК Склад,
| ВложенныйЗапрос.Номенклатура КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа КАК СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ЗначениеТочкиЗаказа КАК ЗначениеТочкиЗаказа,
| ВложенныйЗапрос.МинимальныйСтраховойЗапас КАК МинимальныйСтраховойЗапас,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа КАК ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса КАК ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач КАК ДатаНач,
| ВложенныйЗапрос.ДатаКон КАК ДатаКон,
| ВложенныйЗапрос.Остаток КАК Остаток,
| ЕСТЬNULL(СУММА(ЗаказыПоставщикам.КоличествоОстаток), 0) КАК ОжидаемоеПоступление
|
| ИЗ (ВЫБРАТЬ
| ЗначенияТочкиЗаказа.Склад КАК Склад,
| ЗначенияТочкиЗаказа.Номенклатура КАК Номенклатура,
| ЗначенияТочкиЗаказа.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
| ЗначенияТочкиЗаказа.СпособОпределенияЗначенияТочкиЗаказа КАК СпособОпределенияЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ЗначениеТочкиЗаказа КАК ЗначениеТочкиЗаказа,
| ЗначенияТочкиЗаказа.МинимальныйСтраховойЗапас КАК МинимальныйСтраховойЗапас,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаЗначенияТочкиЗаказа КАК ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса КАК ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ЗначенияТочкиЗаказа.ДатаНач КАК ДатаНач,
| ЗначенияТочкиЗаказа.ДатаКон КАК ДатаКон,
| ЕСТЬNULL(СУММА(ТоварыНаСкладах.КоличествоОстаток), 0) КАК Остаток
| ИЗ
| РегистрСведений.ЗначенияТочкиЗаказа.СрезПоследних(&ДатаОтчета) КАК ЗначенияТочкиЗаказа
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаКон) КАК ТоварыНаСкладах
| ПО ЗначенияТочкиЗаказа.Номенклатура = ТоварыНаСкладах.Номенклатура И
| ЗначенияТочкиЗаказа.ХарактеристикаНоменклатуры = ТоварыНаСкладах.ХарактеристикаНоменклатуры И
| ВЫБОР КОГДА ЗначенияТочкиЗаказа.Склад <> &ПустойСклад ТОГДА
| ЗначенияТочкиЗаказа.Склад = ТоварыНаСкладах.Склад
| ИНАЧЕ
| Истина
| КОНЕЦ
|
| ГДЕ
| ЗначенияТочкиЗаказа.СпособОпределенияЗначенияТочкиЗаказа <> &НеКонтролировать
|
| СГРУППИРОВАТЬ ПО
| ЗначенияТочкиЗаказа.Склад,
| ЗначенияТочкиЗаказа.Номенклатура,
| ЗначенияТочкиЗаказа.ХарактеристикаНоменклатуры,
| ЗначенияТочкиЗаказа.СпособОпределенияЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ЗначениеТочкиЗаказа,
| ЗначенияТочкиЗаказа.МинимальныйСтраховойЗапас,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ЗначенияТочкиЗаказа.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ЗначенияТочкиЗаказа.ДатаНач,
| ЗначенияТочкиЗаказа.ДатаКон
| ) КАК ВложенныйЗапрос
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.Остатки(&ДатаКон) КАК ЗаказыПоставщикам
| ПО ВложенныйЗапрос.Номенклатура = ЗаказыПоставщикам.Номенклатура И
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЗаказыПоставщикам.ХарактеристикаНоменклатуры И
| (ЗаказыПоставщикам.ЗаказПоставщику.ДатаПоступления = ДОБАВИТЬКДАТЕ(&ДатаКон, День, -1)) И
| ВЫБОР КОГДА ВложенныйЗапрос.Склад <> &ПустойСклад ТОГДА
| ВложенныйЗапрос.Склад = ЗаказыПоставщикам.ЗаказПоставщику.Склад
| ИНАЧЕ
| Истина
| КОНЕЦ
|
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ЗначениеТочкиЗаказа,
| ВложенныйЗапрос.МинимальныйСтраховойЗапас,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач,
| ВложенныйЗапрос.ДатаКон,
| ВложенныйЗапрос.Остаток
| ) КАК ВложенныйЗапрос
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты(,, День,) КАК Закупки
| ПО ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &СреднийРазмерПартии И
| ВложенныйЗапрос.Номенклатура = Закупки.Номенклатура И
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = Закупки.ХарактеристикаНоменклатуры И
| (Закупки.ДокументЗакупки.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.ДатаНач, День) И КОНЕЦПЕРИОДА(ВложенныйЗапрос.ДатаКон, День))
|
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.Продажи.Обороты(,, День,) КАК Продажи
| ПО ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа = &ОптимальныйРазмерЗаказа И
| ВложенныйЗапрос.Номенклатура = Продажи.Номенклатура И
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = Продажи.ХарактеристикаНоменклатуры И
// Старт (МБК Котельников 22.02.2007)
//
// ВРЕМЕННО !!! для бета версии
// Закомментированные строки типовой конфигурации
// | (Продажи.ДокументПродажи.Дата МЕЖДУ НАЧАЛОПЕРИОДА(ВложенныйЗапрос.ДатаНач, День) И КОНЕЦПЕРИОДА(ВложенныйЗапрос.ДатаКон, День))
| ВложенныйЗапрос.ХарактеристикаНоменклатуры = Продажи.ХарактеристикаНоменклатуры
// Финиш (МБК Котельников 22.02.2007)
|
| СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.СпособОпределенияЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаЗначенияТочкиЗаказа,
| ВложенныйЗапрос.ПроцентнаяСтавкаМинимальногоСтраховогоЗапаса,
| ВложенныйЗапрос.ДатаНач,
| ВложенныйЗапрос.ДатаКон,
| ВложенныйЗапрос.Остаток,
| ВложенныйЗапрос.ОжидаемоеПоступление
|
| ) КАК ВложенныйЗапрос
|
|//СОЕДИНЕНИЯ
|
|СГРУППИРОВАТЬ ПО
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры
| //СГРУППИРОВАТЬПО
|
|ИМЕЮЩИЕ
| ВЫБОР
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) > СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление)
| ТОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас - ВложенныйЗапрос.Остаток)
| КОНЕЦ > 0
|{ГДЕ
| ВложенныйЗапрос.Склад.* КАК Склад,
| ВложенныйЗапрос.Номенклатура.* КАК Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.* КАК ХарактеристикаНоменклатуры,
| ВложенныйЗапрос.Остаток КАК Остаток,
| ВложенныйЗапрос.ОжидаемоеПоступление КАК ОжидаемоеПоступление,
| ВложенныйЗапрос.ЗначениеТочкиЗаказа КАК ЗначениеТочкиЗаказа,
| ВложенныйЗапрос.МинимальныйСтраховойЗапас КАК МинимальныйСтраховойЗапас,
| ВЫБОР
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас) > СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление)
| ТОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас - ВложенныйЗапрос.Остаток)
| КОНЕЦ КАК НеобходимыйОбъемЗакупки,
| КОГДА СУММА(ВложенныйЗапрос.МинимальныйСтраховойЗапас)< СУММА(ВложенныйЗапрос.Остаток + ВложенныйЗапрос.ОжидаемоеПоступление) ТОГДА
| | ВложенныйЗапрос.Номенклатура.ОсновнойПоставщик.СрокВыполненияЗаказаПоставщиком КАК СрокДоставки
| //СВОЙСТВА
| //КАТЕГОРИИ
|}
|
|{УПОРЯДОЧИТЬ ПО
| ВложенныйЗапрос.Склад.*,
| ВложенныйЗапрос.Номенклатура.*,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.*,
| Остаток,
| ОжидаемоеПоступление,
| ЗначениеТочкиЗаказа,
| МинимальныйСтраховойЗапас,
| НеобходимыйОбъемЗакупки,
| СрокДоставки
| //ОБЩИЕ_СВОЙСТВА
|}
|
|ИТОГИ СУММА(Остаток), СУММА(ОжидаемоеПоступление), СУММА(ЗначениеТочкиЗаказа), СУММА(МинимальныйСтраховойЗапас), СУММА(НеобходимыйОбъемЗакупки), МАКСИМУМ(СрокДоставки) ПО ОБЩИЕ,
| ВложенныйЗапрос.Склад,
| ВложенныйЗапрос.Номенклатура,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры
|
|{ИТОГИ ПО
| ВложенныйЗапрос.Склад.*,
| ВложенныйЗапрос.Номенклатура.*,
| ВложенныйЗапрос.ХарактеристикаНоменклатуры.*
| //ОБЩИЕ_СВОЙСТВА
|}
|АВТОУПОРЯДОЧИВАНИЕ";
Форма ответа