Версия для печати темы (https://pro1c.org.ua/index.php?s=5275a836d9ee82a206048f0f3c7a8790&showtopic=40254)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Система компоновки данных _ Разное значение в запросе и СКД

Автор: alexandr_f 14.09.17, 13:13

1с 8 УПП.
Делаю запрос - муторошный.
Код

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СИЗСпецУсловияПодразделения.Ссылка КАК Ссылка,
    СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций КАК ПодразделенияОрганизаций,
    Подразделения.Родитель,
    Подразделения.Наименование,
    Подразделения.Ссылка КАК Ссылка1
ПОМЕСТИТЬ ЕстьССЫЛКА
ИЗ
    Подразделения КАК Подразделения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения
        ПО Подразделения.Ссылка = СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    СИЗСпецУсловияПодразделения.Ссылка,
    СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций КАК ПОдраЗДЕЛЕНИЕ,
    Подразделения.Ссылка КАК ПодразделенияОрганизаций,
    Подразделения.Родитель
ПОМЕСТИТЬ НЕТССЫЛКИ
ИЗ
    Справочник.СИЗСпецУсловия.Подразделения КАК СИЗСпецУсловияПодразделения
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Подразделения КАК Подразделения
        ПО СИЗСпецУсловияПодразделения.ПодразделенияОрганизаций = Подразделения.Родитель
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НЕТССЫЛКИ.Ссылка,
    НЕТССЫЛКИ.ПодразделенияОрганизаций
ПОМЕСТИТЬ СПЕЦПОДРАЗДЕЛЕНИЯ
ИЗ
    НЕТССЫЛКИ КАК НЕТССЫЛКИ

ОБЪЕДИНИТЬ

ВЫБРАТЬ
    ЕСТЬССЫЛКА.Ссылка,
    ЕСТЬССЫЛКА.ПодразделенияОрганизаций
ИЗ
    ЕстьССЫЛКА КАК ЕСТЬССЫЛКА
;

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

ОБЪЕДИНИТЬ

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НормыВыдачиСпецодеждыСпецодежда.Цех,
    НормыВыдачиСпецодеждыСпецодежда.Наименование,
    НормыВыдачиСпецодеждыСпецодежда.Требования,
    НормыВыдачиСпецодеждыСпецодежда.дней,
    КОЛИЧЕСТВО(НормыВыдачиСпецодеждыСпецодежда.Наименование) КАК Количество
ПОМЕСТИТЬ НАБОР
ИЗ
    НормыВыдачиСпецодеждыСпецодежда КАК НормыВыдачиСпецодеждыСпецодежда

СГРУППИРОВАТЬ ПО
    НормыВыдачиСпецодеждыСпецодежда.Наименование,
    НормыВыдачиСпецодеждыСпецодежда.Требования,
    НормыВыдачиСпецодеждыСпецодежда.дней,
    НормыВыдачиСпецодеждыСпецодежда.Цех
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    НАБОР.Цех,
    НАБОР.Наименование,
    НАБОР.Требования,
    НАБОР.дней,
    Набор.Количество*360 /дней  КАК Надо

ПОМЕСТИТЬ Потребность
ИЗ
    НАБОР КАК НАБОР
;    
ВЫБРАТЬ
    Набор.Цех,
    Набор.Наименование,
    Набор.Требования,
    СУММА(Надо) КАК Потребность
ИЗ
    Потребность КАК Набор

СГРУППИРОВАТЬ ПО
    Набор.Наименование,
    Набор.Требования,
    Набор.Цех

Отлаживаю его
Потом переношу его один к одному в отчет - и другие значения. Такое ощущения что
    КОЛИЧЕСТВО(НормыВыдачиСпецодеждыСпецодежда.Наименование) КАК Количество

не вычисляет.
Я не очень понимаю различия. Что надо поменять?

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua