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

РезультатБаза равна 0

Автор Дмитрий357, 19 ноя 2021, 12:06

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

Дмитрий357

Добрый день! Задача посчитать премию, которая равна произведению процента, задаваемым пользователем, и суммы оклада (основное начисление) и подарка (допначисление, задается пользователем вручную в документе начисление зарплаты). Не считает правильно поскольку в запросе при проверке точкой останова результатбаза по допначсилениям (т.е. по подарку) равен нулю. Код ниже:
Движения.ДополнительныеНачисления.Записывать=Истина;
Для Каждого ТекСтрокаНачисленияДоп Из НачисленияДоп Цикл
Движение2=Движения.ДополнительныеНачисления.Добавить();
Движение2.Сторно=Ложь;
ЗаполнитьЗначенияСвойств(Движение2, ТекСтрокаНачисленияДоп);
Движение2.ВидРасчета=ТекСтрокаНачисленияДоп.ВидНачисления;
Движение2.ПериодРегистрации=Дата;
Если Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Премия ИЛИ Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Подарок Тогда
ПрошлыйМесяц=ДобавитьМесяц(Дата, -1);
Движение2.БазовыйПериодНачало=НачалоМесяца(ПрошлыйМесяц);
Движение2.БазовыйПериодКонец=КонецМесяца(ПрошлыйМесяц);
Иначе
Движение2.БазовыйПериодНачало=НачалоМесяца(Дата);
Движение2.БазовыйПериодКонец=КонецМесяца(Дата);
КонецЕсли;
Если Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Подарок Тогда
Движение2.Результат=ТекСтрокаНачисленияДоп.Размер;
КонецЕсли;
КонецЦикла;
Движения.ДополнительныеНачисления.Записать();



//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!

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

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

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

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

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



//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА

Движения.ДополнительныеНачисления.Записать();

Вот здесь ВыборкаДетальныеЗаписи.БазаДопНач ноль.

Теги:

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

Рейтинг@Mail.ru

Поиск