Вход | Регистрация
 

Проблема с запросом

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ПомесячныйРасходТМЦ.ВариантИсполнения КАК ВариантИсполнения,
    СУММА(ПомесячныйРасходТМЦ.КолРасход) КАК КолРасход,
    ПомесячныйРасходТМЦ.МесяцРасхода КАК МесяцРасхода
ИЗ
    (ВЫБРАТЬ
        ОстаткиТМЦОбороты.ВариантИсполнения КАК ВариантИсполнения,
        ОстаткиТМЦОбороты.КолРасход / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасход,
        НАЧАЛОПЕРИОДА(ОстаткиТМЦОбороты.Период, МЕСЯЦ) КАК МесяцРасхода
    ИЗ
        РегистрНакопления.ОстаткиТМЦ.Обороты(
                &АнализРасходов_ДатаНач,
                &АнализРасходов_ДатаКон,
                Регистратор,
                НЕ &ПоФилиалу
                    ИЛИ Склад.Владелец = &Филиал) КАК ОстаткиТМЦОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ БазовыеДанные КАК БазовыеДанные
            ПО ОстаткиТМЦОбороты.ВариантИсполнения = БазовыеДанные.ВариантИсполнения
    ГДЕ
        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
        И (НЕ &ПоФирме
                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
        И (&ПоФилиалу
                ИЛИ НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦМеждуФилиалами)
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВводРасходаТМЦТЧ.ВариантИсполнения,
        ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / БазовыеДанные.ЕдИзмКоэффициент,
        НАЧАЛОПЕРИОДА(ВводРасходаТМЦТЧ.Ссылка.Дата, МЕСЯЦ)
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
    ГДЕ
        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК ПомесячныйРасходТМЦ

СГРУППИРОВАТЬ ПО
    ПомесячныйРасходТМЦ.ВариантИсполнения,
    ПомесячныйРасходТМЦ.МесяцРасхода

УПОРЯДОЧИТЬ ПО
    ПомесячныйРасходТМЦ.МесяцРасхода
ИТОГИ
    СУММА(КолРасход)
ПО
    ОБЩИЕ,
    ВариантИсполнения,
    МесяцРасхода
;

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


Вывожу вот так
Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
            Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                 Тогда
                
                Область.Параметры.ЗначениеГрСтрПостав     = ВхЗапрВыб.НоменклатураПоставщика;
            иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                Область.Параметры.ЗначениеГрСтрПостав     = ВхЗапрВыб.ВариантИсполненияПоставщика;
                КонецЕсли;
            КонецЕсли;
            ВхТаблДок.Присоединить(Область);



Когда ставлю точку останова на место,чтобы посмотреть ВхЗапрВыб, то там Значения null
Помогите пожалуйста найти ошибку..
   dka80
 
1 - 08.07.20 - 12:07
Ну очевидно же, что на четвером экране запроса ошибка
   dka80
 
2 - 08.07.20 - 12:10
Если в консоле запросов есть, то выгрузи результат запроса в таблицу значений и посмотри - есть там твоя номенклатура? Если нет, возможно, некорректно параметры запроса устанавливаются. Если есть, то у тебя есть в запросе "Итоги" и, возможно, логичнее обход по группировкам делать
   Privetanya
 
3 - 08.07.20 - 12:38
(2)  Результат = Запрос.Выполнить();
СпособОбхода = ОбходРезультатаЗапроса.Прямой;
ТабЗнач = Результат.Выгрузить(СпособОбхода); 
Попробовали вот так, данные регистра выходят,т.е. работает как надо. Почему тогда дальше значение теряется?
   ZDenis
 
4 - 08.07.20 - 12:47
(3)Какое значение теряется? Что такое ВхЗапрВыб?
   Privetanya
 
5 - 08.07.20 - 12:53
(4)
ВхЗапрВыб- это значения запроса

ВхЗапрВыб.НоменклатураПоставщика
ВхЗапрВыб.ВариантИсполненияПоставщика
ВхЗапрВыб.Поставщик
а вот эти значения становятся null
   Privetanya
 
6 - 08.07.20 - 12:55
(4) Пока ВхЗапрВыб.Следующий() Цикл - вот отсюда это
   dka80
 
7 - 08.07.20 - 13:30
(6) у тебя сначала идут итоги. В них нет твоей номенклатуры. Либо убери итоги из запроса, либо обходи по группировкам, либо сделай так:
ВхЗапрВыб.Следующий();
Пока ВхЗапрВыб.Следующий() Цикл
   Privetanya
 
8 - 08.07.20 - 13:32
(7) https://ibb.co/gMvcnY5 В запросе получаем вот такие значения
   Privetanya
 
9 - 08.07.20 - 13:32
(7) если делать атк как вы написали,то так не выводятся данные,только шапка
   dka80
 
10 - 08.07.20 - 14:02
(10) обход результата запроса по группировкам.
https://its.1c.ru/db/metod8dev/content/2658/hdoc
   Privetanya
 
11 - 08.07.20 - 14:09
(10) Если ВхЗапрВыб.ТипЗаписи() = ТипЗаписиЗапроса.ИтогПоИерархии Тогда 
            
            _ЗапрВыб         = ВхЗапрВыб.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, ВхТаблГр[ВхНомГр].ИмяИзмерения);
            ВывестиГруппировку(ВхМакет, _ЗапрВыб, "Строки", ВхНомГр, ВхТаблГр, ВхУровень + 1, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику);
            
        Иначе
            
            Если _ИмяГр = "Номенклатура" И НЕ _Номенклатура.РазрешитьНесколькоВариантовИсполнения Тогда
                Продолжить;
            КонецЕсли;
            
            Если ВхНомГр + 1 < ВхТаблГр.Количество() Тогда
                _ЗапрВыб         = ВхЗапрВыб.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, ВхТаблГр[ВхНомГр + 1].ИмяИзмерения);// имя след. группировки

                ВывестиГруппировку(ВхМакет, _ЗапрВыб, "Строки", ВхНомГр + 1, ВхТаблГр, ВхУровень + 1, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику);
            КонецЕсли;    
            
        КонецЕсли;    
 у меня вот это
   Ёпрст
 
12 - 08.07.20 - 14:26
(0) зачетная радуга будет..
   Ёпрст
 
13 - 08.07.20 - 14:27
И кто вам посоветовал так делать ?
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
        ПО РассчитанныеДанные.Номенклатура = НоменклатураПоставщиков.Номенклатура
   Privetanya
 
14 - 08.07.20 - 14:28
(13) Никто,а как лучше сделать?
   Ёпрст
 
15 - 08.07.20 - 14:28
если для одной номенклатуры в рег сведений есть кучка записей, то ваше левое соединение приведёт к увеличению результата на это количество..
Оно вам точно так надо ?
   Ёпрст
 
16 - 08.07.20 - 14:30
Грубо, было:

Валенки Остаток 100 Сумма 200
станет


Валенки НоменклатураПоставщика1 Остаток 100 Сумма 200
Валенки НоменклатураПоставщика2 Остаток 100 Сумма 200
Валенки НоменклатураПоставщика3 Остаток 100 Сумма 200
....
Валенки НоменклатураПоставщикаN Остаток 100 Сумма 200
   Privetanya
 
17 - 08.07.20 - 14:30
(15) нет,так не надо. На одну номенклатуру может быть много записей
   Ёпрст
 
18 - 08.07.20 - 14:30
Это точно так надо ? ;)
   Ёпрст
 
19 - 08.07.20 - 14:31
(17) ну тогда подумайте, как надо и что хотите в итоге видеть
   Privetanya
 
20 - 08.07.20 - 14:35
   dka80
 
21 - 08.07.20 - 14:38
(21) сделай уже на скд отчет
   Privetanya
 
22 - 08.07.20 - 14:40
(21) нет,нужно сделать на этой форме. Отчет уже был,просто нужно добавить колонки
   Ёпрст
 
23 - 08.07.20 - 14:42
(22)

Нарисуй финальный отчет, когда одной номенклатуре сопоставлено 5 номенклатур посавщика.
А не макет отчета
Как это в отчете выглядеть будет ?
   Privetanya
 
24 - 08.07.20 - 14:53
   Ёпрст
 
25 - 08.07.20 - 15:04
(24) у регсведений НоменклатураПоставщиков , какие измерения и ресурсы ?
   Privetanya
 
26 - 08.07.20 - 15:07
(25) Только измерения-Номенклатура,Вариант Исполнения,Поставщик,Номенклатура поставщика,Вариант исполнения поставщика
   Privetanya
 
27 - 08.07.20 - 15:33
(25) Вот так надо?
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СвернутыеБазовыеДанные.Номенклатура КАК Номенклатура,
    СвернутыеБазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
    СвернутыеБазовыеДанные.КолПотребностьВнешнаяя КАК КолПотребностьВнешнаяя,
    СвернутыеБазовыеДанные.КолПотребностьПроизводства КАК КолПотребностьПроизводства,
    СвернутыеБазовыеДанные.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
    СвернутыеБазовыеДанные.ОснПоставщик КАК ОснПоставщик,
    СвернутыеБазовыеДанные.Активность КАК Активность,
    &БазоваяЕдИзм КАК ЕдИзм,
    &БазоваяЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
    ВЫБОР
        КОГДА СвернутыеБазовыеДанные.Номенклатура.ОснЕдИзм_Закупки = ЗНАЧЕНИЕ(Справочник.ЕдИзм.ПустаяСсылка)
            ТОГДА СвернутыеБазовыеДанные.Номенклатура.БазоваяЕдИзм.Коэффициент
        ИНАЧЕ СвернутыеБазовыеДанные.Номенклатура.ОснЕдИзм_Закупки.Коэффициент
    КОНЕЦ КАК ЕдИзм_ЗакупкиКоэффициент,
    СвернутыеБазовыеДанные.Поставщик КАК Поставщик,
    СвернутыеБазовыеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
    СвернутыеБазовыеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
ПОМЕСТИТЬ БазовыеДанные
ИЗ
    (ВЫБРАТЬ
        РазвернутыеБазовыеДанные.Номенклатура КАК Номенклатура,
        РазвернутыеБазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.Активность
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Активность,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.ОснПоставщик
            ИНАЧЕ РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик
        КОНЕЦ КАК ОснПоставщик,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьВнешнаяя) КАК КолПотребностьВнешнаяя,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьПроизводства) КАК КолПотребностьПроизводства,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьВнутренняя) КАК КолПотребностьВнутренняя,
        РазвернутыеБазовыеДанные.Поставщик КАК Поставщик,
        РазвернутыеБазовыеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
        РазвернутыеБазовыеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
    ИЗ
        (ВЫБРАТЬ
            ПотребностиВТМЦ_ПоВидамПотребностей.Номенклатура КАК Номенклатура,
            ПотребностиВТМЦ_ПоВидамПотребностей.ВариантИсполнения КАК ВариантИсполнения,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьВнешняя КАК КолПотребностьВнешнаяя,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьПроизводственная КАК КолПотребностьПроизводства,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
            NULL КАК Поставщик,
            NULL КАК НоменклатураПоставщика,
            NULL КАК ВариантИсполненияПоставщика
        ИЗ
            (ВЫБРАТЬ
                ПотребностиВТМЦ.ВидПотребности КАК ВидПотребности,
                ПотребностиВТМЦ.Номенклатура КАК Номенклатура,
                ПотребностиВТМЦ.ВариантИсполнения КАК ВариантИсполнения,
                ПотребностиВТМЦ.КолОстаток КАК КолОстаток,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Внешняя"
                            ИЛИ ПотребностиВТМЦ.ВидПотребности = "Межфилиальная"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьВнешняя,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Внутренняя"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьВнутренняя,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Производственная"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьПроизводственная
            ИЗ
                (ВЫБРАТЬ
                    ВЫБОР
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказНаПроизводство
                            ТОГДА "Производственная"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказПокупателя
                            ТОГДА "Внешняя"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказВнутренний
                            ТОГДА "Внутренняя"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказНаПеремещениеТМЦМеждуФилиалами
                            ТОГДА "Межфилиальная"
                    КОНЕЦ КАК ВидПотребности,
                    ПотребностиВТМЦОстатки.Номенклатура КАК Номенклатура,
                    ПотребностиВТМЦОстатки.ВариантИсполнения КАК ВариантИсполнения,
                    ПотребностиВТМЦОстатки.КолОстаток КАК КолОстаток
                ИЗ
                    РегистрНакопления.ПотребностиВТМЦ.Остатки(
                            &ДатаКон,
                            (НЕ &УказанГоризонтАнализаПотребностей
                                ИЛИ НЕ &СУчетомСрокаПоставки
                                    И ЗаказПотребность.ДатаОбеспеченияПотребностей <= &ГоризонтАнализаПотребностей
                                ИЛИ &СУчетомСрокаПоставки
                                    И ВЫБОР
                                        КОГДА ВариантИсполнения.СрокПоставки = 0
                                            ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПотребность.ДатаОбеспеченияПотребностей, ДЕНЬ, -Номенклатура.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                        ИНАЧЕ ДОБАВИТЬКДАТЕ(ЗаказПотребность.ДатаОбеспеченияПотребностей, ДЕНЬ, -ВариантИсполнения.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                    КОНЕЦ)
                                И (НЕ &ПоФирме
                                    ИЛИ Фирма = &Фирма)
                                И (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)) КАК ПотребностиВТМЦОстатки
                ГДЕ
                    (ПотребностиВТМЦОстатки.КолОстаток > 0
                            ИЛИ НЕ &БезУчетаОтрицательныхПотребностей)
                    И (НЕ &ТолькоУтвержденныеЗаказыПотребности
                            ИЛИ ПотребностиВТМЦОстатки.ЗаказПотребность.Утвержден)) КАК ПотребностиВТМЦ
            ГДЕ
                (&АнализВнешнейПотребности
                            И ПотребностиВТМЦ.ВидПотребности = "Внешняя"
                        ИЛИ &АнализВнешнейПотребности
                            И &ПоФилиалу
                            И ПотребностиВТМЦ.ВидПотребности = "Межфилиальная"
                        ИЛИ &АнализВнутреннейПотребности
                            И ПотребностиВТМЦ.ВидПотребности = "Внутренняя"
                        ИЛИ &АнализПотребностиПроизводства
                            И ПотребностиВТМЦ.ВидПотребности = "Производственная")) КАК ПотребностиВТМЦ_ПоВидамПотребностей
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            МинимальныеОстаткиТМЦ.Номенклатура,
            МинимальныеОстаткиТМЦ.ВариантИсполнения,
            0,
            0,
            0,
            NULL,
            NULL,
            NULL
        ИЗ
            РегистрСведений.МинимальныеОстаткиТМЦ КАК МинимальныеОстаткиТМЦ
        ГДЕ
            МинимальныеОстаткиТМЦ.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
            И &ОтборПоЗаданнымМинимальнымОстаткам
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            Номенклатура.Ссылка,
            ВариантыИсполнения.Ссылка,
            0,
            0,
            0,
            NULL,
            NULL,
            NULL
        ИЗ
            Справочник.Номенклатура КАК Номенклатура
                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыИсполнения КАК ВариантыИсполнения
                ПО (ВариантыИсполнения.Владелец = Номенклатура.Ссылка)
        ГДЕ
            &ОтборПоИмеющимсяПотребностям = ЛОЖЬ
            И НЕ ВариантыИсполнения.Ссылка ЕСТЬ NULL
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            НоменклатураПоставщиков.Номенклатура,
            НоменклатураПоставщиков.ВариантИсполнения,
            NULL,
            NULL,
            NULL,
            НоменклатураПоставщиков.Поставщик,
            НоменклатураПоставщиков.НоменклатураПоставщика,
            НоменклатураПоставщиков.ВариантИсполненияПоставщика
        ИЗ
            РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков) КАК РазвернутыеБазовыеДанные
    
    СГРУППИРОВАТЬ ПО
        РазвернутыеБазовыеДанные.ВариантИсполнения,
        РазвернутыеБазовыеДанные.Номенклатура,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.ОснПоставщик
            ИНАЧЕ РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик
        КОНЕЦ,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА ИСТИНА
            ИНАЧЕ РазвернутыеБазовыеДанные.Номенклатура.Активность
        КОНЕЦ,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.Активность
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ,
        РазвернутыеБазовыеДанные.Поставщик,
        РазвернутыеБазовыеДанные.НоменклатураПоставщика,
        РазвернутыеБазовыеДанные.ВариантИсполненияПоставщика) КАК СвернутыеБазовыеДанные
ГДЕ
    &ТекстБазовыеУсловия
{ГДЕ
    СвернутыеБазовыеДанные.Номенклатура.*,
    СвернутыеБазовыеДанные.ВариантИсполнения.*,
    СвернутыеБазовыеДанные.ОснПоставщик.*,
    СвернутыеБазовыеДанные.Поставщик.*,
    СвернутыеБазовыеДанные.НоменклатураПоставщика,
    СвернутыеБазовыеДанные.ВариантИсполненияПоставщика}
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ПомесячныйРасходТМЦ.ВариантИсполнения КАК ВариантИсполнения,
    СУММА(ПомесячныйРасходТМЦ.КолРасход) КАК КолРасход,
    ПомесячныйРасходТМЦ.МесяцРасхода КАК МесяцРасхода
ИЗ
    (ВЫБРАТЬ
        ОстаткиТМЦОбороты.ВариантИсполнения КАК ВариантИсполнения,
        ОстаткиТМЦОбороты.КолРасход / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасход,
        НАЧАЛОПЕРИОДА(ОстаткиТМЦОбороты.Период, МЕСЯЦ) КАК МесяцРасхода
    ИЗ
        РегистрНакопления.ОстаткиТМЦ.Обороты(
                &АнализРасходов_ДатаНач,
                &АнализРасходов_ДатаКон,
                Регистратор,
                НЕ &ПоФилиалу
                    ИЛИ Склад.Владелец = &Филиал) КАК ОстаткиТМЦОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ БазовыеДанные КАК БазовыеДанные
            ПО ОстаткиТМЦОбороты.ВариантИсполнения = БазовыеДанные.ВариантИсполнения
    ГДЕ
        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
        И (НЕ &ПоФирме
                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
        И (&ПоФилиалу
                ИЛИ НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦМеждуФилиалами)
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВводРасходаТМЦТЧ.ВариантИсполнения,
        ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / БазовыеДанные.ЕдИзмКоэффициент,
        НАЧАЛОПЕРИОДА(ВводРасходаТМЦТЧ.Ссылка.Дата, МЕСЯЦ)
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
    ГДЕ
        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК ПомесячныйРасходТМЦ

СГРУППИРОВАТЬ ПО
    ПомесячныйРасходТМЦ.ВариантИсполнения,
    ПомесячныйРасходТМЦ.МесяцРасхода

УПОРЯДОЧИТЬ ПО
    ПомесячныйРасходТМЦ.МесяцРасхода
ИТОГИ
    СУММА(КолРасход)
ПО
    ОБЩИЕ,
    ВариантИсполнения,
    МесяцРасхода
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    РассчитанныеДанные.Номенклатура КАК Номенклатура,
    РассчитанныеДанные.ВариантИсполнения КАК ВариантИсполнения,
    РассчитанныеДанные.КолПотребностьВнешнаяя КАК КолПотребностьВнешнаяя,
    РассчитанныеДанные.КолПотребностьПроизводства КАК КолПотребностьПроизводства,
    РассчитанныеДанные.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
    РассчитанныеДанные.ОснПоставщик КАК ОснПоставщик,
    РассчитанныеДанные.Активность КАК Активность,
    РассчитанныеДанные.Номенклатура.РазрешитьНесколькоВариантовИсполнения КАК РазрешитьНесколькоВариантовИсполнения,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.НормаПополнения = 0
            ТОГДА РассчитанныеДанные.Номенклатура.НормаПополнения
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.НормаПополнения
    КОНЕЦ * РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент / РассчитанныеДанные.ЕдИзмКоэффициент КАК НормаПополнения,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.МинПартияЗакупки = 0
            ТОГДА РассчитанныеДанные.Номенклатура.МинПартияЗакупки
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.МинПартияЗакупки
    КОНЕЦ * РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент / РассчитанныеДанные.ЕдИзмКоэффициент КАК МинПартияЗакупки,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.СрокПоставки = 0
            ТОГДА РассчитанныеДанные.Номенклатура.СрокПоставки
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.СрокПоставки
    КОНЕЦ КАК СрокПоставкиДней,
    РассчитанныеДанные.КолОстаток КАК КолОстаток,
    РассчитанныеДанные.КолОстаток_ТМЦ КАК КолОстаток_ТМЦ,
    РассчитанныеДанные.КолОстаток_ТМЦПереданные КАК КолОстаток_ТМЦПереданные,
    РассчитанныеДанные.КолРезерв КАК КолРезерв,
    РассчитанныеДанные.КолРезерв_ТМЦ КАК КолРезерв_ТМЦ,
    РассчитанныеДанные.КолРезерв_ТМЦПереданные КАК КолРезерв_ТМЦПереданные,
    РассчитанныеДанные.КолОжидаемыеПоступления КАК КолОжидаемыеПоступления,
    РассчитанныеДанные.КолРасходЗаДень КАК КолРасходЗаДень,
    РассчитанныеДанные.КолМинОстаток КАК КолМинОстаток,
    РассчитанныеДанные.КолСвободныйОстаток КАК КолСвободныйОстаток,
    РассчитанныеДанные.КолПрофицит КАК КолПрофицит,
    РассчитанныеДанные.ЕдИзм КАК ЕдИзм,
    РассчитанныеДанные.ЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
    РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент КАК ЕдИзм_ЗакупкиКоэффициент,
    РассчитанныеДанные.КолОстаток_СкладМатериалов КАК КолОстаток_СкладМатериалов,
    РассчитанныеДанные.Поставщик КАК Поставщик,
    РассчитанныеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
    РассчитанныеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
{ВЫБРАТЬ
    Номенклатура.*,
    ВариантИсполнения.*,
    ОснПоставщик.*,
    Поставщик.*,
    НоменклатураПоставщика,
    ВариантИсполненияПоставщика}
ИЗ
    (ВЫБРАТЬ
        БазовыеДанные.Номенклатура КАК Номенклатура,
        БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
        БазовыеДанные.КолПотребностьВнешнаяя / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьВнешнаяя,
        БазовыеДанные.КолПотребностьПроизводства / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьПроизводства,
        БазовыеДанные.КолПотребностьВнутренняя / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьВнутренняя,
        БазовыеДанные.ОснПоставщик КАК ОснПоставщик,
        БазовыеДанные.Активность КАК Активность,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_ТМЦ, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_ТМЦ,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_ТМЦПереданные, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_ТМЦПереданные,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв_ТМЦ, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв_ТМЦ,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв_ТМЦПереданные, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв_ТМЦПереданные,
        ЕСТЬNULL(ДополнительныеДанные.КолОжидаемыеПоступления, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОжидаемыеПоступления,
        ЕСТЬNULL(ДополнительныеДанные.КолРасходЗаДень, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасходЗаДень,
        ЕСТЬNULL(ДополнительныеДанные.КолМинОстаток, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолМинОстаток,
        (ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) - ЕСТЬNULL(ДополнительныеДанные.КолРезерв, 0)) / БазовыеДанные.ЕдИзмКоэффициент КАК КолСвободныйОстаток,
        (ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) + ЕСТЬNULL(ДополнительныеДанные.КолОжидаемыеПоступления, 0) - БазовыеДанные.КолПотребностьВнешнаяя - БазовыеДанные.КолПотребностьПроизводства - БазовыеДанные.КолПотребностьВнутренняя - ЕСТЬNULL(ДополнительныеДанные.КолМинОстаток, 0) * &ПрофицитСУчетомМинОстатка) / БазовыеДанные.ЕдИзмКоэффициент КАК КолПрофицит,
        БазовыеДанные.ЕдИзм КАК ЕдИзм,
        БазовыеДанные.ЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
        БазовыеДанные.ЕдИзм_ЗакупкиКоэффициент КАК ЕдИзм_ЗакупкиКоэффициент,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_СкладМатериалов, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_СкладМатериалов,
        БазовыеДанные.Поставщик КАК Поставщик,
        БазовыеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
        БазовыеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                РазвернутыеДополнительныеДанные.ВариантИсполнения КАК ВариантИсполнения,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток) КАК КолОстаток,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_ТМЦ) КАК КолОстаток_ТМЦ,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_ТМЦПереданные) КАК КолОстаток_ТМЦПереданные,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв) КАК КолРезерв,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв_ТМЦ) КАК КолРезерв_ТМЦ,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв_ТМЦПереданные) КАК КолРезерв_ТМЦПереданные,
                СУММА(РазвернутыеДополнительныеДанные.КолОжидаемыеПоступления) КАК КолОжидаемыеПоступления,
                СУММА(РазвернутыеДополнительныеДанные.КолРасходЗаДень) КАК КолРасходЗаДень,
                СУММА(РазвернутыеДополнительныеДанные.КолМинОстаток) КАК КолМинОстаток,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_СкладМатериалов) КАК КолОстаток_СкладМатериалов
            ИЗ
                (ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
                    0 КАК КолОстаток,
                    0 КАК КолОстаток_ТМЦ,
                    0 КАК КолОстаток_ТМЦПереданные,
                    0 КАК КолРезерв,
                    0 КАК КолРезерв_ТМЦ,
                    0 КАК КолРезерв_ТМЦПереданные,
                    0 КАК КолОжидаемыеПоступления,
                    0 КАК КолРасходЗаДень,
                    0 КАК КолМинОстаток,
                    0 КАК КолОстаток_СкладМатериалов
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    ОстаткиТМЦОстатки.КолОстаток,
                    ОстаткиТМЦОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&ДатаКон, ) КАК ОстаткиТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ ОстаткиТМЦОстатки.Фирма = &Фирма)
                    И ОстаткиТМЦОстатки.Склад = &СкладМатериалов
                {ГДЕ
                    ОстаткиТМЦОстатки.Склад.*}
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    ОстаткиТМЦПереданныеОстатки.КолОстаток,
                    0,
                    ОстаткиТМЦПереданныеОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦПереданные.Остатки(&ДатаКон, ) КАК ОстаткиТМЦПереданныеОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦПереданныеОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ ОстаткиТМЦПереданныеОстатки.Фирма = &Фирма)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    РезервыОстатки.КолОстаток,
                    РезервыОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки(
                                &ДатаКон,
                                (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)
                                    И (НЕ &ПоФирме
                                        ИЛИ ДокЗаказ.Фирма = &Фирма)) КАК РезервыОстатки
                        ПО БазовыеДанные.ВариантИсполнения = РезервыОстатки.ВариантИсполнения
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    РезервыТМЦПереданныеОстатки.КолОстаток,
                    0,
                    РезервыТМЦПереданныеОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыТМЦПереданные.Остатки(&ДатаКон, ) КАК РезервыТМЦПереданныеОстатки
                        ПО БазовыеДанные.ВариантИсполнения = РезервыТМЦПереданныеОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ РезервыТМЦПереданныеОстатки.ДокЗаказ.Фирма = &Фирма)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    ОжидаемыеПоступленияТМЦОстатки.КолОстаток,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОжидаемыеПоступленияТМЦ.Остатки(
                                &ДатаКон,
                                (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)
                                    И (НЕ &ПоФирме
                                        ИЛИ Фирма = &Фирма)
                                    И (НЕ &УказанГоризонтАнализаПотребностей
                                        ИЛИ НЕ &СУчетомСрокаПоставки
                                            И ЗаказОбеспечение.ДатаИсполнения <= &ГоризонтАнализаПотребностей
                                        ИЛИ &СУчетомСрокаПоставки
                                            И ВЫБОР
                                                КОГДА ВариантИсполнения.СрокПоставки = 0
                                                    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказОбеспечение.ДатаИсполнения, ДЕНЬ, -Номенклатура.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                                ИНАЧЕ ДОБАВИТЬКДАТЕ(ЗаказОбеспечение.ДатаИсполнения, ДЕНЬ, -ВариантИсполнения.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                            КОНЕЦ)) КАК ОжидаемыеПоступленияТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОжидаемыеПоступленияТМЦОстатки.ВариантИсполнения
                ГДЕ
                    (&ПоФилиалу
                            ИЛИ НЕ ОжидаемыеПоступленияТМЦОстатки.ЗаказОбеспечение ССЫЛКА Документ.ЗаказНаПеремещениеТМЦМеждуФилиалами)
                    И (НЕ &ТолькоУтвержденныеЗаказыОбеспечение
                            ИЛИ ОжидаемыеПоступленияТМЦОстатки.ЗаказОбеспечение.Утвержден)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    РасходТМЦ_Сводно.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    РасходТМЦ_Сводно.КолРасходЗаДень,
                    0,
                    0
                ИЗ
                    (ВЫБРАТЬ
                        БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
                        ВЫБОР
                            КОГДА &ДнейВПериоде = 0
                                ТОГДА 0
                            ИНАЧЕ ОстаткиТМЦОбороты.КолРасход / &ДнейВПериоде
                        КОНЕЦ КАК КолРасходЗаДень
                    ИЗ
                        БазовыеДанные КАК БазовыеДанные
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Обороты(&АнализРасходов_ДатаНач, &АнализРасходов_ДатаКон, Регистратор, ) КАК ОстаткиТМЦОбороты
                            ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОбороты.ВариантИсполнения
                    ГДЕ
                        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
                        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
                        И (НЕ &ПоФирме
                                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
                    
                    ОБЪЕДИНИТЬ ВСЕ
                    
                    ВЫБРАТЬ
                        ВводРасходаТМЦТЧ.ВариантИсполнения,
                        ВЫБОР
                            КОГДА &ДнейВПериоде = 0
                                ТОГДА 0
                            ИНАЧЕ ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / &ДнейВПериоде
                        КОНЕЦ
                    ИЗ
                        БазовыеДанные КАК БазовыеДанные
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
                            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
                    ГДЕ
                        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
                        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
                        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК РасходТМЦ_Сводно
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    МинимальныеОстаткиТМЦ.Кол,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МинимальныеОстаткиТМЦ КАК МинимальныеОстаткиТМЦ
                        ПО БазовыеДанные.ВариантИсполнения = МинимальныеОстаткиТМЦ.ВариантИсполнения
                            И (МинимальныеОстаткиТМЦ.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка))
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    ОстаткиТМЦОстатки.КолОстаток
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&ДатаКон, Склад В (&СкладМатериалов)) КАК ОстаткиТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОстатки.ВариантИсполнения) КАК РазвернутыеДополнительныеДанные
            
            СГРУППИРОВАТЬ ПО
                РазвернутыеДополнительныеДанные.ВариантИсполнения) КАК ДополнительныеДанные
            ПО БазовыеДанные.ВариантИсполнения = ДополнительныеДанные.ВариантИсполнения) КАК РассчитанныеДанные
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    ВариантИсполнения.*,
    ОснПоставщик.*}
ИТОГИ
    СУММА(КолПотребностьВнешнаяя),
    СУММА(КолПотребностьПроизводства),
    СУММА(КолПотребностьВнутренняя),
    МАКСИМУМ(НормаПополнения),
    МАКСИМУМ(МинПартияЗакупки),
    МАКСИМУМ(СрокПоставкиДней),
    СУММА(КолОстаток),
    СУММА(КолОстаток_ТМЦ),
    СУММА(КолОстаток_ТМЦПереданные),
    СУММА(КолРезерв),
    СУММА(КолРезерв_ТМЦ),
    СУММА(КолРезерв_ТМЦПереданные),
    СУММА(КолОжидаемыеПоступления),
    СУММА(КолРасходЗаДень),
    СУММА(КолМинОстаток),
    СУММА(КолСвободныйОстаток),
    СУММА(КолПрофицит),
    СУММА(КолОстаток_СкладМатериалов)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    ВариантИсполнения.*,
    КолПотребностьВнешнаяя,
    КолПотребностьПроизводства,
    КолПотребностьВнутренняя,
    ОснПоставщик.*,
    Активность,
    РазрешитьНесколькоВариантовИсполнения,
    НормаПополнения,
    СрокПоставкиДней,
    КолОстаток,
    КолОстаток_ТМЦ,
    КолОстаток_ТМЦПереданные,
    КолРезерв,
    КолРезерв_ТМЦ,
    КолРезерв_ТМЦПереданные,
    КолРасходЗаДень,
    КолМинОстаток,
    КолСвободныйОстаток,
    КолОстаток_СкладМатериалов,
    Поставщик.*,
    НоменклатураПоставщика,
    ВариантИсполненияПоставщика}
   Ёпрст
 
28 - 08.07.20 - 23:04
(27) не.. тут разве что делать пакетный запрос, где номенклатуру поставщика вытаскивать своим запросом с фильтром на номенклатуру из изначального запроса.
Потом обходить 2 результата при выполнить пакет, и присоединять вправо колоночки, тупо позиционируясь во второй выборке
   Privetanya
 
29 - 09.07.20 - 07:53
(28) Может у вас есть пример?
   Ёпрст
 
30 - 09.07.20 - 11:20
(29) любой типовой отчет на основе УниверсальногоОтчета на построителе, там галка "по свойствам и категориям"..и при выборе свойства или категории поставить их в группировку по колонкам.
Будет то, что ты хочешь.
 
 Рекламное место пустует
   Ёпрст
 
31 - 09.07.20 - 11:21
единтвенное, он все числовые показатели разбивает пропорционально количеству этих "категорий"
   Privetanya
 
32 - 09.07.20 - 11:30
(31) Смотрите,сейчас я получаю,вот это в запросе https://ibb.co/sjZLn4S
У меня же у одной номенклатуры может быть максимум 3 номенклатуры поставщика
Вот,может просто можно поправить вывод по группировкам,когда уже на макет выходит?
   Ёпрст
 
33 - 09.07.20 - 11:31
   Privetanya
 
34 - 09.07.20 - 11:44
(33) это же скд,нет?
   Ёпрст
 
35 - 09.07.20 - 12:13
(34) нет. Это на построителе.
   Privetanya
 
36 - 09.07.20 - 12:25
(35) вот в этом запросе данные не задваивает (27) , и выводит вот так :https://ibb.co/7tJczzC. А в отчет у меня выводятся только 3 уровня(2,3,4),может можно вывести и дальнейшие строки?
   Privetanya
 
37 - 09.07.20 - 12:27
(35) _ТаблГр = ИзмеренияСтроки.Скопировать(Новый Структура("Использование", Истина));
    
    ЗапрВыборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, _ТаблГр[0].ИмяИзмерения);
        
    ВхТаблДок.НачатьАвтогруппировкуСтрок();
    ВывестиГруппировку(_Макет, ЗапрВыборка, "Строки", 0, _ТаблГр, 0, ВхТаблДок);
    ВхТаблДок.ЗакончитьАвтогруппировкуСтрок();



Процедура ВывестиГруппировку(ВхМакет, ВхЗапрВыб, ВхТипГр, ВхНомГр, ВхТаблГр, ВхУровень, ВхТаблДок, ВхТаблПакетныйЗаказПоставщику = Неопределено)
    
    _ДнейВМесяце = 30;
    
    Если ВхУровень >= 5 Тогда// максимум 5 уровней (0-4) 

        Возврат;
    КонецЕсли;    
    
    _ИмяСекции                  = ?(ВхТипГр = "Строки", "Гр" + ВхУровень, "ГрИтоги");
    _ИмяГр                      = ВхТаблГр[ВхНомГр].ИмяИзмерения;
    _ВыводитьИтогиПоГруппировке = ВхТаблГр[ВхНомГр].ВыводитьИтоги;
    _ТипИзмерения               = ВхТаблГр[ВхНомГр].ТипИзмерения;
    
    Пока ВхЗапрВыб.Следующий() Цикл
        
        // "_ИмяСекции|Начало"

        Если ВхТипГр = "Итоги" Тогда 
            
            Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Начало");
            ВхТаблДок.Вывести(Область, ВхУровень);
            
        Иначе    
            
            _ЗначениеГр = ВхЗапрВыб[_ИмяГр];// значение группировки по имени

            
            Если ВхНомГр = (ВхТаблГр.Количество() - 1) И _ИмяГр = "ВариантИсполнения" Тогда// последняя группировка ("ВариантИсполнения")

                Если глПустоеЗначение(_ЗначениеГр) Тогда
                    Продолжить;    
                КонецЕсли;     
            КонецЕсли;
                        
            Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Начало");
            Если ТипЗнч(_ЗначениеГр) = Тип("СправочникСсылка.Номенклатура") Тогда
                Если _ЗначениеГр.ЭтоГруппа Тогда
                    Область.Параметры.ЗначениеГрСтр = ВРЕГ(глНоменклатураСтр(_ЗначениеГр));
                Иначе
                    
                    Если мИспользоватьАртикулы Тогда
                        Область.Параметры.Артикул     = _ЗначениеГр.Артикул;
                    КонецЕсли;
                    
                    Область.Параметры.ЗначениеГрСтр = глНоменклатураСтр(_ЗначениеГр, Ложь) + ", " +  _ЗначениеГр[ИспользуемыеЕдиницыИзмерения];
                    
                    // для номенклатуры (элементов -> итоги будем выводить при условии, что тип измерения выбран как "Иерархия")

                    Если _ТипИзмерения = ТипИзмеренияПостроителяОтчета.Иерархия Тогда
                        _ВыводитьИтогиПоГруппировке = Истина;
                    КонецЕсли;
                    
                КонецЕсли;
            Иначе
                
                Если мИспользоватьАртикулы 
                    И ТипЗнч(_ЗначениеГр) = Тип("СправочникСсылка.ВариантыИсполнения") Тогда 
                    
                    Область.Параметры.Артикул     = _ЗначениеГр.Артикул;
                    
                КонецЕсли;
                
                Область.Параметры.ЗначениеГрСтр = _ЗначениеГр;
                
            КонецЕсли; 
            Область.Параметры.Расшифровка   = _ЗначениеГр;
            ВхТаблДок.Вывести(Область, ВхУровень);
        КонецЕсли;    
                        
        // "_ИмяСекции|ВертикальныйРазделитель"

        Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|ВертикальныйРазделитель1");
        ВхТаблДок.Присоединить(Область);
        
           Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
            Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                 Тогда
                Область.Параметры.ЗначениеГрСтрПостав     = ВхЗапрВыб.НоменклатураПоставщика; 
            иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                Область.Параметры.ЗначениеГрСтрПостав     = ВхЗапрВыб.ВариантИсполненияПоставщика;
                КонецЕсли;
            КонецЕсли;
            ВхТаблДок.Присоединить(Область);
             Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик1");
            Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                 Тогда
                Область.Параметры.ЗначениеГрСтрПостав1     = ВхЗапрВыб.НоменклатураПоставщика; 
            иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                Область.Параметры.ЗначениеГрСтрПостав1     = ВхЗапрВыб.ВариантИсполненияПоставщика;
                КонецЕсли;
            КонецЕсли;
            ВхТаблДок.Присоединить(Область);
             Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик2");
            Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                 Тогда
                Область.Параметры.ЗначениеГрСтрПостав2     = ВхЗапрВыб.НоменклатураПоставщика; 
            иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                Область.Параметры.ЗначениеГрСтрПостав2     = ВхЗапрВыб.ВариантИсполненияПоставщика;
                КонецЕсли;
            КонецЕсли;
            ВхТаблДок.Присоединить(Область);
   Privetanya
 
38 - 09.07.20 - 14:52
(35) Сидела,ничего не получается, подумала,что можно так. Получаю значения для заполнения через функцию. и заполняю. Но не могу сообразить,как объяснить,что следующее значение надо в следующий столбец

Если  _ИмяГр = "Номенклатура" или _ИмяГр = "ВариантИсполнения" тогда
            
            Поставщ= НайтиЗначПоставщика(ВхЗапрВыб.Номенклатура,ВхЗапрВыб.ВариантИсполнения);
            
            Если не Поставщ.Пустой() тогда 
                ПоставщРез=Поставщ.Выгрузить();    
                Для стр = 0 По ПоставщРез.Количество() Цикл   
                    
                    Если _ИмяГр = "Номенклатура" И не ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                        Тогда
                        Область.Параметры.ЗначениеГрСтрПостав     = ПоставщРез[0].НоменклатураПоставщика; 
                        иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                            Область.Параметры.ЗначениеГрСтрПостав     = ПоставщРез[0].ВариантИсполненияПоставщика;
                        КонецЕсли;
                    КонецЕсли;
                    ВхТаблДок.Присоединить(Область);
                    // Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик1");

                    //Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения

                    //     Тогда

                    //    Область.Параметры.ЗначениеГрСтрПостав1     = НайтиЗначПоставщика(ВхЗапрВыб.Номенклатура,ВхЗапрВыб.ВариантИсполнения);; 

                    //иначе Если  _ИмяГр = "ВариантИсполнения" тогда

                    //    Область.Параметры.ЗначениеГрСтрПостав1     = НайтиЗначПоставщика(ВхЗапрВыб.Номенклатура,ВхЗапрВыб.ВариантИсполнения);;

                    //    КонецЕсли;

                    //КонецЕсли;

                    //ВхТаблДок.Присоединить(Область);

                    // Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик2");

                    //Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения

                    //     Тогда

                    //    Область.Параметры.ЗначениеГрСтрПостав2     = НайтиЗначПоставщика(ВхЗапрВыб.Номенклатура,ВхЗапрВыб.ВариантИсполнения);; 

                    //иначе Если  _ИмяГр = "ВариантИсполнения" тогда

                    //    Область.Параметры.ЗначениеГрСтрПостав2     = НайтиЗначПоставщика(ВхЗапрВыб.Номенклатура,ВхЗапрВыб.ВариантИсполнения);;

                    //    КонецЕсли;

                    //КонецЕсли;

                    //ВхТаблДок.Присоединить(Область);

            
                КонецЦикла;
            иначе
                Если _ИмяГр = "Номенклатура" И не ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                    Тогда
                    Область.Параметры.ЗначениеГрСтрПостав     =ВхЗапрВыб.НоменклатураПоставщика ; 
                    иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                        Область.Параметры.ЗначениеГрСтрПостав     = ВхЗапрВыб.НоменклатураПоставщика;
                    КонецЕсли;
                КонецЕсли;
                ВхТаблДок.Присоединить(Область);
                Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик1");
                Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                    Тогда
                    Область.Параметры.ЗначениеГрСтрПостав1     = ВхЗапрВыб.НоменклатураПоставщика; 
                    иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                        Область.Параметры.ЗначениеГрСтрПостав1     = ВхЗапрВыб.НоменклатураПоставщика;
                    КонецЕсли;
                КонецЕсли;
                ВхТаблДок.Присоединить(Область);
                Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик2");
                Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                    Тогда
                    Область.Параметры.ЗначениеГрСтрПостав2     = ВхЗапрВыб.НоменклатураПоставщика; 
                    иначе Если  _ИмяГр = "ВариантИсполнения" тогда
                        Область.Параметры.ЗначениеГрСтрПостав2     = ВхЗапрВыб.НоменклатураПоставщика;
                    КонецЕсли;
                КонецЕсли;
                ВхТаблДок.Присоединить(Область);
            КонецЕсли;КонецЕсли;





Функция НайтиЗначПоставщика(Номенклатура,ВИ)
    
    Запрос=Новый Запрос;
    Запрос.Текст= "ВЫБРАТЬ
                  |    НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
                  |    НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
                  |    НоменклатураПоставщиков.Поставщик КАК Поставщик,
                  |    НоменклатураПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
                  |    НоменклатураПоставщиков.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
                  |ИЗ
                  |    РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
                  |ГДЕ
                  |    НоменклатураПоставщиков.Номенклатура = &Номенклатура
                  |    И НоменклатураПоставщиков.ВариантИсполнения = &ВариантИсполнения";
    
    
    Запрос.Параметры.Вставить("Номенклатура",Номенклатура );
    Запрос.Параметры.Вставить("ВариантИсполнения",ВИ );
    Результат=Запрос.Выполнить();
Возврат Результат;
    
КонецФункции
   Ёпрст
 
39 - 09.07.20 - 14:58
(38) надо оставить изначальный текст запроса с итогами который, потом при выводе группировки, присоединять количество секкций вправо = количеству по группировке твоих поставщиков, саму группировку по номенклатуре поставщика обходить с параметром ВСЕ (сымотри синтаксис в СП), чтоб для каждой номенклатуры попадали все значения (даже пустые).. тогда получится
   Privetanya
 
40 - 09.07.20 - 15:07
(39) т.е запрос который в (27) оставить? и уже от него дальше?
   Ёпрст
 
41 - 09.07.20 - 15:26
(27) не, оставить тот, что в (0)
   Privetanya
 
42 - 09.07.20 - 15:29
(41) Там данные задваиваются
   Ёпрст
 
43 - 09.07.20 - 16:00
(42) ну тогда из (0) выкидываешь левое соединение с рег сведений, и делаешь еще один запрос в пакете, где просто получаешь номенклатуру, номенклатуру поставщика и че там у тя еще ? тоже с Итогами.
Далее при обходе группировки, если это "шапка", то обходишь второй результат пакетного запроса с ключевым словом ГДЕ и присоединяешь все названия своих поставщиков, если это не группировка по номенклатуре - просто присоединяешь пустые секции, если это группировка по номенклатуре - обходишь второй запрос, позиционируясь в выборке по значению группировки и присоединяешь все секции
   Ёпрст
 
44 - 09.07.20 - 16:00
+43 * ВСЕ
   Privetanya
 
45 - 09.07.20 - 16:18
(43) Странно,убираю левое соединение, создаю еще один пакет запроса и после того как я для проверки запускаю обработку,а потом обратно захожу в модуль и смотрю на запрос,то он возвращается вот в такой вид
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СвернутыеБазовыеДанные.Номенклатура КАК Номенклатура,
    СвернутыеБазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
    СвернутыеБазовыеДанные.КолПотребностьВнешнаяя КАК КолПотребностьВнешнаяя,
    СвернутыеБазовыеДанные.КолПотребностьПроизводства КАК КолПотребностьПроизводства,
    СвернутыеБазовыеДанные.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
    СвернутыеБазовыеДанные.ОснПоставщик КАК ОснПоставщик,
    СвернутыеБазовыеДанные.Активность КАК Активность,
    &БазоваяЕдИзм КАК ЕдИзм,
    &БазоваяЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
    ВЫБОР
        КОГДА СвернутыеБазовыеДанные.Номенклатура.ОснЕдИзм_Закупки = ЗНАЧЕНИЕ(Справочник.ЕдИзм.ПустаяСсылка)
            ТОГДА СвернутыеБазовыеДанные.Номенклатура.БазоваяЕдИзм.Коэффициент
        ИНАЧЕ СвернутыеБазовыеДанные.Номенклатура.ОснЕдИзм_Закупки.Коэффициент
    КОНЕЦ КАК ЕдИзм_ЗакупкиКоэффициент,
    СвернутыеБазовыеДанные.Поставщик КАК Поставщик,
    СвернутыеБазовыеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
    СвернутыеБазовыеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
ПОМЕСТИТЬ БазовыеДанные
ИЗ
    (ВЫБРАТЬ
        РазвернутыеБазовыеДанные.Номенклатура КАК Номенклатура,
        РазвернутыеБазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.Активность
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Активность,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.ОснПоставщик
            ИНАЧЕ РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик
        КОНЕЦ КАК ОснПоставщик,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьВнешнаяя) КАК КолПотребностьВнешнаяя,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьПроизводства) КАК КолПотребностьПроизводства,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьВнутренняя) КАК КолПотребностьВнутренняя,
        РазвернутыеБазовыеДанные.Поставщик КАК Поставщик,
        РазвернутыеБазовыеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
        РазвернутыеБазовыеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
    ИЗ
        (ВЫБРАТЬ
            ПотребностиВТМЦ_ПоВидамПотребностей.Номенклатура КАК Номенклатура,
            ПотребностиВТМЦ_ПоВидамПотребностей.ВариантИсполнения КАК ВариантИсполнения,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьВнешняя КАК КолПотребностьВнешнаяя,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьПроизводственная КАК КолПотребностьПроизводства,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
            NULL КАК Поставщик,
            NULL КАК НоменклатураПоставщика,
            NULL КАК ВариантИсполненияПоставщика
        ИЗ
            (ВЫБРАТЬ
                ПотребностиВТМЦ.ВидПотребности КАК ВидПотребности,
                ПотребностиВТМЦ.Номенклатура КАК Номенклатура,
                ПотребностиВТМЦ.ВариантИсполнения КАК ВариантИсполнения,
                ПотребностиВТМЦ.КолОстаток КАК КолОстаток,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Внешняя"
                            ИЛИ ПотребностиВТМЦ.ВидПотребности = "Межфилиальная"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьВнешняя,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Внутренняя"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьВнутренняя,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Производственная"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьПроизводственная
            ИЗ
                (ВЫБРАТЬ
                    ВЫБОР
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказНаПроизводство
                            ТОГДА "Производственная"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказПокупателя
                            ТОГДА "Внешняя"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказВнутренний
                            ТОГДА "Внутренняя"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказНаПеремещениеТМЦМеждуФилиалами
                            ТОГДА "Межфилиальная"
                    КОНЕЦ КАК ВидПотребности,
                    ПотребностиВТМЦОстатки.Номенклатура КАК Номенклатура,
                    ПотребностиВТМЦОстатки.ВариантИсполнения КАК ВариантИсполнения,
                    ПотребностиВТМЦОстатки.КолОстаток КАК КолОстаток
                ИЗ
                    РегистрНакопления.ПотребностиВТМЦ.Остатки(
                            &ДатаКон,
                            (НЕ &УказанГоризонтАнализаПотребностей
                                ИЛИ НЕ &СУчетомСрокаПоставки
                                    И ЗаказПотребность.ДатаОбеспеченияПотребностей <= &ГоризонтАнализаПотребностей
                                ИЛИ &СУчетомСрокаПоставки
                                    И ВЫБОР
                                        КОГДА ВариантИсполнения.СрокПоставки = 0
                                            ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПотребность.ДатаОбеспеченияПотребностей, ДЕНЬ, -Номенклатура.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                        ИНАЧЕ ДОБАВИТЬКДАТЕ(ЗаказПотребность.ДатаОбеспеченияПотребностей, ДЕНЬ, -ВариантИсполнения.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                    КОНЕЦ)
                                И (НЕ &ПоФирме
                                    ИЛИ Фирма = &Фирма)
                                И (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)) КАК ПотребностиВТМЦОстатки
                ГДЕ
                    (ПотребностиВТМЦОстатки.КолОстаток > 0
                            ИЛИ НЕ &БезУчетаОтрицательныхПотребностей)
                    И (НЕ &ТолькоУтвержденныеЗаказыПотребности
                            ИЛИ ПотребностиВТМЦОстатки.ЗаказПотребность.Утвержден)) КАК ПотребностиВТМЦ
            ГДЕ
                (&АнализВнешнейПотребности
                            И ПотребностиВТМЦ.ВидПотребности = "Внешняя"
                        ИЛИ &АнализВнешнейПотребности
                            И &ПоФилиалу
                            И ПотребностиВТМЦ.ВидПотребности = "Межфилиальная"
                        ИЛИ &АнализВнутреннейПотребности
                            И ПотребностиВТМЦ.ВидПотребности = "Внутренняя"
                        ИЛИ &АнализПотребностиПроизводства
                            И ПотребностиВТМЦ.ВидПотребности = "Производственная")) КАК ПотребностиВТМЦ_ПоВидамПотребностей
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            МинимальныеОстаткиТМЦ.Номенклатура,
            МинимальныеОстаткиТМЦ.ВариантИсполнения,
            0,
            0,
            0,
            NULL,
            NULL,
            NULL
        ИЗ
            РегистрСведений.МинимальныеОстаткиТМЦ КАК МинимальныеОстаткиТМЦ
        ГДЕ
            МинимальныеОстаткиТМЦ.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
            И &ОтборПоЗаданнымМинимальнымОстаткам
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            Номенклатура.Ссылка,
            ВариантыИсполнения.Ссылка,
            0,
            0,
            0,
            NULL,
            NULL,
            NULL
        ИЗ
            Справочник.Номенклатура КАК Номенклатура
                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыИсполнения КАК ВариантыИсполнения
                ПО (ВариантыИсполнения.Владелец = Номенклатура.Ссылка)
        ГДЕ
            &ОтборПоИмеющимсяПотребностям = ЛОЖЬ
            И НЕ ВариантыИсполнения.Ссылка ЕСТЬ NULL
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            НоменклатураПоставщиков.Номенклатура,
            НоменклатураПоставщиков.ВариантИсполнения,
            NULL,
            NULL,
            NULL,
            НоменклатураПоставщиков.Поставщик,
            НоменклатураПоставщиков.НоменклатураПоставщика,
            НоменклатураПоставщиков.ВариантИсполненияПоставщика
        ИЗ
            РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков) КАК РазвернутыеБазовыеДанные
    
    СГРУППИРОВАТЬ ПО
        РазвернутыеБазовыеДанные.ВариантИсполнения,
        РазвернутыеБазовыеДанные.Номенклатура,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.ОснПоставщик
            ИНАЧЕ РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик
        КОНЕЦ,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА ИСТИНА
            ИНАЧЕ РазвернутыеБазовыеДанные.Номенклатура.Активность
        КОНЕЦ,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.Активность
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ,
        РазвернутыеБазовыеДанные.Поставщик,
        РазвернутыеБазовыеДанные.НоменклатураПоставщика,
        РазвернутыеБазовыеДанные.ВариантИсполненияПоставщика) КАК СвернутыеБазовыеДанные
ГДЕ
    &ТекстБазовыеУсловия
{ГДЕ
    СвернутыеБазовыеДанные.Номенклатура.*,
    СвернутыеБазовыеДанные.ВариантИсполнения.*,
    СвернутыеБазовыеДанные.ОснПоставщик.*,
    СвернутыеБазовыеДанные.Поставщик.*,
    СвернутыеБазовыеДанные.НоменклатураПоставщика,
    СвернутыеБазовыеДанные.ВариантИсполненияПоставщика}
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ПомесячныйРасходТМЦ.ВариантИсполнения КАК ВариантИсполнения,
    СУММА(ПомесячныйРасходТМЦ.КолРасход) КАК КолРасход,
    ПомесячныйРасходТМЦ.МесяцРасхода КАК МесяцРасхода
ИЗ
    (ВЫБРАТЬ
        ОстаткиТМЦОбороты.ВариантИсполнения КАК ВариантИсполнения,
        ОстаткиТМЦОбороты.КолРасход / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасход,
        НАЧАЛОПЕРИОДА(ОстаткиТМЦОбороты.Период, МЕСЯЦ) КАК МесяцРасхода
    ИЗ
        РегистрНакопления.ОстаткиТМЦ.Обороты(
                &АнализРасходов_ДатаНач,
                &АнализРасходов_ДатаКон,
                Регистратор,
                НЕ &ПоФилиалу
                    ИЛИ Склад.Владелец = &Филиал) КАК ОстаткиТМЦОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ БазовыеДанные КАК БазовыеДанные
            ПО ОстаткиТМЦОбороты.ВариантИсполнения = БазовыеДанные.ВариантИсполнения
    ГДЕ
        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
        И (НЕ &ПоФирме
                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
        И (&ПоФилиалу
                ИЛИ НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦМеждуФилиалами)
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВводРасходаТМЦТЧ.ВариантИсполнения,
        ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / БазовыеДанные.ЕдИзмКоэффициент,
        НАЧАЛОПЕРИОДА(ВводРасходаТМЦТЧ.Ссылка.Дата, МЕСЯЦ)
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
    ГДЕ
        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК ПомесячныйРасходТМЦ

СГРУППИРОВАТЬ ПО
    ПомесячныйРасходТМЦ.ВариантИсполнения,
    ПомесячныйРасходТМЦ.МесяцРасхода

УПОРЯДОЧИТЬ ПО
    ПомесячныйРасходТМЦ.МесяцРасхода
ИТОГИ
    СУММА(КолРасход)
ПО
    ОБЩИЕ,
    ВариантИсполнения,
    МесяцРасхода
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    РассчитанныеДанные.Номенклатура КАК Номенклатура,
    РассчитанныеДанные.ВариантИсполнения КАК ВариантИсполнения,
    РассчитанныеДанные.КолПотребностьВнешнаяя КАК КолПотребностьВнешнаяя,
    РассчитанныеДанные.КолПотребностьПроизводства КАК КолПотребностьПроизводства,
    РассчитанныеДанные.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
    РассчитанныеДанные.ОснПоставщик КАК ОснПоставщик,
    РассчитанныеДанные.Активность КАК Активность,
    РассчитанныеДанные.Номенклатура.РазрешитьНесколькоВариантовИсполнения КАК РазрешитьНесколькоВариантовИсполнения,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.НормаПополнения = 0
            ТОГДА РассчитанныеДанные.Номенклатура.НормаПополнения
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.НормаПополнения
    КОНЕЦ * РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент / РассчитанныеДанные.ЕдИзмКоэффициент КАК НормаПополнения,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.МинПартияЗакупки = 0
            ТОГДА РассчитанныеДанные.Номенклатура.МинПартияЗакупки
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.МинПартияЗакупки
    КОНЕЦ * РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент / РассчитанныеДанные.ЕдИзмКоэффициент КАК МинПартияЗакупки,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.СрокПоставки = 0
            ТОГДА РассчитанныеДанные.Номенклатура.СрокПоставки
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.СрокПоставки
    КОНЕЦ КАК СрокПоставкиДней,
    РассчитанныеДанные.КолОстаток КАК КолОстаток,
    РассчитанныеДанные.КолОстаток_ТМЦ КАК КолОстаток_ТМЦ,
    РассчитанныеДанные.КолОстаток_ТМЦПереданные КАК КолОстаток_ТМЦПереданные,
    РассчитанныеДанные.КолРезерв КАК КолРезерв,
    РассчитанныеДанные.КолРезерв_ТМЦ КАК КолРезерв_ТМЦ,
    РассчитанныеДанные.КолРезерв_ТМЦПереданные КАК КолРезерв_ТМЦПереданные,
    РассчитанныеДанные.КолОжидаемыеПоступления КАК КолОжидаемыеПоступления,
    РассчитанныеДанные.КолРасходЗаДень КАК КолРасходЗаДень,
    РассчитанныеДанные.КолМинОстаток КАК КолМинОстаток,
    РассчитанныеДанные.КолСвободныйОстаток КАК КолСвободныйОстаток,
    РассчитанныеДанные.КолПрофицит КАК КолПрофицит,
    РассчитанныеДанные.ЕдИзм КАК ЕдИзм,
    РассчитанныеДанные.ЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
    РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент КАК ЕдИзм_ЗакупкиКоэффициент,
    РассчитанныеДанные.КолОстаток_СкладМатериалов КАК КолОстаток_СкладМатериалов,
    РассчитанныеДанные.Поставщик КАК Поставщик,
    РассчитанныеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
    РассчитанныеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
{ВЫБРАТЬ
    Номенклатура.*,
    ВариантИсполнения.*,
    ОснПоставщик.*,
    НоменклатураПоставщика,
    Поставщик.*,
    ВариантИсполненияПоставщика}
ИЗ
    (ВЫБРАТЬ
        БазовыеДанные.Номенклатура КАК Номенклатура,
        БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
        БазовыеДанные.КолПотребностьВнешнаяя / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьВнешнаяя,
        БазовыеДанные.КолПотребностьПроизводства / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьПроизводства,
        БазовыеДанные.КолПотребностьВнутренняя / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьВнутренняя,
        БазовыеДанные.ОснПоставщик КАК ОснПоставщик,
        БазовыеДанные.Активность КАК Активность,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_ТМЦ, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_ТМЦ,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_ТМЦПереданные, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_ТМЦПереданные,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв_ТМЦ, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв_ТМЦ,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв_ТМЦПереданные, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв_ТМЦПереданные,
        ЕСТЬNULL(ДополнительныеДанные.КолОжидаемыеПоступления, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОжидаемыеПоступления,
        ЕСТЬNULL(ДополнительныеДанные.КолРасходЗаДень, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасходЗаДень,
        ЕСТЬNULL(ДополнительныеДанные.КолМинОстаток, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолМинОстаток,
        (ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) - ЕСТЬNULL(ДополнительныеДанные.КолРезерв, 0)) / БазовыеДанные.ЕдИзмКоэффициент КАК КолСвободныйОстаток,
        (ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) + ЕСТЬNULL(ДополнительныеДанные.КолОжидаемыеПоступления, 0) - БазовыеДанные.КолПотребностьВнешнаяя - БазовыеДанные.КолПотребностьПроизводства - БазовыеДанные.КолПотребностьВнутренняя - ЕСТЬNULL(ДополнительныеДанные.КолМинОстаток, 0) * &ПрофицитСУчетомМинОстатка) / БазовыеДанные.ЕдИзмКоэффициент КАК КолПрофицит,
        БазовыеДанные.ЕдИзм КАК ЕдИзм,
        БазовыеДанные.ЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
        БазовыеДанные.ЕдИзм_ЗакупкиКоэффициент КАК ЕдИзм_ЗакупкиКоэффициент,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_СкладМатериалов, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_СкладМатериалов,
        БазовыеДанные.Поставщик КАК Поставщик,
        БазовыеДанные.НоменклатураПоставщика КАК НоменклатураПоставщика,
        БазовыеДанные.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                РазвернутыеДополнительныеДанные.ВариантИсполнения КАК ВариантИсполнения,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток) КАК КолОстаток,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_ТМЦ) КАК КолОстаток_ТМЦ,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_ТМЦПереданные) КАК КолОстаток_ТМЦПереданные,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв) КАК КолРезерв,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв_ТМЦ) КАК КолРезерв_ТМЦ,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв_ТМЦПереданные) КАК КолРезерв_ТМЦПереданные,
                СУММА(РазвернутыеДополнительныеДанные.КолОжидаемыеПоступления) КАК КолОжидаемыеПоступления,
                СУММА(РазвернутыеДополнительныеДанные.КолРасходЗаДень) КАК КолРасходЗаДень,
                СУММА(РазвернутыеДополнительныеДанные.КолМинОстаток) КАК КолМинОстаток,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_СкладМатериалов) КАК КолОстаток_СкладМатериалов
            ИЗ
                (ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
                    0 КАК КолОстаток,
                    0 КАК КолОстаток_ТМЦ,
                    0 КАК КолОстаток_ТМЦПереданные,
                    0 КАК КолРезерв,
                    0 КАК КолРезерв_ТМЦ,
                    0 КАК КолРезерв_ТМЦПереданные,
                    0 КАК КолОжидаемыеПоступления,
                    0 КАК КолРасходЗаДень,
                    0 КАК КолМинОстаток,
                    0 КАК КолОстаток_СкладМатериалов
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    ОстаткиТМЦОстатки.КолОстаток,
                    ОстаткиТМЦОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&ДатаКон, ) КАК ОстаткиТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ ОстаткиТМЦОстатки.Фирма = &Фирма)
                    И ОстаткиТМЦОстатки.Склад = &СкладМатериалов
                {ГДЕ
                    ОстаткиТМЦОстатки.Склад.*}
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    ОстаткиТМЦПереданныеОстатки.КолОстаток,
                    0,
                    ОстаткиТМЦПереданныеОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦПереданные.Остатки(&ДатаКон, ) КАК ОстаткиТМЦПереданныеОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦПереданныеОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ ОстаткиТМЦПереданныеОстатки.Фирма = &Фирма)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    РезервыОстатки.КолОстаток,
                    РезервыОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки(
                                &ДатаКон,
                                (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)
                                    И (НЕ &ПоФирме
                                        ИЛИ ДокЗаказ.Фирма = &Фирма)) КАК РезервыОстатки
                        ПО БазовыеДанные.ВариантИсполнения = РезервыОстатки.ВариантИсполнения
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    РезервыТМЦПереданныеОстатки.КолОстаток,
                    0,
                    РезервыТМЦПереданныеОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыТМЦПереданные.Остатки(&ДатаКон, ) КАК РезервыТМЦПереданныеОстатки
                        ПО БазовыеДанные.ВариантИсполнения = РезервыТМЦПереданныеОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ РезервыТМЦПереданныеОстатки.ДокЗаказ.Фирма = &Фирма)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    ОжидаемыеПоступленияТМЦОстатки.КолОстаток,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОжидаемыеПоступленияТМЦ.Остатки(
                                &ДатаКон,
                                (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)
                                    И (НЕ &ПоФирме
                                        ИЛИ Фирма = &Фирма)
                                    И (НЕ &УказанГоризонтАнализаПотребностей
                                        ИЛИ НЕ &СУчетомСрокаПоставки
                                            И ЗаказОбеспечение.ДатаИсполнения <= &ГоризонтАнализаПотребностей
                                        ИЛИ &СУчетомСрокаПоставки
                                            И ВЫБОР
                                                КОГДА ВариантИсполнения.СрокПоставки = 0
                                                    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказОбеспечение.ДатаИсполнения, ДЕНЬ, -Номенклатура.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                                ИНАЧЕ ДОБАВИТЬКДАТЕ(ЗаказОбеспечение.ДатаИсполнения, ДЕНЬ, -ВариантИсполнения.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                            КОНЕЦ)) КАК ОжидаемыеПоступленияТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОжидаемыеПоступленияТМЦОстатки.ВариантИсполнения
                ГДЕ
                    (&ПоФилиалу
                            ИЛИ НЕ ОжидаемыеПоступленияТМЦОстатки.ЗаказОбеспечение ССЫЛКА Документ.ЗаказНаПеремещениеТМЦМеждуФилиалами)
                    И (НЕ &ТолькоУтвержденныеЗаказыОбеспечение
                            ИЛИ ОжидаемыеПоступленияТМЦОстатки.ЗаказОбеспечение.Утвержден)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    РасходТМЦ_Сводно.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    РасходТМЦ_Сводно.КолРасходЗаДень,
                    0,
                    0
                ИЗ
                    (ВЫБРАТЬ
                        БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
                        ВЫБОР
                            КОГДА &ДнейВПериоде = 0
                                ТОГДА 0
                            ИНАЧЕ ОстаткиТМЦОбороты.КолРасход / &ДнейВПериоде
                        КОНЕЦ КАК КолРасходЗаДень
                    ИЗ
                        БазовыеДанные КАК БазовыеДанные
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Обороты(&АнализРасходов_ДатаНач, &АнализРасходов_ДатаКон, Регистратор, ) КАК ОстаткиТМЦОбороты
                            ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОбороты.ВариантИсполнения
                    ГДЕ
                        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
                        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
                        И (НЕ &ПоФирме
                                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
                    
                    ОБЪЕДИНИТЬ ВСЕ
                    
                    ВЫБРАТЬ
                        ВводРасходаТМЦТЧ.ВариантИсполнения,
                        ВЫБОР
                            КОГДА &ДнейВПериоде = 0
                                ТОГДА 0
                            ИНАЧЕ ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / &ДнейВПериоде
                        КОНЕЦ
                    ИЗ
                        БазовыеДанные КАК БазовыеДанные
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
                            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
                    ГДЕ
                        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
                        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
                        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК РасходТМЦ_Сводно
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    МинимальныеОстаткиТМЦ.Кол,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МинимальныеОстаткиТМЦ КАК МинимальныеОстаткиТМЦ
                        ПО БазовыеДанные.ВариантИсполнения = МинимальныеОстаткиТМЦ.ВариантИсполнения
                            И (МинимальныеОстаткиТМЦ.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка))
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    ОстаткиТМЦОстатки.КолОстаток
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&ДатаКон, Склад В (&СкладМатериалов)) КАК ОстаткиТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОстатки.ВариантИсполнения) КАК РазвернутыеДополнительныеДанные
            
            СГРУППИРОВАТЬ ПО
                РазвернутыеДополнительныеДанные.ВариантИсполнения) КАК ДополнительныеДанные
            ПО БазовыеДанные.ВариантИсполнения = ДополнительныеДанные.ВариантИсполнения) КАК РассчитанныеДанные
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    ВариантИсполнения.*,
    ОснПоставщик.*}
ИТОГИ
    СУММА(КолПотребностьВнешнаяя),
    СУММА(КолПотребностьПроизводства),
    СУММА(КолПотребностьВнутренняя),
    МАКСИМУМ(НормаПополнения),
    МАКСИМУМ(МинПартияЗакупки),
    МАКСИМУМ(СрокПоставкиДней),
    СУММА(КолОстаток),
    СУММА(КолОстаток_ТМЦ),
    СУММА(КолОстаток_ТМЦПереданные),
    СУММА(КолРезерв),
    СУММА(КолРезерв_ТМЦ),
    СУММА(КолРезерв_ТМЦПереданные),
    СУММА(КолОжидаемыеПоступления),
    СУММА(КолРасходЗаДень),
    СУММА(КолМинОстаток),
    СУММА(КолСвободныйОстаток),
    СУММА(КолПрофицит),
    СУММА(КолОстаток_СкладМатериалов)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    ВариантИсполнения.*,
    КолПотребностьВнешнаяя,
    КолПотребностьПроизводства,
    КолПотребностьВнутренняя,
    ОснПоставщик.*,
    Активность,
    РазрешитьНесколькоВариантовИсполнения,
    НормаПополнения,
    СрокПоставкиДней,
    КолОстаток,
    КолОстаток_ТМЦ,
    КолОстаток_ТМЦПереданные,
    КолРезерв,
    КолРезерв_ТМЦ,
    КолРезерв_ТМЦПереданные,
    КолРасходЗаДень,
    КолМинОстаток,
    КолСвободныйОстаток,
    КолОстаток_СкладМатериалов,
    Поставщик.*,
    НоменклатураПоставщика,
    ВариантИсполненияПоставщика}
   Ёпрст
 
46 - 09.07.20 - 16:21
(45) кеша.
закрой открой пофигуратор и свою поделку, о то, так и будешь со старыми данными работать
   Privetanya
 
47 - 09.07.20 - 16:33
(46) Вот так?
ВЫБРАТЬ РАЗРЕШЕННЫЕ
    СвернутыеБазовыеДанные.Номенклатура КАК Номенклатура,
    СвернутыеБазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
    СвернутыеБазовыеДанные.КолПотребностьВнешнаяя КАК КолПотребностьВнешнаяя,
    СвернутыеБазовыеДанные.КолПотребностьПроизводства КАК КолПотребностьПроизводства,
    СвернутыеБазовыеДанные.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
    СвернутыеБазовыеДанные.ОснПоставщик КАК ОснПоставщик,
    СвернутыеБазовыеДанные.Активность КАК Активность,
    &БазоваяЕдИзм КАК ЕдИзм,
    &БазоваяЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
    ВЫБОР
        КОГДА СвернутыеБазовыеДанные.Номенклатура.ОснЕдИзм_Закупки = ЗНАЧЕНИЕ(Справочник.ЕдИзм.ПустаяСсылка)
            ТОГДА СвернутыеБазовыеДанные.Номенклатура.БазоваяЕдИзм.Коэффициент
        ИНАЧЕ СвернутыеБазовыеДанные.Номенклатура.ОснЕдИзм_Закупки.Коэффициент
    КОНЕЦ КАК ЕдИзм_ЗакупкиКоэффициент
ПОМЕСТИТЬ БазовыеДанные
ИЗ
    (ВЫБРАТЬ
        РазвернутыеБазовыеДанные.Номенклатура КАК Номенклатура,
        РазвернутыеБазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.Активность
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ КАК Активность,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.ОснПоставщик
            ИНАЧЕ РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик
        КОНЕЦ КАК ОснПоставщик,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьВнешнаяя) КАК КолПотребностьВнешнаяя,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьПроизводства) КАК КолПотребностьПроизводства,
        СУММА(РазвернутыеБазовыеДанные.КолПотребностьВнутренняя) КАК КолПотребностьВнутренняя
    ИЗ
        (ВЫБРАТЬ
            ПотребностиВТМЦ_ПоВидамПотребностей.Номенклатура КАК Номенклатура,
            ПотребностиВТМЦ_ПоВидамПотребностей.ВариантИсполнения КАК ВариантИсполнения,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьВнешняя КАК КолПотребностьВнешнаяя,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьПроизводственная КАК КолПотребностьПроизводства,
            ПотребностиВТМЦ_ПоВидамПотребностей.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя
        ИЗ
            (ВЫБРАТЬ
                ПотребностиВТМЦ.ВидПотребности КАК ВидПотребности,
                ПотребностиВТМЦ.Номенклатура КАК Номенклатура,
                ПотребностиВТМЦ.ВариантИсполнения КАК ВариантИсполнения,
                ПотребностиВТМЦ.КолОстаток КАК КолОстаток,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Внешняя"
                            ИЛИ ПотребностиВТМЦ.ВидПотребности = "Межфилиальная"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьВнешняя,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Внутренняя"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьВнутренняя,
                ВЫБОР
                    КОГДА ПотребностиВТМЦ.ВидПотребности = "Производственная"
                        ТОГДА ПотребностиВТМЦ.КолОстаток
                    ИНАЧЕ 0
                КОНЕЦ КАК КолПотребностьПроизводственная
            ИЗ
                (ВЫБРАТЬ
                    ВЫБОР
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказНаПроизводство
                            ТОГДА "Производственная"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказПокупателя
                            ТОГДА "Внешняя"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказВнутренний
                            ТОГДА "Внутренняя"
                        КОГДА ПотребностиВТМЦОстатки.ЗаказПотребность ССЫЛКА Документ.ЗаказНаПеремещениеТМЦМеждуФилиалами
                            ТОГДА "Межфилиальная"
                    КОНЕЦ КАК ВидПотребности,
                    ПотребностиВТМЦОстатки.Номенклатура КАК Номенклатура,
                    ПотребностиВТМЦОстатки.ВариантИсполнения КАК ВариантИсполнения,
                    ПотребностиВТМЦОстатки.КолОстаток КАК КолОстаток
                ИЗ
                    РегистрНакопления.ПотребностиВТМЦ.Остатки(
                            &ДатаКон,
                            (НЕ &УказанГоризонтАнализаПотребностей
                                ИЛИ НЕ &СУчетомСрокаПоставки
                                    И ЗаказПотребность.ДатаОбеспеченияПотребностей <= &ГоризонтАнализаПотребностей
                                ИЛИ &СУчетомСрокаПоставки
                                    И ВЫБОР
                                        КОГДА ВариантИсполнения.СрокПоставки = 0
                                            ТОГДА ДОБАВИТЬКДАТЕ(ЗаказПотребность.ДатаОбеспеченияПотребностей, ДЕНЬ, -Номенклатура.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                        ИНАЧЕ ДОБАВИТЬКДАТЕ(ЗаказПотребность.ДатаОбеспеченияПотребностей, ДЕНЬ, -ВариантИсполнения.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                    КОНЕЦ)
                                И (НЕ &ПоФирме
                                    ИЛИ Фирма = &Фирма)
                                И (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)) КАК ПотребностиВТМЦОстатки
                ГДЕ
                    (ПотребностиВТМЦОстатки.КолОстаток > 0
                            ИЛИ НЕ &БезУчетаОтрицательныхПотребностей)
                    И (НЕ &ТолькоУтвержденныеЗаказыПотребности
                            ИЛИ ПотребностиВТМЦОстатки.ЗаказПотребность.Утвержден)) КАК ПотребностиВТМЦ
            ГДЕ
                (&АнализВнешнейПотребности
                            И ПотребностиВТМЦ.ВидПотребности = "Внешняя"
                        ИЛИ &АнализВнешнейПотребности
                            И &ПоФилиалу
                            И ПотребностиВТМЦ.ВидПотребности = "Межфилиальная"
                        ИЛИ &АнализВнутреннейПотребности
                            И ПотребностиВТМЦ.ВидПотребности = "Внутренняя"
                        ИЛИ &АнализПотребностиПроизводства
                            И ПотребностиВТМЦ.ВидПотребности = "Производственная")) КАК ПотребностиВТМЦ_ПоВидамПотребностей
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            МинимальныеОстаткиТМЦ.Номенклатура,
            МинимальныеОстаткиТМЦ.ВариантИсполнения,
            0,
            0,
            0
        ИЗ
            РегистрСведений.МинимальныеОстаткиТМЦ КАК МинимальныеОстаткиТМЦ
        ГДЕ
            МинимальныеОстаткиТМЦ.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка)
            И &ОтборПоЗаданнымМинимальнымОстаткам
        
        ОБЪЕДИНИТЬ ВСЕ
        
        ВЫБРАТЬ
            Номенклатура.Ссылка,
            ВариантыИсполнения.Ссылка,
            0,
            0,
            0
        ИЗ
            Справочник.Номенклатура КАК Номенклатура
                ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ВариантыИсполнения КАК ВариантыИсполнения
                ПО (ВариантыИсполнения.Владелец = Номенклатура.Ссылка)
        ГДЕ
            &ОтборПоИмеющимсяПотребностям = ЛОЖЬ
            И НЕ ВариантыИсполнения.Ссылка ЕСТЬ NULL) КАК РазвернутыеБазовыеДанные
    
    СГРУППИРОВАТЬ ПО
        РазвернутыеБазовыеДанные.ВариантИсполнения,
        РазвернутыеБазовыеДанные.Номенклатура,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяСсылка)
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.ОснПоставщик
            ИНАЧЕ РазвернутыеБазовыеДанные.ВариантИсполнения.ОснПоставщик
        КОНЕЦ,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА ИСТИНА
            ИНАЧЕ РазвернутыеБазовыеДанные.Номенклатура.Активность
        КОНЕЦ,
        ВЫБОР
            КОГДА РазвернутыеБазовыеДанные.ВариантИсполнения.Активность
                ТОГДА РазвернутыеБазовыеДанные.Номенклатура.Активность
            ИНАЧЕ ЛОЖЬ
        КОНЕЦ) КАК СвернутыеБазовыеДанные
ГДЕ
    &ТекстБазовыеУсловия
{ГДЕ
    СвернутыеБазовыеДанные.Номенклатура.*,
    СвернутыеБазовыеДанные.ВариантИсполнения.*,
    СвернутыеБазовыеДанные.ОснПоставщик.*}
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    ПомесячныйРасходТМЦ.ВариантИсполнения КАК ВариантИсполнения,
    СУММА(ПомесячныйРасходТМЦ.КолРасход) КАК КолРасход,
    ПомесячныйРасходТМЦ.МесяцРасхода КАК МесяцРасхода
ИЗ
    (ВЫБРАТЬ
        ОстаткиТМЦОбороты.ВариантИсполнения КАК ВариантИсполнения,
        ОстаткиТМЦОбороты.КолРасход / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасход,
        НАЧАЛОПЕРИОДА(ОстаткиТМЦОбороты.Период, МЕСЯЦ) КАК МесяцРасхода
    ИЗ
        РегистрНакопления.ОстаткиТМЦ.Обороты(
                &АнализРасходов_ДатаНач,
                &АнализРасходов_ДатаКон,
                Регистратор,
                НЕ &ПоФилиалу
                    ИЛИ Склад.Владелец = &Филиал) КАК ОстаткиТМЦОбороты
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ БазовыеДанные КАК БазовыеДанные
            ПО ОстаткиТМЦОбороты.ВариантИсполнения = БазовыеДанные.ВариантИсполнения
    ГДЕ
        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
        И (НЕ &ПоФирме
                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
        И (&ПоФилиалу
                ИЛИ НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦМеждуФилиалами)
    
    ОБЪЕДИНИТЬ ВСЕ
    
    ВЫБРАТЬ
        ВводРасходаТМЦТЧ.ВариантИсполнения,
        ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / БазовыеДанные.ЕдИзмКоэффициент,
        НАЧАЛОПЕРИОДА(ВводРасходаТМЦТЧ.Ссылка.Дата, МЕСЯЦ)
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
    ГДЕ
        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК ПомесячныйРасходТМЦ

СГРУППИРОВАТЬ ПО
    ПомесячныйРасходТМЦ.ВариантИсполнения,
    ПомесячныйРасходТМЦ.МесяцРасхода

УПОРЯДОЧИТЬ ПО
    ПомесячныйРасходТМЦ.МесяцРасхода
ИТОГИ
    СУММА(КолРасход)
ПО
    ОБЩИЕ,
    ВариантИсполнения,
    МесяцРасхода
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
    НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
    НоменклатураПоставщиков.Поставщик КАК Поставщик,
    НоменклатураПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
    НоменклатураПоставщиков.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
ИЗ
    РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
ИТОГИ ПО
    Поставщик,
    ВариантИсполнения,
    НоменклатураПоставщика,
    ВариантИсполненияПоставщика,
    Номенклатура
;

////////////////////////////////////////////////////////////////////////////////

ВЫБРАТЬ
    РассчитанныеДанные.Номенклатура КАК Номенклатура,
    РассчитанныеДанные.ВариантИсполнения КАК ВариантИсполнения,
    РассчитанныеДанные.КолПотребностьВнешнаяя КАК КолПотребностьВнешнаяя,
    РассчитанныеДанные.КолПотребностьПроизводства КАК КолПотребностьПроизводства,
    РассчитанныеДанные.КолПотребностьВнутренняя КАК КолПотребностьВнутренняя,
    РассчитанныеДанные.ОснПоставщик КАК ОснПоставщик,
    РассчитанныеДанные.Активность КАК Активность,
    РассчитанныеДанные.Номенклатура.РазрешитьНесколькоВариантовИсполнения КАК РазрешитьНесколькоВариантовИсполнения,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.НормаПополнения = 0
            ТОГДА РассчитанныеДанные.Номенклатура.НормаПополнения
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.НормаПополнения
    КОНЕЦ * РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент / РассчитанныеДанные.ЕдИзмКоэффициент КАК НормаПополнения,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.МинПартияЗакупки = 0
            ТОГДА РассчитанныеДанные.Номенклатура.МинПартияЗакупки
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.МинПартияЗакупки
    КОНЕЦ * РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент / РассчитанныеДанные.ЕдИзмКоэффициент КАК МинПартияЗакупки,
    ВЫБОР
        КОГДА РассчитанныеДанные.ВариантИсполнения.СрокПоставки = 0
            ТОГДА РассчитанныеДанные.Номенклатура.СрокПоставки
        ИНАЧЕ РассчитанныеДанные.ВариантИсполнения.СрокПоставки
    КОНЕЦ КАК СрокПоставкиДней,
    РассчитанныеДанные.КолОстаток КАК КолОстаток,
    РассчитанныеДанные.КолОстаток_ТМЦ КАК КолОстаток_ТМЦ,
    РассчитанныеДанные.КолОстаток_ТМЦПереданные КАК КолОстаток_ТМЦПереданные,
    РассчитанныеДанные.КолРезерв КАК КолРезерв,
    РассчитанныеДанные.КолРезерв_ТМЦ КАК КолРезерв_ТМЦ,
    РассчитанныеДанные.КолРезерв_ТМЦПереданные КАК КолРезерв_ТМЦПереданные,
    РассчитанныеДанные.КолОжидаемыеПоступления КАК КолОжидаемыеПоступления,
    РассчитанныеДанные.КолРасходЗаДень КАК КолРасходЗаДень,
    РассчитанныеДанные.КолМинОстаток КАК КолМинОстаток,
    РассчитанныеДанные.КолСвободныйОстаток КАК КолСвободныйОстаток,
    РассчитанныеДанные.КолПрофицит КАК КолПрофицит,
    РассчитанныеДанные.ЕдИзм КАК ЕдИзм,
    РассчитанныеДанные.ЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
    РассчитанныеДанные.ЕдИзм_ЗакупкиКоэффициент КАК ЕдИзм_ЗакупкиКоэффициент,
    РассчитанныеДанные.КолОстаток_СкладМатериалов КАК КолОстаток_СкладМатериалов
{ВЫБРАТЬ
    Номенклатура.*,
    ВариантИсполнения.*,
    ОснПоставщик.*}
ИЗ
    (ВЫБРАТЬ
        БазовыеДанные.Номенклатура КАК Номенклатура,
        БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
        БазовыеДанные.КолПотребностьВнешнаяя / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьВнешнаяя,
        БазовыеДанные.КолПотребностьПроизводства / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьПроизводства,
        БазовыеДанные.КолПотребностьВнутренняя / БазовыеДанные.ЕдИзмКоэффициент КАК КолПотребностьВнутренняя,
        БазовыеДанные.ОснПоставщик КАК ОснПоставщик,
        БазовыеДанные.Активность КАК Активность,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_ТМЦ, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_ТМЦ,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_ТМЦПереданные, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_ТМЦПереданные,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв_ТМЦ, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв_ТМЦ,
        ЕСТЬNULL(ДополнительныеДанные.КолРезерв_ТМЦПереданные, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРезерв_ТМЦПереданные,
        ЕСТЬNULL(ДополнительныеДанные.КолОжидаемыеПоступления, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОжидаемыеПоступления,
        ЕСТЬNULL(ДополнительныеДанные.КолРасходЗаДень, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолРасходЗаДень,
        ЕСТЬNULL(ДополнительныеДанные.КолМинОстаток, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолМинОстаток,
        (ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) - ЕСТЬNULL(ДополнительныеДанные.КолРезерв, 0)) / БазовыеДанные.ЕдИзмКоэффициент КАК КолСвободныйОстаток,
        (ЕСТЬNULL(ДополнительныеДанные.КолОстаток, 0) + ЕСТЬNULL(ДополнительныеДанные.КолОжидаемыеПоступления, 0) - БазовыеДанные.КолПотребностьВнешнаяя - БазовыеДанные.КолПотребностьПроизводства - БазовыеДанные.КолПотребностьВнутренняя - ЕСТЬNULL(ДополнительныеДанные.КолМинОстаток, 0) * &ПрофицитСУчетомМинОстатка) / БазовыеДанные.ЕдИзмКоэффициент КАК КолПрофицит,
        БазовыеДанные.ЕдИзм КАК ЕдИзм,
        БазовыеДанные.ЕдИзмКоэффициент КАК ЕдИзмКоэффициент,
        БазовыеДанные.ЕдИзм_ЗакупкиКоэффициент КАК ЕдИзм_ЗакупкиКоэффициент,
        ЕСТЬNULL(ДополнительныеДанные.КолОстаток_СкладМатериалов, 0) / БазовыеДанные.ЕдИзмКоэффициент КАК КолОстаток_СкладМатериалов
    ИЗ
        БазовыеДанные КАК БазовыеДанные
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                РазвернутыеДополнительныеДанные.ВариантИсполнения КАК ВариантИсполнения,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток) КАК КолОстаток,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_ТМЦ) КАК КолОстаток_ТМЦ,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_ТМЦПереданные) КАК КолОстаток_ТМЦПереданные,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв) КАК КолРезерв,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв_ТМЦ) КАК КолРезерв_ТМЦ,
                СУММА(РазвернутыеДополнительныеДанные.КолРезерв_ТМЦПереданные) КАК КолРезерв_ТМЦПереданные,
                СУММА(РазвернутыеДополнительныеДанные.КолОжидаемыеПоступления) КАК КолОжидаемыеПоступления,
                СУММА(РазвернутыеДополнительныеДанные.КолРасходЗаДень) КАК КолРасходЗаДень,
                СУММА(РазвернутыеДополнительныеДанные.КолМинОстаток) КАК КолМинОстаток,
                СУММА(РазвернутыеДополнительныеДанные.КолОстаток_СкладМатериалов) КАК КолОстаток_СкладМатериалов
            ИЗ
                (ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
                    0 КАК КолОстаток,
                    0 КАК КолОстаток_ТМЦ,
                    0 КАК КолОстаток_ТМЦПереданные,
                    0 КАК КолРезерв,
                    0 КАК КолРезерв_ТМЦ,
                    0 КАК КолРезерв_ТМЦПереданные,
                    0 КАК КолОжидаемыеПоступления,
                    0 КАК КолРасходЗаДень,
                    0 КАК КолМинОстаток,
                    0 КАК КолОстаток_СкладМатериалов
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    ОстаткиТМЦОстатки.КолОстаток,
                    ОстаткиТМЦОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&ДатаКон, ) КАК ОстаткиТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ ОстаткиТМЦОстатки.Фирма = &Фирма)
                    И ОстаткиТМЦОстатки.Склад = &СкладМатериалов
                {ГДЕ
                    ОстаткиТМЦОстатки.Склад.*}
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    ОстаткиТМЦПереданныеОстатки.КолОстаток,
                    0,
                    ОстаткиТМЦПереданныеОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦПереданные.Остатки(&ДатаКон, ) КАК ОстаткиТМЦПереданныеОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦПереданныеОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ ОстаткиТМЦПереданныеОстатки.Фирма = &Фирма)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    РезервыОстатки.КолОстаток,
                    РезервыОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Резервы.Остатки(
                                &ДатаКон,
                                (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)
                                    И (НЕ &ПоФирме
                                        ИЛИ ДокЗаказ.Фирма = &Фирма)) КАК РезервыОстатки
                        ПО БазовыеДанные.ВариантИсполнения = РезервыОстатки.ВариантИсполнения
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    РезервыТМЦПереданныеОстатки.КолОстаток,
                    0,
                    РезервыТМЦПереданныеОстатки.КолОстаток,
                    0,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.РезервыТМЦПереданные.Остатки(&ДатаКон, ) КАК РезервыТМЦПереданныеОстатки
                        ПО БазовыеДанные.ВариантИсполнения = РезервыТМЦПереданныеОстатки.ВариантИсполнения
                ГДЕ
                    (НЕ &ПоФирме
                            ИЛИ РезервыТМЦПереданныеОстатки.ДокЗаказ.Фирма = &Фирма)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    ОжидаемыеПоступленияТМЦОстатки.КолОстаток,
                    0,
                    0,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОжидаемыеПоступленияТМЦ.Остатки(
                                &ДатаКон,
                                (НЕ &ПоФилиалу
                                    ИЛИ Филиал = &Филиал)
                                    И (НЕ &ПоФирме
                                        ИЛИ Фирма = &Фирма)
                                    И (НЕ &УказанГоризонтАнализаПотребностей
                                        ИЛИ НЕ &СУчетомСрокаПоставки
                                            И ЗаказОбеспечение.ДатаИсполнения <= &ГоризонтАнализаПотребностей
                                        ИЛИ &СУчетомСрокаПоставки
                                            И ВЫБОР
                                                КОГДА ВариантИсполнения.СрокПоставки = 0
                                                    ТОГДА ДОБАВИТЬКДАТЕ(ЗаказОбеспечение.ДатаИсполнения, ДЕНЬ, -Номенклатура.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                                ИНАЧЕ ДОБАВИТЬКДАТЕ(ЗаказОбеспечение.ДатаИсполнения, ДЕНЬ, -ВариантИсполнения.СрокПоставки) <= &ГоризонтАнализаПотребностей
                                            КОНЕЦ)) КАК ОжидаемыеПоступленияТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОжидаемыеПоступленияТМЦОстатки.ВариантИсполнения
                ГДЕ
                    (&ПоФилиалу
                            ИЛИ НЕ ОжидаемыеПоступленияТМЦОстатки.ЗаказОбеспечение ССЫЛКА Документ.ЗаказНаПеремещениеТМЦМеждуФилиалами)
                    И (НЕ &ТолькоУтвержденныеЗаказыОбеспечение
                            ИЛИ ОжидаемыеПоступленияТМЦОстатки.ЗаказОбеспечение.Утвержден)
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    РасходТМЦ_Сводно.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    РасходТМЦ_Сводно.КолРасходЗаДень,
                    0,
                    0
                ИЗ
                    (ВЫБРАТЬ
                        БазовыеДанные.ВариантИсполнения КАК ВариантИсполнения,
                        ВЫБОР
                            КОГДА &ДнейВПериоде = 0
                                ТОГДА 0
                            ИНАЧЕ ОстаткиТМЦОбороты.КолРасход / &ДнейВПериоде
                        КОНЕЦ КАК КолРасходЗаДень
                    ИЗ
                        БазовыеДанные КАК БазовыеДанные
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Обороты(&АнализРасходов_ДатаНач, &АнализРасходов_ДатаКон, Регистратор, ) КАК ОстаткиТМЦОбороты
                            ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОбороты.ВариантИсполнения
                    ГДЕ
                        НЕ ОстаткиТМЦОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТМЦ
                        И &ТекстУсловий_ОстаткиТМЦОбороты_Регистратор
                        И (НЕ &ПоФирме
                                ИЛИ ОстаткиТМЦОбороты.Фирма = &Фирма)
                    
                    ОБЪЕДИНИТЬ ВСЕ
                    
                    ВЫБРАТЬ
                        ВводРасходаТМЦТЧ.ВариантИсполнения,
                        ВЫБОР
                            КОГДА &ДнейВПериоде = 0
                                ТОГДА 0
                            ИНАЧЕ ВводРасходаТМЦТЧ.Кол * ВводРасходаТМЦТЧ.Коэффициент / &ДнейВПериоде
                        КОНЕЦ
                    ИЗ
                        БазовыеДанные КАК БазовыеДанные
                            ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ВводРасходаТМЦ.ТЧ КАК ВводРасходаТМЦТЧ
                            ПО БазовыеДанные.ВариантИсполнения = ВводРасходаТМЦТЧ.ВариантИсполнения
                    ГДЕ
                        ВводРасходаТМЦТЧ.Ссылка.ПометкаУдаления = ЛОЖЬ
                        И ВводРасходаТМЦТЧ.Ссылка.Дата >= &АнализРасходов_ДатаНач
                        И ВводРасходаТМЦТЧ.Ссылка.Дата <= &АнализРасходов_ДатаКон) КАК РасходТМЦ_Сводно
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    МинимальныеОстаткиТМЦ.Кол,
                    0
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.МинимальныеОстаткиТМЦ КАК МинимальныеОстаткиТМЦ
                        ПО БазовыеДанные.ВариантИсполнения = МинимальныеОстаткиТМЦ.ВариантИсполнения
                            И (МинимальныеОстаткиТМЦ.Склад = ЗНАЧЕНИЕ(Справочник.Склады.ПустаяСсылка))
                
                ОБЪЕДИНИТЬ ВСЕ
                
                ВЫБРАТЬ
                    БазовыеДанные.ВариантИсполнения,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    0,
                    ОстаткиТМЦОстатки.КолОстаток
                ИЗ
                    БазовыеДанные КАК БазовыеДанные
                        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТМЦ.Остатки(&ДатаКон, Склад В (&СкладМатериалов)) КАК ОстаткиТМЦОстатки
                        ПО БазовыеДанные.ВариантИсполнения = ОстаткиТМЦОстатки.ВариантИсполнения) КАК РазвернутыеДополнительныеДанные
            
            СГРУППИРОВАТЬ ПО
                РазвернутыеДополнительныеДанные.ВариантИсполнения) КАК ДополнительныеДанные
            ПО БазовыеДанные.ВариантИсполнения = ДополнительныеДанные.ВариантИсполнения) КАК РассчитанныеДанные
{УПОРЯДОЧИТЬ ПО
    Номенклатура.*,
    ВариантИсполнения.*,
    ОснПоставщик.*}
