Имя: Пароль:
1C
1С v8
Добавить в исключение одного сотрудника в запросе
0 VID1234
 
11.08.21
13:04
Здравствуйте. Есть такой запрос!
    Запрос = Новый Запрос;
    Запрос.Текст =
        "ВЫБРАТЬ
        |    Начисления.Сотрудник КАК Сотрудник,
        |    ЕСТЬNULL(Начисления.ОтработаноЧасов, 0) КАК ОтработаноЧасов,
        |    Начисления.Регистратор КАК Регистратор,
        |    Начисления.ВидРасчета КАК ВидРасчета
        |ПОМЕСТИТЬ ВТ_Часы
        |ИЗ
        |    РегистрРасчета.Начисления КАК Начисления
        |ГДЕ
        |    Начисления.ВидРасчета.ВидВремени = &ВидВремени
        |;
        |
        |////////////////////////////////////////////////////////////­////////////////////
        |ВЫБРАТЬ
        |    БухучетРаспределениеОсновногоЗаработка.Сотрудник КАК Сотрудник,
        |    БухучетРаспределениеОсновногоЗаработка.СтатьяФинансирования КАК СтатьяФинансирования,
        |    БухучетРаспределениеОсновногоЗаработка.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
        |    БухучетРаспределениеОсновногоЗаработка.ДоляРаспределения КАК ДоляРаспределения
        |ПОМЕСТИТЬ ВТ_Доля
        |ИЗ
        |    РегистрСведений.БухучетРаспределениеОсновногоЗаработка КАК БухучетРаспределениеОсновногоЗаработка
        |ГДЕ
        |    БухучетРаспределениеОсновногоЗаработка.ПериодРегистрации МЕЖДУ &НачПериода И &КонПериода
        |;
        |
        |////////////////////////////////////////////////////////////­////////////////////
        |ВЫБРАТЬ
        |    БухучетНачисленияУдержанияПоСотрудникам.Сотрудник КАК Сотрудник,
        |    БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете КАК СпособОтраженияЗарплатыВБухучете,
        |    БухучетНачисленияУдержанияПоСотрудникам.СтатьяФинансирования КАК СтатьяФинансирования,
        |    БухучетНачисленияУдержанияПоСотрудникам.Сумма КАК Сумма,
        |    ЕСТЬNULL(ВТ_Часы.ОтработаноЧасов * ВТ_Доля.ДоляРаспределения / 100, 0) КАК Часы
        |ИЗ
        |    РегистрНакопления.БухучетНачисленияУдержанияПоСотрудникам КАК БухучетНачисленияУдержанияПоСотрудникам
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Часы КАК ВТ_Часы
        |        ПО БухучетНачисленияУдержанияПоСотрудникам.Сотрудник = ВТ_Часы.Сотрудник
        |            И БухучетНачисленияУдержанияПоСотрудникам.Регистратор = ВТ_Часы.Регистратор
        |            И БухучетНачисленияУдержанияПоСотрудникам.НачислениеУдержание = ВТ_Часы.ВидРасчета
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Доля КАК ВТ_Доля
        |        ПО БухучетНачисленияУдержанияПоСотрудникам.Сотрудник = ВТ_Доля.Сотрудник
        |            И БухучетНачисленияУдержанияПоСотрудникам.СтатьяФинансирования = ВТ_Доля.СтатьяФинансирования
        |            И БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = ВТ_Доля.СпособОтраженияЗарплатыВБухучете
        |ГДЕ
        |   ВЫБОР
        |    КОГДА БухучетНачисленияУдержанияПоСотрудникам.Сотрудник = &Сотрудник ТОГДА
        |    БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете.Наименование ПОДОБНО ""%Способ2%""
        |    ИНАЧЕ
        |    БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ
        |КОНЕЦ
        |    И БухучетНачисленияУдержанияПоСотрудникам.Период МЕЖДУ &НачПериода И &КонПериода
        |    И БухучетНачисленияУдержанияПоСотрудникам.НачислениеУдержание.ВклВРаспределениеПЭО";
    Запрос.УстановитьПараметр("Способ", Объект.Проект);
    Запрос.УстановитьПараметр("НачПериода",НачалоМесяца(Объект.Дата));
    Запрос.УстановитьПараметр("КонПериода",КонецМесяца(Объект.Дата));
    Запрос.УстановитьПараметр("ВидВремени",Перечисления.ВидыРабочегоВремениСотрудников.ОтработанноеВПределахНормы);
    Запрос.УстановитьПараметр("Сотрудник",Справочники.Сотрудники.НайтиПоКоду("ПА2"));
    
    ВыборкаДетальныеЗаписи = Запрос.Выполнить().Выгрузить();
    
    Объект.ФОТ.Загрузить(ВыборкаДетальныеЗаписи);

Показать

Как работает этот запрос, есть самописный документ, в этом документе выведены сотрудники, СпособОтраженияЗарплатыВБухучете и доля в том или ином способе. Запрос в целом работает как нужно, но мне нужно добавить еще одного сотрудника, у которого СпособОтраженияЗарплатыВБухучете не тот который отображен в поле Объект.Проект.
В этом документе 35 человек имеет СпособОтраженияЗарплатыВБухучет - Способ, и еще 10 со Способ2, в их числе и сотрудник с кодом ПА2. Если у меня код написан так
БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ
, то выводится 35 сотрудников, если так:
ВЫБОР
        |    КОГДА БухучетНачисленияУдержанияПоСотрудникам.Сотрудник = &Сотрудник ТОГДА
        |    БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете.Наименование ПОДОБНО ""%Способ2%""
        |    ИНАЧЕ
        |    БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ
        |КОНЕЦ
то тоже 35, а должно быть 36, должен добавиться Сотрудник с кодом ПА2. Вопрос, что я делаю не так, почему условие не срабатывает? Как можно решить задачу?
1 Жан Пердежон
 
11.08.21
13:20
трешовенько

...
ГДЕ
(СпособОтраженияЗарплатыВБухучете = &Способ ИЛИ Сотрудник = &Сотрудник)
...
2 VID1234
 
11.08.21
13:27
(1) Здравствуйте. Теперь попало, но только теперь их несколько?, т.е. тот сотрудник разбился на несколько частей, видимо сколько способов отражения, столько он и вывел, а должен только по способу 2
3 Жан Пердежон
 
11.08.21
13:29
(2) ты программист или где?
ГДЕ
(СпособОтраженияЗарплатыВБухучете = &Способ ИЛИ (Сотрудник = &Сотрудник И СпособОтраженияЗарплатыВБухучете = &Способ2)
...
4 VID1234
 
11.08.21
13:37
(3) Только учусь! А задачу делать нужно! Не выводит, хотя я для теста взял и вывел реквизит на форму Способ2 и явно его заполнил, но толку нет, этот сотрудник не попал в список.
(БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ ИЛИ БухучетНачисленияУдержанияПоСотрудникам.Сотрудник = &Сотрудник И БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ2)
Запрос.УстановитьПараметр("Способ2",Объект.ПроектДляАУП);
5 VID1234
 
11.08.21
13:40
(3) скобку наверное забыл поставить, сейчас пробую
6 VID1234
 
11.08.21
13:43
(3) нет, скобка не помогла
(БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ ИЛИ (БухучетНачисленияУдержанияПоСотрудникам.Сотрудник = &Сотрудник И БухучетНачисленияУдержанияПоСотрудникам.СпособОтраженияЗарплатыВБухучете = &Способ2)
7 VID1234
 
11.08.21
13:44
в конце 2 скобки!
8 VID1234
 
11.08.21
14:27
(3) все разобрался, спасибо. Начал шерстить регистры и понял что второй способ там не прописан, поэтому и не отображается, зашел в регистратор изменил способ отражения на правильный , соответственно в регистре тоже поменялось и все сразу заработало!