Имя: Пароль:
1C
1С v8
v8: Не могу понять почему неправильно вычисляется поле запроса
0 Cerera
 
16.08.12
16:26
Запрос сам по себе большой но мне нужно лишь одно поле рассчитать которое равно Поле1/Поле2

В запросе вставляю код

ВЫБОР
   КОГДА Окончательная.СДО = 0
       ТОГДА 0
   ИНАЧЕ Окончательная.РасполагаемыйОбъем / Окончательная.СДО
КОНЕЦ

Но в столбик попадает как правило вобще левые цифры, в основном 0 там. даже если оба столбика полей заполнены, всё равно результат не соответствует действительности.
1 1C-band
 
16.08.12
16:27
Потому, что Окончательная.СДО <> 0.
2 Rovan
 
гуру
16.08.12
16:28
(0)
1) покажи весь запрос
2) не может ли быть сбой на этапе вывода данных ?
3 andrewks
 
16.08.12
16:29
от нас чего хочешь?
4 Cerera
 
16.08.12
16:29
(3)в чём то я неправ был
5 andrewks
 
16.08.12
16:30
(4) нам отсюда невидно, в чём именно ты не прав
6 Cerera
 
16.08.12
16:30
(2)
ВЫБРАТЬ
   НоменклатурныеЛимитыСрезПоследних.Номенклатура,
   НоменклатурныеЛимитыСрезПоследних.МаксОстаток
ПОМЕСТИТЬ МаксимальныйОстаток
ИЗ
   РегистрСведений.НоменклатурныеЛимиты.СрезПоследних(&ДатаАнализа, ) КАК НоменклатурныеЛимитыСрезПоследних
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ПотребностиНоменклатурыОстатки.Склад,
   ПотребностиНоменклатурыОстатки.Номенклатура,
   ПотребностиНоменклатурыОстатки.Контрагент,
   ПотребностиНоменклатурыОстатки.ХарактеристикаНоменклатуры,
   СУММА(ПотребностиНоменклатурыОстатки.ПотребностьОстаток) КАК ПотребностьОстаток
ПОМЕСТИТЬ ПотребностиНоменклатуры
ИЗ
   РегистрНакопления.ПотребностиНоменклатуры.Остатки(&ДатаАнализа, ) КАК ПотребностиНоменклатурыОстатки

СГРУППИРОВАТЬ ПО
   ПотребностиНоменклатурыОстатки.Склад,
   ПотребностиНоменклатурыОстатки.Номенклатура,
   ПотребностиНоменклатурыОстатки.Контрагент,
   ПотребностиНоменклатурыОстатки.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   НадежностьПоставщиковСрезПоследних.Контрагент,
   НадежностьПоставщиковСрезПоследних.Надежность КАК Надежность,
   НадежностьПоставщиковСрезПоследних.РискНеОтгрузкиДни КАК ЦП,
   НадежностьПоставщиковСрезПоследних.Контрагент.СрокВыполненияЗаказаПоставщиком КАК ВП
ПОМЕСТИТЬ ТаблицаНадежностиПоставщиков
ИЗ
   РегистрСведений.НадежностьПоставщиков.СрезПоследних(&ДатаАнализа, ) КАК НадежностьПоставщиковСрезПоследних

СГРУППИРОВАТЬ ПО
   НадежностьПоставщиковСрезПоследних.Контрагент,
   НадежностьПоставщиковСрезПоследних.Надежность,
   НадежностьПоставщиковСрезПоследних.РискНеОтгрузкиДни,
   НадежностьПоставщиковСрезПоследних.Контрагент.СрокВыполненияЗаказаПоставщиком
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   НоменклатураПоСпискуАСрезПоследних.Номенклатура,
   НоменклатураПоСпискуАСрезПоследних.КоличествоПороговое
ПОМЕСТИТЬ НоменклатураПоСпискуА
ИЗ
   РегистрСведений.НоменклатураПоСпискуА.СрезПоследних(&ДатаАнализа, ) КАК НоменклатураПоСпискуАСрезПоследних
;

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

