Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
22 ноя 2024, 12:26

Запрос для расчета премии директора

Автор Дмитрий357, 15 окт 2021, 14:57

0 Пользователей и 1 гость просматривают эту тему.

Дмитрий357

Добрый день! Помогите написать запрос. Не могу никак сообразить какие поля выбрать для запроса и что вообще сделать. Необходимо рассчитать премию директора, которая получается из сумм премий сотрудников, за исключением премии директора, и умножения этой суммы на задаваемый процент. Есть документ Начисление зарплаты, в котором указываются должности всех сотрудников. Вот по должности и необходимо осуществить расчет. Процент задается пользователем вручную. Премия директора является доп. начислением как и просто премия. Должности хранятся в одноименном справочнике. Также подскажите как реализовать подсчет всей суммы начислений для каждого сотрудника, т.е. сколько итого должен получить сотрудник по итогу месяца.   

alexandr_ll

Дмитрий357, Зачем делать запрос по должностям, если премия директора зависит от сумм премий сотрудников? Это совсем разные объекты учета. Сумма начислений по сотруднику берется из регистра накопления Взаиморасчеты с сотрудниками.

Дмитрий357

alexandr_ll, А разве нельзя сделать это все в рамках регистра расчета и документа начисление зарплаты?! Вот как по аналогии с расчетом премии:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки КАК НомерСтроки,
| ДополнительныеНачисленияБазаОсновныеНачисления.РезультатБаза КАК РезультатБаза,
| ДополнительныеНачисленияБазаОсновныеНачисления.РазоваяПремияПодарокРазрез КАК РазоваяПремияПодарокРазрез
|ИЗ
| РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
| &МассивИзмерений,
| &МассивИзмерений,
| &Разрезы,
| ВидРасчета = &Премия
| И Регистратор = &Ссылка) КАК ДополнительныеНачисленияБазаОсновныеНачисления";

МассивИзмерений=Новый Массив;
МассивИзмерений.Добавить("Сотрудник");
Разрезы=Новый Массив;
Разрезы.Добавить("РазоваяПремияПодарок");
Запрос.УстановитьПараметр("МассивИзмерений", МассивИзмерений);
Запрос.УстановитьПараметр("Премия", ПланыВидовРасчета.ДополнительныеНачисления.Премия);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
Запрос.УстановитьПараметр("Разрезы", Разрезы);

РезультатЗапроса = Запрос.Выполнить();

ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
  Для Каждого СтрДвижение ИЗ Движения.ДополнительныеНачисления Цикл
  Если СтрДвижение.ВидРасчета<>ПланыВидовРасчета.ДополнительныеНачисления.Премия Тогда
Продолжить;
  КонецЕсли;
ВыборкаДетальныеЗаписи.Сбросить();
ВыборкаДетальныеЗаписи.НайтиСледующий(СтрДвижение.НомерСтроки, "НомерСтроки");
СтрДвижение.Результат=СтрДвижение.ВеличинаПроцентаДляРасчетаПремии/100*(ВыборкаДетальныеЗаписи.РезультатБаза+ВыборкаДетальныеЗаписи.РазоваяПремияПодарокРазрез);
КонецЦикла;

Дмитрий357

Или еще вот нашел код для расчета премии руководителя подразделения. Но здесь создается по-видимо реквизит СотрудникРуководитель, а мне хотелось бы чтобы по должности

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

    Измерения = Новый Массив(1);
    Измерения[0] = "Подразделение";

    Разрезы = Новый Массив(1);
    Разрезы[0] = "Сотрудник";

    Запрос.УстановитьПараметр("Регистратор" ,Регистратор);
    Запрос.УстановитьПараметр("ВидРасчета"  ,ПланыВидовРасчета.ДополнительныеНачисления.Премия);
    Запрос.УстановитьПараметр("Измерения"   ,Измерения);
    Запрос.УстановитьПараметр("Разрезы"     ,Разрезы);

    Выборка = Запрос.Выполнить().Выбрать();
    Для Каждого Запись Из НаборДвижений Цикл

        Отбор.НомерСтроки = Запись.НомерСтроки;
        Выборка.Сбросить();
        Если Выборка.НайтиСледующий(Отбор) Тогда

            Запись.База         = Выборка.База;
            Запись.Результат    = Выборка.Результат;

        КонецЕсли;

    КонецЦикла;

alexandr_ll

Дмитрий357, Ну вы же не написали, какую конфигурацию используете. Например, в бухгалтерии нет регистров расчета.

Дмитрий357


alexandr_ll

Дмитрий357,
Цитата: Дмитрий357 от 20 окт 2021, 07:19alexandr_ll, 8.3 1С Предприятие
Это не конфигурация. Нужно знать конфигурацию (Зарплата, бухгалтерия м т.д.) и ее релиз

Дмитрий357


Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск