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

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

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ Разовые начисления ЗУП обработка

Автор: kinoma 12.02.19, 21:07

Столкнулся с небольшой проблемой в Запросе. Я новичок.
Нужно автоматизировать разовое начисление (вредность) по формуле Оклад\Норма рабочего времени как Тарифная ставка.
И по табелю 75% времени - время по вредности как отработанное время для расчёта результата.
Я создал обработку, из которой хочу получить такие данные как всех Сотрудников определенного подразделения и должности если указана, Оклад, Норма рабочего времени и Отработанное время за период для того, чтобы вставить полученные данные в соответствующие поля табличного представления.

Сотрудников с окладом вытащить не проблема, проблема соединить их по отработанному времени без переданного параметра определенного сотрудника.

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

ГДЕ
    Начисления.Сотрудник.ТекущееПодразделениеОрганизации = &подразделениеОрганизации
    И Начисления.Сотрудник.ТекущаяДолжностьОрганизации = &Должность
    И Начисления.Сотрудник.Актуальность = ИСТИНА
    И Начисления.ВидРасчета <> Начисления.ВидРасчетаИзмерение



Норма рабочего времени за период.

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


И обороты по табелю, которые нужно умножить на 75%.

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


Как правильно соединить эти таблицы в один запрос?

Автор: fly 08.05.19, 16:01

kinoma @ 12.02.19, 22:07 * ,
Вы ставишТЕ отбор:

 И НЕ ГрафикиРаботы.Документ ССЫЛКА 
Документ.ТабельУчетаРабочегоВремениОрганизации


УбериТЕ его, когда табель заполнит значение графиков работы - появится измерение Сотрудник.
Просто его и джойниТЕ, с другими таблицами:

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



 ! 

http://pro1c.org.ua/index.php?act=announce&id=2: 1
 

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