Имя: Пароль:
1C
1С v8
Помогите пожалуйста с запросом
0 lg2marvel
 
05.06.19
17:56
Добрый день. Запросом получаю виды начислений, помещаю перечень видов в ВТНачисленияУдержания

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

Затем нужно вывести Физлицо, Подразделение на котором устроен сотрудник, начисление и сумму начисления, но с таким условием чтоб если для данного сотрудника начисление не используется то выводилась пустая строка или 0.
Не могу придумать как связаться с временной таблицей чтоб это реализовать? Второй запрос выглядит примерно так:

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

Если делаю ЛЕВОЕ СОЕДИНЕНИЕ и связь по НачислениеУдержание - если не используется начисление - оно пропускается
1 novichok79
 
05.06.19
18:07
а база какая? версия платформы?
2 novichok79
 
05.06.19
18:08
если ЗУП 3.1 там для этого уже запросы создаются, ты чисто из таблиц данные тягаешь
3 lg2marvel
 
05.06.19
18:12
(1) ЗУП 3.1.9 платформа (8.3.13.1644)
4 lg2marvel
 
05.06.19
18:21
По сути надо решить задачу: есть 2 таблицы:
А
Наименование сумма   цвет
а                            10      красный
б                            15      синий
с                             20     синий

Б
Наименование
Красный
Синий
Желтый

Надо вывести запросом в таблицу
С
Наименование  Сумма  Цвет
а                             10        Красный
а                              0         синий
а                              0         Желтый
б                              0        Красный
б                              15        синий
б                              0         Желтый
с                             0         Красный
с                              20         синий
с                              0         Желтый
5 lg2marvel
 
05.06.19
18:23
Или может имея 2 результата запроса объединить их...
6 Бертыш
 
05.06.19
23:31
(5) Какой то ты левый. Наше дело правое. Мы победим
7 catena
 
06.06.19
04:54
Составляете таблицу всех начислений/удержаний, которые должны фигурировать.
К ней левым по удержанию и физлицу крепите значения по физлицам с ЕСТЬNULL(НачисленияУдержанияПоСотрудникамОбороты.СуммаОборот, 0).
8 lg2marvel
 
06.06.19
10:09
(7) Сделал вот так:
ВЫБРАТЬ
    НачисленияУдержанияПоСотрудникам.НачислениеУдержание КАК НачислениеУдержание,
    НачисленияУдержанияПоСотрудникам.ГруппаНачисленияУдержанияВыплаты КАК ГруппаНачисленияУдержанияВыплаты,
    НачисленияУдержанияПоСотрудникам.НачислениеУдержание.КраткоеНаименование КАК НачислениеУдержаниеКраткое,
    НачисленияУдержанияПоСотрудникамОбороты.Подразделение КАК Подразделение,
    НачисленияУдержанияПоСотрудникамОбороты.ФизическоеЛицо КАК ФизическоеЛицо,
    ЕСТЬNULL(НачисленияУдержанияПоСотрудникамОбороты.СуммаОборот, 0) КАК СуммаНУ
ИЗ
    РегистрНакопления.НачисленияУдержанияПоСотрудникам КАК НачисленияУдержанияПоСотрудникам
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.НачисленияУдержанияПоСотрудникам.Обороты(
                НАЧАЛОПЕРИОДА(&Нач, ДЕНЬ),
                КОНЕЦПЕРИОДА(&Кон, ДЕНЬ),
                ,
                (НЕ &ОтборПоФизЛицу
                    ИЛИ ФизическоеЛицо = &ФизическоеЛицо)
                    И (НЕ &ОтборПоПодразделению
                        ИЛИ Подразделение = &Подразделение)) КАК НачисленияУдержанияПоСотрудникамОбороты
        ПО (НачисленияУдержанияПоСотрудникам.ФизическоеЛицо = НачисленияУдержанияПоСотрудникамОбороты.ФизическоеЛицо)
            И (НачисленияУдержанияПоСотрудникам.НачислениеУдержание = НачисленияУдержанияПоСотрудникамОбороты.НачислениеУдержание)
ГДЕ
    НачисленияУдержанияПоСотрудникам.Период МЕЖДУ НАЧАЛОПЕРИОДА(&Нач, ДЕНЬ) И КОНЕЦПЕРИОДА(&Кон, ДЕНЬ)
    И (НЕ &ОтборПоПодразделению
            ИЛИ НачисленияУдержанияПоСотрудникам.Подразделение В ИЕРАРХИИ (&Подразделение))
    И (НЕ &ОтборПоФизЛицу
            ИЛИ НачисленияУдержанияПоСотрудникам.ФизическоеЛицо = &ФизическоеЛицо)


ИТОГИ
    СУММА(СуммаНУ)
ПО
    Подразделение ИЕРАРХИЯ,
    ФизическоеЛицо,
    ГруппаНачисленияУдержанияВыплаты,
    НачислениеУдержание
АВТОУПОРЯДОЧИВАНИЕ    

В итоге выводится не так как хотелось бы
9 lg2marvel
 
06.06.19
10:11
10 catena
 
06.06.19
10:55
(8)Хорошо, уточняю: Составляете таблицу всех ``уникальных`` начислений/удержаний
14 novichok79
 
06.06.19
11:41
погуглите в конфигурации:

СоздатьВТНачисленияСПоказателямиТарифныхСтавок
СоздатьВТКадровыеДанныеСотрудников

я бы шел таким путем, учитывая переделки ЗУП 3.1, прямой запрос при следующем обновлении может сломаться.
15 lg2marvel
 
06.06.19
12:05
(10) (14) спасибо, смотрю
16 lg2marvel
 
06.06.19
12:15
(10) Это и есть уникальные начисления удержания
НачислениеУдержание    
Оплата по окладу    
Премия мес
НДФЛ    
Удержание по исполнительному документу

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

СГРУППИРОВАТЬ ПО
    НачисленияУдержанияПоСотрудникам.ГруппаНачисленияУдержанияВыплаты,
    НачисленияУдержанияПоСотрудникам.НачислениеУдержание,
    НачисленияУдержанияПоСотрудникам.НачислениеУдержание.КраткоеНаименование
АВТОУПОРЯДОЧИВАНИЕ
17 catena
 
06.06.19
12:26
(16)Но в (8) соединение ведь не с такой таблицей.
18 breezee
 
06.06.19
12:28
(16) Не пишите такую констуркцию
    И (НЕ &ОтборПоПодразделению
            ИЛИ НачисленияУдержанияПоСотрудникам.Подразделение В ИЕРАРХИИ (&Подразделение))
ИЛИ плохо работает, оптимизатор его плохо ест. В ИЕРАРХИИ тоже лучше не использовать.
Не пишите, потом кто-то будет переписывать..
19 lg2marvel
 
06.06.19
12:55
(17) вот запрос: таблица начислений удержаний и к ней левым соединением регистр с оборотами

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

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

а результат тот-же: http://i.piccy.info/i9/0a87667e6df6fd1c7affcd4a0bc7578e/1559815411/73356/1312453/Snymok.jpg
20 catena
 
06.06.19
13:02
(19)В данном случае сгруппировать работает уже с результатом.