СГРУППИРОВАТЬ ПО
   ПродажиОбороты.Склад,
   ПродажиОбороты.Регистратор,
   ПродажиОбороты.Номенклатура,
   ПродажиОбороты.ХарактеристикаНоменклатуры,
   ПродажиОбороты.КоличествоРасход,
   НоменклатураПоСпискуА.КоличествоПороговое,
   НАЧАЛОПЕРИОДА(ПродажиОбороты.Период, ДЕНЬ),
   ПродажиОбороты.Номенклатура.ВидНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   Расход.Склад,
   Расход.Номенклатура,
   Расход.ХарактеристикаНоменклатуры,
   Расход.День,
   СУММА(Расход.КоличествоРасход) КАК СДОЗаДень
ПОМЕСТИТЬ ИтогиПоНоменклатуреСДОДень
ИЗ
   Расход КАК Расход

СГРУППИРОВАТЬ ПО
   Расход.Номенклатура,
   Расход.ХарактеристикаНоменклатуры,
   Расход.День,
   Расход.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ИтогиПоНоменклатуреСДОДень.Склад,
   ИтогиПоНоменклатуреСДОДень.Номенклатура,
   ИтогиПоНоменклатуреСДОДень.ХарактеристикаНоменклатуры,
   СУММА(ИтогиПоНоменклатуреСДОДень.СДОЗаДень) КАК СуммаСреднихДневныхОтгрузок,
   СУММА(ИтогиПоНоменклатуреСДОДень.СДОЗаДень) / &КолБанкДней КАК СДО
ПОМЕСТИТЬ СДООбщаяДляНоменклатуры
ИЗ
   ИтогиПоНоменклатуреСДОДень КАК ИтогиПоНоменклатуреСДОДень

СГРУППИРОВАТЬ ПО
   ИтогиПоНоменклатуреСДОДень.Номенклатура,
   ИтогиПоНоменклатуреСДОДень.ХарактеристикаНоменклатуры,
   ИтогиПоНоменклатуреСДОДень.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   СДООбщаяДляНоменклатуры.Склад,
   СДООбщаяДляНоменклатуры.Номенклатура КАК Номенклатура,
   СДООбщаяДляНоменклатуры.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   СУММА(СДООбщаяДляНоменклатуры.СДО) КАК СДО
ПОМЕСТИТЬ СДОДляОбъединенногоЗапроса
ИЗ
   СДООбщаяДляНоменклатуры КАК СДООбщаяДляНоменклатуры

СГРУППИРОВАТЬ ПО
   СДООбщаяДляНоменклатуры.Номенклатура,
   СДООбщаяДляНоменклатуры.ХарактеристикаНоменклатуры,
   СДООбщаяДляНоменклатуры.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗРЕШЕННЫЕ
   ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента.Владелец КАК ДоговорКонтрагентаВладелец,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента.Владелец),
   ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента КАК ДоговорКонтрагента,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента),
   ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику КАК ЗаказПоставщику,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику) КАК ЗаказПоставщикуПредставление,
   ЗаказыПоставщикамОстаткиИОбороты.Номенклатура КАК Номенклатура,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.Номенклатура),
   ЗаказыПоставщикамОстаткиИОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.ХарактеристикаНоменклатуры),
   ЗаказыПоставщикамОстаткиИОбороты.СтатусПартии КАК СтатусПартии,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.СтатусПартии),
   ЗаказыПоставщикамОстаткиИОбороты.Цена КАК Цена,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.Цена),
   ЗаказыПоставщикамОстаткиИОбороты.ЕдиницаИзмерения КАК ЕдиницаИзмерения,
   ПРЕДСТАВЛЕНИЕ(ЗаказыПоставщикамОстаткиИОбороты.ЕдиницаИзмерения),
   ВЫБОР
       КОГДА СводЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход = СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток
           ТОГДА "Не поступило"
       КОГДА ЕСТЬNULL(СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток, 0) <= 0
           ТОГДА "Поступило полностью"
       ИНАЧЕ "Поступило частично"
   КОНЕЦ КАК СостояниеОтгрузки,
   ВЫБОР
       КОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход = 0
               ИЛИ РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход ЕСТЬ NULL
           ТОГДА "Не оплачено"
       КОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход >= РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
           ТОГДА "Оплачено полностью"
       ИНАЧЕ "Оплачено частично"
   КОНЕЦ КАК СостояниеОплаты,
   РасчетыСКонтрагентами.СуммаУпрРасход КАК СуммаЗаказа,
   ЗаявкиНаРасходованиеСредств.СуммаУпрОстаток КАК СуммаЗапланировано,
   -РасчетыСКонтрагентами.СуммаУпрКонечныйОстаток КАК ОсталосьОплатить,
   ВзаиморасчетыСКонтрагентами.СуммаУпрПриход КАК Оплачено,
   ЗаказыПоставщикамОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК ОсталосьЗакупитьСуммаВзаиморасчетов,
   ЗаказыПоставщикамОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК ОсталосьЗакупитьСуммаУпр,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход КАК Запланировано,
   СУММА(ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток) КАК ОсталосьОтгрузить,
   РазмещениеЗаказовПокупателей.КоличествоОстаток КАК Заказано,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЗапланированоБазовыхЕд,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ОсталосьОтгрузитьБазовыхЕд,
   РазмещениеЗаказовПокупателей.КоличествоОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент КАК ЗаказаноБазовыхЕд,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК ЗапланированоЕдиницОтчетов,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК ОсталосьОтгрузитьЕдиницОтчетов,
   РазмещениеЗаказовПокупателей.КоличествоОстаток * РазмещениеЗаказовПокупателей.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / РазмещениеЗаказовПокупателей.Номенклатура.ЕдиницаДляОтчетов.Коэффициент КАК ЗаказаноЕдиницОтчетов,
   ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику.Склад
ПОМЕСТИТЬ ОбщаяВыборкаРазмещенияВЗаказах
{ВЫБРАТЬ
   ДоговорКонтрагентаВладелец.*,
   ДоговорКонтрагента.*,
   ЗаказПоставщику.*,
   Номенклатура.*,
   ХарактеристикаНоменклатуры.*,
   СтатусПартии,
   Цена,
   ЕдиницаИзмерения.*,
   СостояниеОтгрузки,
   СостояниеОплаты,
   СуммаЗаказа,
   СуммаЗапланировано,
   ОсталосьОплатить,
   Оплачено,
   Запланировано,
   ОсталосьОтгрузить,
   Заказано,
   ОсталосьЗакупитьСуммаВзаиморасчетов,
   ОсталосьЗакупитьСуммаУпр,
   ЗапланированоБазовыхЕд,
   ОсталосьОтгрузитьБазовыхЕд,
   ЗаказаноБазовыхЕд,
   ЗапланированоЕдиницОтчетов,
   ОсталосьОтгрузитьЕдиницОтчетов,
   ЗаказаноЕдиницОтчетов}
ИЗ
   РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(, &ДатаАнализа, , , ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК ЗаказыПоставщикамОстаткиИОбороты
       {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РазмещениеЗаказовПокупателей.Остатки(&ДатаАнализа, ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику {(ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику, (Номенклатура).* КАК Номенклатура, (ХарактеристикаНоменклатуры).* КАК ХарактеристикаНоменклатуры}) КАК РазмещениеЗаказовПокупателей
       ПО ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику = РазмещениеЗаказовПокупателей.ЗаказПоставщику
           И ЗаказыПоставщикамОстаткиИОбороты.Номенклатура = РазмещениеЗаказовПокупателей.Номенклатура
           И ЗаказыПоставщикамОстаткиИОбороты.ХарактеристикаНоменклатуры = РазмещениеЗаказовПокупателей.ХарактеристикаНоменклатуры}
       {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РасчетыСКонтрагентами.ОстаткиИОбороты(, &ДатаАнализа, , , Сделка ССЫЛКА Документ.ЗаказПоставщику {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику}) КАК РасчетыСКонтрагентами
       ПО ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику = РасчетыСКонтрагентами.Сделка
           И ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента = РасчетыСКонтрагентами.ДоговорКонтрагента}
       {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ВзаиморасчетыСКонтрагентами.Обороты(, &ДатаАнализа, , Сделка ССЫЛКА Документ.ЗаказПоставщику {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику}) КАК ВзаиморасчетыСКонтрагентами
       ПО ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику = ВзаиморасчетыСКонтрагентами.Сделка
           И ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента = ВзаиморасчетыСКонтрагентами.ДоговорКонтрагента}
       {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаявкиНаРасходованиеСредств.Остатки(&ДатаАнализа, Сделка ССЫЛКА Документ.ЗаказПоставщику {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(Сделка КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику}) КАК ЗаявкиНаРасходованиеСредств
       ПО ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику = ЗаявкиНаРасходованиеСредств.Сделка
           И ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента = ЗаявкиНаРасходованиеСредств.ДоговорКонтрагента
           И (ЗаявкиНаРасходованиеСредств.ЗаявкаНаРасходование.Состояние = &СостояниеПодготовлен)}
       {ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗаказыПоставщикам.ОстаткиИОбороты(, &ДатаАнализа, , , ЗаказПоставщику ССЫЛКА Документ.ЗаказПоставщику {(ДоговорКонтрагента.Владелец).* КАК ДоговорКонтрагентаВладелец, (ДоговорКонтрагента).* КАК ДоговорКонтрагента, (ВЫРАЗИТЬ(ЗаказПоставщику КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику}) КАК СводЗаказыПоставщикамОстаткиИОбороты
       ПО ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику = СводЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику}
ГДЕ
   ВЫБОР
           КОГДА СводЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход = СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток
               ТОГДА "Не поступило"
           КОГДА ЕСТЬNULL(СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток, 0) <= 0
               ТОГДА "Поступило полностью"
           ИНАЧЕ "Поступило частично"
       КОНЕЦ <> "Поступило полностью"
   И ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры
{ГДЕ
   (ВЫРАЗИТЬ(ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику КАК Документ.ЗаказПоставщику)).* КАК ЗаказПоставщику,
   ЗаказыПоставщикамОстаткиИОбороты.СтатусПартии.* КАК СтатусПартии,
   ЗаказыПоставщикамОстаткиИОбороты.Цена КАК Цена,
   ЗаказыПоставщикамОстаткиИОбороты.ЕдиницаИзмерения.* КАК ЕдиницаИзмерения,
   (ВЫБОР
           КОГДА СводЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход = СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток
               ТОГДА "Не поступило"
           КОГДА ЕСТЬNULL(СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток, 0) <= 0
               ТОГДА "Поступило полностью"
           ИНАЧЕ "Поступило частично"
       КОНЕЦ) КАК СостояниеОтгрузки,
   (ВЫБОР
           КОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход = 0
                   ИЛИ РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход ЕСТЬ NULL
               ТОГДА "Не оплачено"
           КОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход >= РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
               ТОГДА "Оплачено полностью"
           ИНАЧЕ "Оплачено частично"
       КОНЕЦ) КАК СостояниеОплаты,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход КАК Запланировано,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток КАК ОсталосьОтгрузить,
   РазмещениеЗаказовПокупателей.КоличествоОстаток КАК Заказано,
   ЗаказыПоставщикамОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток КАК ОсталосьЗакупитьСуммаВзаиморасчетов,
   ЗаказыПоставщикамОстаткиИОбороты.СуммаУпрКонечныйОстаток КАК ОсталосьЗакупитьСуммаУпр,
   (ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК ЗапланированоБазовыхЕд,
   (ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК ОсталосьОтгрузитьБазовыхЕд,
   (РазмещениеЗаказовПокупателей.КоличествоОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент) КАК ЗаказаноБазовыхЕд,
   (ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК ЗапланированоЕдиницОтчетов,
   (ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК ОсталосьОтгрузитьЕдиницОтчетов,
   (РазмещениеЗаказовПокупателей.КоличествоОстаток * РазмещениеЗаказовПокупателей.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / РазмещениеЗаказовПокупателей.Номенклатура.ЕдиницаДляОтчетов.Коэффициент) КАК ЗаказаноЕдиницОтчетов,
   РасчетыСКонтрагентами.СуммаУпрРасход КАК СуммаЗаказа,
   ЗаявкиНаРасходованиеСредств.СуммаУпрОстаток КАК СуммаЗапланировано,
   (-РасчетыСКонтрагентами.СуммаУпрКонечныйОстаток) КАК ОсталосьОплатить,
   ВзаиморасчетыСКонтрагентами.СуммаУпрПриход КАК Оплачено}

СГРУППИРОВАТЬ ПО
   ЗаказыПоставщикамОстаткиИОбороты.ХарактеристикаНоменклатуры,
   ЗаказыПоставщикамОстаткиИОбороты.Номенклатура,
   ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента.Владелец,
   ЗаказыПоставщикамОстаткиИОбороты.ДоговорКонтрагента,
   ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику,
   ЗаказыПоставщикамОстаткиИОбороты.СтатусПартии,
   ЗаказыПоставщикамОстаткиИОбороты.Цена,
   ЗаказыПоставщикамОстаткиИОбороты.ЕдиницаИзмерения,
   РасчетыСКонтрагентами.СуммаУпрРасход,
   ЗаявкиНаРасходованиеСредств.СуммаУпрОстаток,
   ВзаиморасчетыСКонтрагентами.СуммаУпрПриход,
   ЗаказыПоставщикамОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток,
   ЗаказыПоставщикамОстаткиИОбороты.СуммаУпрКонечныйОстаток,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход,
   РазмещениеЗаказовПокупателей.КоличествоОстаток,
   ВЫБОР
       КОГДА СводЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход = СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток
           ТОГДА "Не поступило"
       КОГДА ЕСТЬNULL(СводЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток, 0) <= 0
           ТОГДА "Поступило полностью"
       ИНАЧЕ "Поступило частично"
   КОНЕЦ,
   ВЫБОР
       КОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход = 0
               ИЛИ РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход ЕСТЬ NULL
           ТОГДА "Не оплачено"
       КОГДА РасчетыСКонтрагентами.СуммаВзаиморасчетовПриход >= РасчетыСКонтрагентами.СуммаВзаиморасчетовРасход
           ТОГДА "Оплачено полностью"
       ИНАЧЕ "Оплачено частично"
   КОНЕЦ,
   -РасчетыСКонтрагентами.СуммаУпрКонечныйОстаток,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
   РазмещениеЗаказовПокупателей.КоличествоОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоПриход * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,
   ЗаказыПоставщикамОстаткиИОбороты.КоличествоКонечныйОстаток * ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / ЗаказыПоставщикамОстаткиИОбороты.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,
   РазмещениеЗаказовПокупателей.КоличествоОстаток * РазмещениеЗаказовПокупателей.Номенклатура.ЕдиницаХраненияОстатков.Коэффициент / РазмещениеЗаказовПокупателей.Номенклатура.ЕдиницаДляОтчетов.Коэффициент,
   ЗаказыПоставщикамОстаткиИОбороты.ЗаказПоставщику.Склад
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   РазмещениеВЗаказах.ЗаказПоставщикуСклад,
   РазмещениеВЗаказах.Номенклатура,
   РазмещениеВЗаказах.ХарактеристикаНоменклатуры,
   РазмещениеВЗаказах.ЗаказПоставщику,
   СУММА(РазмещениеВЗаказах.ОсталосьОтгрузитьЕдиницОтчетов) КАК ОсталосьОтгрузитьЕдиницОтчетов
ПОМЕСТИТЬ ЗаказыПоставщику
ИЗ
   ОбщаяВыборкаРазмещенияВЗаказах КАК РазмещениеВЗаказах

СГРУППИРОВАТЬ ПО
   РазмещениеВЗаказах.ЗаказПоставщикуСклад,
   РазмещениеВЗаказах.Номенклатура,
   РазмещениеВЗаказах.ХарактеристикаНоменклатуры,
   РазмещениеВЗаказах.ЗаказПоставщику
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ЗаказыПоставщику.ЗаказПоставщикуСклад,
   ЗаказыПоставщику.Номенклатура,
   ЗаказыПоставщику.ХарактеристикаНоменклатуры,
   ЗаказыПоставщику.ЗаказПоставщику,
   СУММА(ЗаказыПоставщику.ОсталосьОтгрузитьЕдиницОтчетов) КАК ОсталосьОтгрузитьЕдиницОтчетов,
   ВЫБОР
       КОГДА ЗаказПоставщикуТовары.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
           ТОГДА ЗаказыПоставщику.ЗаказПоставщикуСклад
       ИНАЧЕ ЗаказПоставщикуТовары.Склад
   КОНЕЦ КАК СкладТЧ
ПОМЕСТИТЬ ОкончательноеРазмещение
ИЗ
   ЗаказыПоставщику КАК ЗаказыПоставщику
       ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
       ПО ЗаказыПоставщику.ЗаказПоставщику = ЗаказПоставщикуТовары.Ссылка
           И ЗаказыПоставщику.Номенклатура = ЗаказПоставщикуТовары.Номенклатура
           И ЗаказыПоставщику.ХарактеристикаНоменклатуры = ЗаказПоставщикуТовары.ХарактеристикаНоменклатуры

СГРУППИРОВАТЬ ПО
   ЗаказыПоставщику.Номенклатура,
   ЗаказыПоставщику.ХарактеристикаНоменклатуры,
   ЗаказыПоставщику.ЗаказПоставщику,
   ЗаказыПоставщику.ЗаказПоставщикуСклад,
   ВЫБОР
       КОГДА ЗаказПоставщикуТовары.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
           ТОГДА ЗаказыПоставщику.ЗаказПоставщикуСклад
       ИНАЧЕ ЗаказПоставщикуТовары.Склад
   КОНЕЦ
;

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ТоварыНаСкладахОстатки.Склад,
   ТоварыНаСкладахОстатки.Номенклатура.НоменклатурнаяГруппа,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры,
   СУММА(ТоварыНаСкладахОстатки.КоличествоОстаток) КАК КоличествоОстаток
ПОМЕСТИТЬ Остатки
ИЗ
   РегистрНакопления.ТоварыНаСкладах.Остатки(&ДатаАнализа, ) КАК ТоварыНаСкладахОстатки
ГДЕ
   ТоварыНаСкладахОстатки.Номенклатура.ВидНоменклатуры = &ВидНоменклатуры

СГРУППИРОВАТЬ ПО
   ТоварыНаСкладахОстатки.Склад,
   ТоварыНаСкладахОстатки.Номенклатура.НоменклатурнаяГруппа,
   ТоварыНаСкладахОстатки.Номенклатура,
   ТоварыНаСкладахОстатки.ХарактеристикаНоменклатуры
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
   ВложенныйЗапрос.Склад КАК Склад,
   ВложенныйЗапрос.НоменклатураНоменклатурнаяГруппа КАК НоменклатураНоменклатурнаяГруппа,
   ВложенныйЗапрос.Номенклатура КАК Номенклатура,
   ВложенныйЗапрос.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
   ВложенныйЗапрос.ХарактеристикаНоменклатуры.ОсновнойПоставщик КАК ХарактеристикаНоменклатурыОсновнойПоставщик,
   ТаблицаНадежностиПоставщиков.ЦП КАК ЦП,
   ТаблицаНадежностиПоставщиков.ВП КАК ВП,
   ВложенныйЗапрос.ХарактеристикаНоменклатуры.ABCкласс КАК ХарактеристикаНоменклатурыABCкласс,
   ВложенныйЗапрос.ХарактеристикаНоменклатуры.XYZкласс КАК ХарактеристикаНоменклатурыXYZкласс,
   ЕСТЬNULL(ВложенныйЗапрос.КоличествоРасход, 0) КАК КоличествоРасход,
   ЕСТЬNULL(ВложенныйЗапрос.КоличествоСпискаА, 0) КАК КоличествоСпискаА,
   ЕСТЬNULL(ВложенныйЗапрос.РасходБезПорогового, 0) КАК РасходБезПорогового,
   ЕСТЬNULL(ВложенныйЗапрос.СДО, 0) КАК СДО,
   ЕСТЬNULL(ВложенныйЗапрос.Остаток, 0) КАК Остаток,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Склад.ИсключитьСДО = ИСТИНА
               ИЛИ ВложенныйЗапрос.ХарактеристикаНоменклатуры.XYZкласс = &XYZкласс
           ТОГДА 0
       ИНАЧЕ ЕСТЬNULL(ВложенныйЗапрос.СДО * (ТаблицаНадежностиПоставщиков.ЦП + ТаблицаНадежностиПоставщиков.ВП), 0)
   КОНЕЦ КАК ЦТЗ,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Склад.ИсключитьСДО = ИСТИНА
               ИЛИ ВложенныйЗапрос.ХарактеристикаНоменклатуры.XYZкласс = &XYZкласс
           ТОГДА 0
       ИНАЧЕ ЕСТЬNULL(ВложенныйЗапрос.СДО * (ТаблицаНадежностиПоставщиков.ВП + 2), 0)
   КОНЕЦ КАК МинОстаток,
   ЕСТЬNULL(ВложенныйЗапрос.ЗаказПоставщику, 0) КАК ЗаказПоставщику,
   ЕСТЬNULL(ВложенныйЗапрос.Потребность, 0) КАК Потребность,
   ЕСТЬNULL(ВложенныйЗапрос.Бронирование, 0) КАК Бронирование,
   ЕСТЬNULL(ВложенныйЗапрос.ОстатокМинусБронирование, 0) КАК ОстатокМинусБронирование,
   &КолБанкДней КАК КолБанкДней,
   ВЫБОР
       КОГДА ВложенныйЗапрос.Склад.ИсключитьСДО = ИСТИНА
           ТОГДА 0
       ИНАЧЕ МаксимальныйОстаток.МаксОстаток
   КОНЕЦ КАК МаксОстаток,
   ЕСТЬNULL(ВложенныйЗапрос.Остаток, 0) - ВЫБОР
       КОГДА ВложенныйЗапрос.Склад.ИсключитьСДО = ИСТИНА
               ИЛИ ВложенныйЗапрос.ХарактеристикаНоменклатуры.XYZкласс = &XYZкласс
           ТОГДА 0
       ИНАЧЕ ЕСТЬNULL(ВложенныйЗапрос.СДО * (ТаблицаНадежностиПоставщиков.ВП + 2), 0)
   КОНЕЦ - ЕСТЬNULL(ВложенныйЗапрос.Потребность, 0) + ЕСТЬNULL(ВложенныйЗапрос.ЗаказПоставщику, 0) КАК РасполагаемыйОбъем
ПОМЕСТИТЬ Окончательная
{ВЫБРАТЬ
   Склад.*,
   НоменклатураНоменклатурнаяГруппа.*,
   Номенклатура.*,
   ХарактеристикаНоменклатуры.*,
   ХарактеристикаНоменклатурыОсновнойПоставщик.*,
   ЦП,
   ВП,
   ХарактеристикаНоменклатурыABCкласс.*,
   ХарактеристикаНоменклатурыXYZкласс.*,
   КоличествоРасход,
   КоличествоСпискаА,
   РасходБезПорогового,
   СДО,
   Остаток,
   ЦТЗ,
   МинОстаток,
   ЗаказПоставщику,
   Потребность,
   Бронирование,
   ОстатокМинусБронирование,
   КолБанкДней,
   РасполагаемыйОбъем}
ИЗ
   (ВЫБРАТЬ
       Продажи.Склад КАК Склад,
       Продажи.Номенклатура.НоменклатурнаяГруппа КАК НоменклатураНоменклатурнаяГруппа,
       Продажи.Номенклатура КАК Номенклатура,
       Продажи.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
       СУММА(Продажи.КоличествоРасход) КАК КоличествоРасход,
       МАКСИМУМ(Продажи.КоличествоСпискаА) КАК КоличествоСпискаА,
       СУММА(Продажи.РасходБезПорогового) КАК РасходБезПорогового,
       NULL КАК Остаток,
       NULL КАК Бронирование,
       NULL КАК ОстатокМинусБронирование,
       NULL КАК ЗаказПоставщику,
       NULL КАК Потребность,
       NULL КАК СДО
   ИЗ
       Продажи КАК Продажи
   
   СГРУППИРОВАТЬ ПО
       Продажи.Склад,
       Продажи.Номенклатура.НоменклатурнаяГруппа,
       Продажи.Номенклатура,
       Продажи.ХарактеристикаНоменклатуры
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       Остатки.Склад,
       Остатки.НоменклатураНоменклатурнаяГруппа,
       Остатки.Номенклатура,
       Остатки.ХарактеристикаНоменклатуры,
       NULL,
       NULL,
       NULL,
       СУММА(Остатки.КоличествоОстаток),
       СУММА(ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)),
       СУММА(Остатки.КоличествоОстаток - ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0)),
       NULL,
       NULL,
       NULL
   ИЗ
       Остатки КАК Остатки
           ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&ДатаАнализа, ) КАК ТоварыВРезервеНаСкладахОстатки
           ПО Остатки.Склад = ТоварыВРезервеНаСкладахОстатки.Склад
               И Остатки.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура
               И Остатки.ХарактеристикаНоменклатуры = ТоварыВРезервеНаСкладахОстатки.ХарактеристикаНоменклатуры
   
   СГРУППИРОВАТЬ ПО
       Остатки.Склад,
       Остатки.НоменклатураНоменклатурнаяГруппа,
       Остатки.Номенклатура,
       Остатки.ХарактеристикаНоменклатуры
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ОкончательноеРазмещение.СкладТЧ,
       ОкончательноеРазмещение.Номенклатура.НоменклатурнаяГруппа,
       ОкончательноеРазмещение.Номенклатура,
       ОкончательноеРазмещение.ХарактеристикаНоменклатуры,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       СУММА(ОкончательноеРазмещение.ОсталосьОтгрузитьЕдиницОтчетов),
       NULL,
       NULL
   ИЗ
       ОкончательноеРазмещение КАК ОкончательноеРазмещение
   
   СГРУППИРОВАТЬ ПО
       ОкончательноеРазмещение.СкладТЧ,
       ОкончательноеРазмещение.Номенклатура,
       ОкончательноеРазмещение.ХарактеристикаНоменклатуры,
       ОкончательноеРазмещение.Номенклатура.НоменклатурнаяГруппа
   
   ОБЪЕДИНИТЬ ВСЕ
   
   ВЫБРАТЬ
       ПотребностиНоменклатуры.Склад,
       ПотребностиНоменклатуры.Номенклатура.НоменклатурнаяГруппа,
       ПотребностиНоменклатуры.Номенклатура,
       ПотребностиНоменклатуры.ХарактеристикаНоменклатуры,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       NULL,
       СУММА(ПотребностиНоменклатуры.ПотребностьОстаток),
       NULL
   ИЗ
       ПотребностиНоменклатуры КАК ПотребностиНоменклатуры
   
   СГРУППИРОВАТЬ ПО
       ПотребностиНоменклатуры.Склад,
       ПотребностиНоменклатуры.Номенклатура,
       ПотребностиНоменклатуры.Х
7 Cerera
 
16.08.12
16:31
блин. не поместился запрос. да еще и не типовая у меня
8 andrewks
 
16.08.12
16:32
ахереть...
9 ptiz
 
16.08.12
16:32
(0) Впихивай расчет в ИТОГИ
10 Жан Пердежон
 
16.08.12
16:34
вместо (0) напиши

Окончательная.РасполагаемыйОбъем,
Окончательная.СДО,
ВЫБОР
   КОГДА Окончательная.СДО = 0
       ТОГДА 0
   ИНАЧЕ Окончательная.РасполагаемыйОбъем / Окончательная.СДО
КОНЕЦ
11 Cerera
 
16.08.12
16:34
(9)поясните пожалуйста
12 Rovan
 
гуру
16.08.12
16:36
делай через ВТ и через несколько Выполнить() - так можно посмотреть результаты промежуточных вычислений
13 Cerera
 
16.08.12
16:38
(12)ну я в консоли отлаживаю запрос. там виртуальные таблицы - да. окончательная виртуальная таблица содержит правильные столбики. а вот из неё пытаюсь выдернуть нужные мне поля и вот эту разность и почему то дрянь какаято вместо обычного деления.
14 Cerera
 
16.08.12
16:39
(10)не совсем понял чем отличается?
15 ptiz
 
17.08.12
09:27
(11) Ты наверняка используешь ИТОГИ ПО. Данные из них как раз и выводятся в отчет, поэтому надо писать:
ИТОГИ ПО
ВЫБОР
   КОГДА СУММА(Окончательная.СДО) = 0
       ТОГДА 0
   ИНАЧЕ СУММА(Окончательная.РасполагаемыйОбъем) / СУММА(Окончательная.СДО)
КОНЕЦ
Независимо от того, куда вы едете — это в гору и против ветра!