ИТОГИ
    СУММА(КолПотребностьВнешнаяя),
    СУММА(КолПотребностьПроизводства),
    СУММА(КолПотребностьВнутренняя),
    МАКСИМУМ(НормаПополнения),
    МАКСИМУМ(МинПартияЗакупки),
    МАКСИМУМ(СрокПоставкиДней),
    СУММА(КолОстаток),
    СУММА(КолОстаток_ТМЦ),
    СУММА(КолОстаток_ТМЦПереданные),
    СУММА(КолРезерв),
    СУММА(КолРезерв_ТМЦ),
    СУММА(КолРезерв_ТМЦПереданные),
    СУММА(КолОжидаемыеПоступления),
    СУММА(КолРасходЗаДень),
    СУММА(КолМинОстаток),
    СУММА(КолСвободныйОстаток),
    СУММА(КолПрофицит),
    СУММА(КолОстаток_СкладМатериалов)
ПО
    ОБЩИЕ
{ИТОГИ ПО
    Номенклатура.*,
    ВариантИсполнения.*,
    КолПотребностьВнешнаяя,
    КолПотребностьПроизводства,
    КолПотребностьВнутренняя,
    ОснПоставщик.*,
    Активность,
    РазрешитьНесколькоВариантовИсполнения,
    НормаПополнения,
    СрокПоставкиДней,
    КолОстаток,
    КолОстаток_ТМЦ,
    КолОстаток_ТМЦПереданные,
    КолРезерв,
    КолРезерв_ТМЦ,
    КолРезерв_ТМЦПереданные,
    КолРасходЗаДень,
    КолМинОстаток,
    КолСвободныйОстаток,
    КолОстаток_СкладМатериалов}
   Privetanya
 
48 - 09.07.20 - 16:40
(43) Далее при обходе группировки, если это "шапка", то обходишь второй результат пакетного запроса с ключевым словом ГДЕ и присоединяешь все названия своих поставщиков, если это не группировка по номенклатуре - просто присоединяешь пустые секции, если это группировка по номенклатуре - обходишь второй запрос, позиционируясь в выборке по значению группировки и присоединяешь все секции ---------------Может пример какой нибудь приведете?
У меня сейчас
результатыЗапроса = ПолучитьДанные();
    РезультатЗапроса = РезультатыЗапроса[3];-Это весь результат без поставщиков
    
    Если РезультатЗапроса.Пустой() Тогда
        глСообщить(ЭтотОбъект, "Нет данных для вывода отчета.", СтатусСообщения.Информация);
        Возврат;
    КонецЕсли;    
        
    // ВЫВОД В ВхМакет

    
    _Макет = ПолучитьМакет("Макет");
    
    // 1. ВЫВОД ШАПКИ

    ВывестиШапку(_Макет, ВхТаблДок, РезультатЗапроса);
    
    
    ВхТаблДок.ФиксацияСверху      = ВхТаблДок.ВысотаТаблицы;
    
    // 2. ВЫВОД СТРОК     

    
    // получим таблицу группировок

    _ТаблГр = ИзмеренияСтроки.Скопировать(Новый Структура("Использование", Истина));
    
    ЗапрВыборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией, _ТаблГр[0].ИмяИзмерения);
        
    ВхТаблДок.НачатьАвтогруппировкуСтрок();
    ВывестиГруппировку(_Макет, ЗапрВыборка, "Строки", 0, _ТаблГр, 0, ВхТаблДок);
    ВхТаблДок.ЗакончитьАвтогруппировкуСтрок();
   Privetanya
 
49 - 09.07.20 - 16:56
(43) Хотя,мне же не надо шапку,я уже в макете сделала 3 столбца с поставщиками. Получается,что нужно в самую первую группировку выводить - Гр0
https://ibb.co/sjWvC2b
   Privetanya
 
50 - 09.07.20 - 16:58
(43) я имею ввиду названия поставщиков
   Ёпрст
 
51 - 09.07.20 - 19:09
(49) Это не есть гуд. А будет 4 поставщика, или 2..опять отчет переделывать ? ;)
   Йохохо
 
52 - 09.07.20 - 19:18
ИТОГИ ПО КолОстаток
600 строк
><
   Privetanya
 
53 - 10.07.20 - 07:58
(51) ну да вы правы
   Privetanya
 
54 - 10.07.20 - 08:50
(51) А как получить максимальное количество поставщиков по каждой номенклатуре, чтобы понять сколько колонок добавлять
   Йохохо
 
55 - 10.07.20 - 09:01
Pokaanya
   Ёпрст
 
56 - 10.07.20 - 10:15
(54) во втором запросе посмотришь Количество() у выборки
   Ёпрст
 
57 - 10.07.20 - 10:16
или общие итоги
   Privetanya
 
58 - 10.07.20 - 10:26
(56) Вот так,получаем количество же вообщем,а нужно узнать количество различных по каждой номенклатуре и получить максимальное число поставщиков
|ВЫБРАТЬ
    |    НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
    |    НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
    |    НоменклатураПоставщиков.Поставщик КАК Поставщик,
    |    НоменклатураПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
    |    НоменклатураПоставщиков.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
    |ИЗ
    |    РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
    |ИТОГИ
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поставщик)
    |ПО
    |    ОБЩИЕ,
    |    ВариантИсполнения,
    |    НоменклатураПоставщика,
    |    ВариантИсполненияПоставщика,
    |    Номенклатура
    |;
   Ёпрст
 
59 - 10.07.20 - 10:29
(58) номенклатуру нужно на самый верх двигать
   Ёпрст
 
60 - 10.07.20 - 10:29
+ она должна быть в иерархии, чтоб совпадала с первым запросом для поиска
 
 Рекламное место пустует
   Privetanya
 
61 - 10.07.20 - 10:34
(60) Вот так?
|ВЫБРАТЬ
    |    НоменклатураПоставщиков.Номенклатура КАК Номенклатура,
    |    НоменклатураПоставщиков.ВариантИсполнения КАК ВариантИсполнения,
    |    НоменклатураПоставщиков.Поставщик КАК Поставщик,
    |    НоменклатураПоставщиков.НоменклатураПоставщика КАК НоменклатураПоставщика,
    |    НоменклатураПоставщиков.ВариантИсполненияПоставщика КАК ВариантИсполненияПоставщика
    |ИЗ
    |    РегистрСведений.НоменклатураПоставщиков КАК НоменклатураПоставщиков
    |ИТОГИ
    |    КОЛИЧЕСТВО(РАЗЛИЧНЫЕ Поставщик)
    |ПО
    |    ОБЩИЕ,
    |    Номенклатура ИЕРАРХИЯ,
    |    ВариантИсполнения,
    |    НоменклатураПоставщика,
    |    ВариантИсполненияПоставщика
    |;
   Ёпрст
 
62 - 10.07.20 - 10:36
+60 т.е итоги должны быть в том же порядке, что и в основном запросе

если в первом у тебя
 Номенклатура
ВариантИсполнения  
то во втором надо
  Поставщик,
  Номенклатура,
  НоменклатураПоставщика, 
  ВариантИсполненияПоставщика

потом, ты Поставщика выводишь вправо,
по Номенклатуре позиционируешься в выборке, далее обходишь НоменклатураПоставщика со словом ВСЕ и тоже вправо
   Privetanya
 
63 - 10.07.20 - 10:44
(62) по Номенклатуре позиционируешься в выборке, далее обходишь НоменклатураПоставщика со словом ВСЕ и тоже вправо


РезультатыЗапросаПост = ПолучитьДанные();
    РезультатЗапросаПост = РезультатыЗапросаПост[2];



ПечГрСтр = "";// список группировок строкой

    Для Каждого ЭлементИзмеренияСтроки Из ИзмеренияСтроки Цикл
        Если ЭлементИзмеренияСтроки.Использование Тогда
            Если НЕ глПустоеЗначение(ЭлементИзмеренияСтроки.Представление) Тогда
                ПечГрСтр = ПечГрСтр + ?(ПечГрСтр = "", "", " / ") + СокрЛП(ЭлементИзмеренияСтроки.Представление);
            Иначе        
                ПечГрСтр = ПечГрСтр + ?(ПечГрСтр = "", "", " / ") + СокрЛП(ЭлементИзмеренияСтроки.ПутьКДанным);
            КонецЕсли;     
        КонецЕсли;     
    КонецЦикла;    
    Область = ВхМакет.ПолучитьОбласть("Шапка|Начало");
    Область.Параметры.ПечГрСтр   = ПечГрСтр; 
    ВхТаблДок.Вывести(Область); 
    
    ВхТаблДок.ФиксацияСлева       = Область.ШиринаТаблицы;
        
    // "Шапка|ВертикальныйРазделитель"

    Область = ВхМакет.ПолучитьОбласть("Шапка|ВертикальныйРазделитель1");
    ВхТаблДок.Присоединить(Область);
    
     
    // "Шапка|Поставщик

        Область = ВхМакет.ПолучитьОбласть("Шапка|Поставщик");
        ВхТаблДок.Присоединить(Область);
 

В смысле? как это сделать?
   Сергиус
 
64 - 10.07.20 - 10:52
(0)Слишком мало вложенных запросов..надо больше!)
   Ёпрст
 
65 - 10.07.20 - 11:39
(63) для шапки, обходишь второй запрос по группировке Поставщик и присоединяешь вправо.

потом, если выборка первого запроса это иерархия, то просто сбрасываешь выборку по  поставщику, обходишь её и присоединяешь пустые ячейки вправо,
если это не иерархия и выборка по номенклатуре, то делаешь выборканоменклатураПоставщика = выборкапоставщика.выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Поставщик,Номенклатура","Все");

и в ней уже обходишь выборку по поставщику, и делаешь Если выборканоменклатураПоставщика.НайтиСледующий(Новый Структура("Поставщик,Номенклатура",выборкапоставщика.Поставщик,ВыборкаИзПервогоЗапроса.Номенклатура) Тогда
   лепишь значение в ячейку и присоединяешь
Иначе присоединяешь пустую ячейку

Тип того..
   Ёпрст
 
66 - 10.07.20 - 11:40
и.. не забывай выборки сбрасывать после применения метода НайтиСледующий
   Privetanya
 
67 - 10.07.20 - 13:56
(66) Делаю так,но что то выводится не правильно,таблица поехала https://ibb.co/MsqxQfB
  РезультатыЗапросаПост = ПолучитьДанные();
    РезультатЗапросаПост = РезультатыЗапросаПост[2];
   ТаблНомПост = РезультатЗапросаПост.Выгрузить();


Счетчик=ТаблНомПост[3].Поставщик;
    пока Счетчик<>0 Цикл    
        Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");
        
        Если _ИмяГр = "ОснПоставщик" тогда
            СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);

            МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
            Сч=1;
            Для Каждого стр из МассивПост цикл
                
                //Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");

                
                Если _ИмяГр = "ОснПоставщик" Тогда
                    Область.Параметры.ЗначениеГрСтрПостав     = стр.Поставщик; 
                     ВхТаблДок.Присоединить(Область); 
                     Сч=Сч+1;
                КонецЕсли;
                Если Сч = 3 Тогда
                    Прервать;
                КонецЕсли;

            КонецЦикла;
               
        КонецЕсли;
        Если _ИмяГр = "Номенклатура" тогда
            Отбор=Новый Структура("Номенклатура",ВхЗапрВыб.Номенклатура);
            МассивПост=ТаблНомПост.НайтиСтроки(Отбор);
            Сч1=1;
            Для Каждого стр из МассивПост цикл
                
                //Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");

                
                Если _ИмяГр = "Номенклатура" И НЕ ВхЗапрВыб.РазрешитьНесколькоВариантовИсполнения
                    Тогда
                    Область.Параметры.ЗначениеГрСтрПостав     = стр.НоменклатураПоставщика; 
                      ВхТаблДок.Присоединить(Область); 
                     Сч1=Сч1+1;

                КонецЕсли;
                 Если Сч1 = 3 Тогда
                    Прервать;
                КонецЕсли;

            КонецЦикла;
              //  ВхТаблДок.Присоединить(Область);

        КонецЕсли;
        
        Если  _ИмяГр = "Номенклатура" или _ИмяГр = "ВариантИсполнения" тогда
            СтруктураОтбора = Новый Структура("Номенклатура,ВариантИсполнения", ВхЗапрВыб.Номенклатура, ВхЗапрВыб.ВариантИсполнения);
            МассивПост=ТаблНомПост.НайтиСтроки(СтруктураОтбора);
            Сч2=1;
            Для Каждого стр из МассивПост цикл
                
                //Область = ВхМакет.ПолучитьОбласть(_ИмяСекции + "|Поставщик");

                Если _ИмяГр = "Номенклатура"                    Тогда
                    Область.Параметры.ЗначениеГрСтрПостав     = стр.НоменклатураПоставщика; 
                    ВхТаблДок.Присоединить(Область); 
                     Сч2=Сч2+1
                Иначе Если
                 _ИмяГр = "ВариантИсполнения" тогда
                    Область.Параметры.ЗначениеГрСтрПостав     = стр.ВариантИсполненияПоставщика;
                      ВхТаблДок.Присоединить(Область); 
                     Сч2=Сч2+1
                 КонецЕсли;
                   КонецЕсли;
                 Если Сч2 = 3 Тогда
                    Прервать;
                КонецЕсли;
                
                //ВхТаблДок.Присоединить(Область);

            КонецЦикла;    
            //ВхТаблДок.Присоединить(Область);

        КонецЕсли;
        //ВхТаблДок.Присоединить(Область);

        Счетчик=Счетчик-1;
        КонецЦикла;


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.