Добрый день! Задача посчитать премию, которая равна произведению процента, задаваемым пользователем, и суммы оклада (основное начисление) и подарка (допначисление, задается пользователем вручную в документе начисление зарплаты). Не считает правильно поскольку в запросе при проверке точкой останова результатбаза по допначсилениям (т.е. по подарку) равен нулю. Код ниже:
Движения.ДополнительныеНачисления.Записывать=Истина;
Для Каждого ТекСтрокаНачисленияДоп Из НачисленияДоп Цикл
Движение2=Движения.ДополнительныеНачисления.Добавить();
Движение2.Сторно=Ложь;
ЗаполнитьЗначенияСвойств(Движение2, ТекСтрокаНачисленияДоп);
Движение2.ВидРасчета=ТекСтрокаНачисленияДоп.ВидНачисления;
Движение2.ПериодРегистрации=Дата;
Если Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Премия ИЛИ Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Подарок Тогда
ПрошлыйМесяц=ДобавитьМесяц(Дата, -1);
Движение2.БазовыйПериодНачало=НачалоМесяца(ПрошлыйМесяц);
Движение2.БазовыйПериодКонец=КонецМесяца(ПрошлыйМесяц);
Иначе
Движение2.БазовыйПериодНачало=НачалоМесяца(Дата);
Движение2.БазовыйПериодКонец=КонецМесяца(Дата);
КонецЕсли;
Если Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Подарок Тогда
Движение2.Результат=ТекСтрокаНачисленияДоп.Размер;
КонецЕсли;
КонецЦикла;
Движения.ДополнительныеНачисления.Записать();
//{{КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
// Данный фрагмент построен конструктором.
// При повторном использовании конструктора, внесенные вручную изменения будут утеряны!!!
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ДополнительныеНачисления.НомерСтроки КАК НомерСтроки,
| ЕСТЬNULL(ДополнительныеНачисленияБазаДополнительныеНачисления.РезультатБаза, 0) КАК БазаДопНач,
| ЕСТЬNULL(ДополнительныеНачисленияБазаОсновныеНачисления.РезультатБаза, 0) КАК БазаОснНач
|ИЗ
| РегистрРасчета.ДополнительныеНачисления КАК ДополнительныеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисления.БазаДополнительныеНачисления(
| &МассивИзмерений,
| &МассивИзмерений,
| ,
| ВидРасчета = &Премия
| И Регистратор = &Ссылка) КАК ДополнительныеНачисленияБазаДополнительныеНачисления
| ПО ДополнительныеНачисления.НомерСтроки = ДополнительныеНачисленияБазаДополнительныеНачисления.НомерСтроки
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисления.БазаОсновныеНачисления(
| &МассивИзмерений,
| &МассивИзмерений,
| ,
| ВидРасчета = &Премия
| И Регистратор = &Ссылка) КАК ДополнительныеНачисленияБазаОсновныеНачисления
| ПО ДополнительныеНачисления.НомерСтроки = ДополнительныеНачисленияБазаОсновныеНачисления.НомерСтроки
|ГДЕ
| ДополнительныеНачисления.Регистратор = &Ссылка";
МассивИзмерений=Новый Массив;
МассивИзмерений.Добавить("Сотрудник");
Запрос.УстановитьПараметр("МассивИзмерений", МассивИзмерений);
Запрос.УстановитьПараметр("Премия", ПланыВидовРасчета.ДополнительныеНачисления.Премия);
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
Для Каждого СтрДвижение Из Движения.ДополнительныеНачисления Цикл
Если СтрДвижение.ВидРасчета<>ПланыВидовРасчета.ДополнительныеНачисления.Премия Тогда
Продолжить;
КонецЕсли;
ВыборкаДетальныеЗаписи.Сбросить();
ВыборкаДетальныеЗаписи.НайтиСледующий(СтрДвижение.НомерСтроки, "НомерСтроки");
СтрДвижение.Результат=СтрДвижение.Размер/100 *(ВыборкаДетальныеЗаписи.БазаДопНач+ВыборкаДетальныеЗаписи.БазаОснНач);
КонецЦикла;
//}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
Движения.ДополнительныеНачисления.Записать();
(17) Те уроки, по которым я учился, уже не могу найти - выпиливают их. Но вот пример. Ищите по голосу, так как не всегда пишут, что в видеоролике - Чистов
https://www.youtube.com/watch?v=QaRF3xg5rTc
(2)Это будет неправильно. Надо, чтобы подставлялось значение указанное пользователем в пользовательском режиме из документа начисление зарплаты. То, что Вы подставляете единицу, Вы просто заменяете значение, если оно не задано (такое должно допускаться, поскольку подарок может быть выдан не каждому сотруднику). Это есть суть функции ЕСТЬNULL.
Мне нужно решить проблему: почему у меня по допначислениям пустая база, хотя должно быть значение подарка.
Спасибо за ответ. Но он в корне неправильный по заднному мной вопросу
(6)Друг мой. Здесь нужно решить задачу по программированию. Это и есть программирование. Какой здесь учет?! Я работаю в конфигураторе. Решение задачи по регистрам расчета. Еще раз текст задачи: посчитать премию, которая равна произведению процента, задаваемым пользователем, и суммы оклада (основное начисление) и подарка (допначисление, задается пользователем вручную в документе начисление зарплаты). Как решить эту задачу? Я написал код для записи движений и расчета премий по регистра расчета допначисления, но расчет неправильный
(8)Не совсем понял, что вы имеете ввиду под набором записей при выполнении запроса. я только учусь, не во всем еще разбираюсь. Запись в регистр расчета происходит в данном случае при проведении документа, т.е. при записи движений. Помимо указанных движений в строчке
идет запись сотрудника, подразделения, должности и размера (в премии это процент т.е. число, в подарке это заданное число польхователем). Размер подарка я записал вот здесь
Если Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Подарок Тогда
Движение2.Результат=ТекСтрокаНачисленияДоп.Размер;
КонецЕсли;
(11) У вас тривиальная задача по регистрам расчета. Ищите на ютубе/форуме чистова решение задач по регистрам расчета для подготовки к экзамену "Специалист по платформе". Чистов хорошо на вебинарах обьясняет тонкости этих регистров. Потратите пол дня-день, но сможете решить свою задачу самостоятельно.
(12) Дружище, какая тривиальная задача? Я уже недели две маюсь, интернет перерыл. Нет, нигде такого. Никто не задает такой вид начисления, размер которого задается пользователем. Если бы об этом говорили, я бы даже не писал сюда. Вот о премии руководителя, о методах списания себестоимости оперативного учета и о многом другом можно найти ответ. А вот о таком виде начисление негде некто не говорит. Помоги пжл. Для Вас эта должна быть очень простая задача раз Вы специалист 1с.
(13) Для меня простая задача, я с ней разберусь. Я даже скачал вашу базу на той неделе. Но на разбор нужно время, которого у меня, к сожалению, нет. Поэтому направляю вас к видеоурокам Чистова. Сначала посмотрите, потом говорите, что вашей ситуации в Интернете нет.
(14) я тебе реально говорю, что нету. Думаешь я сначала написал сюда, потом начал лазить в инете?! Нет, конечно. Я стараюсь искать ответ сам, только в крайнем случае писать на форумы. Дайте хотя бы ссылку на его уроки
(17) Те уроки, по которым я учился, уже не могу найти - выпиливают их. Но вот пример. Ищите по голосу, так как не всегда пишут, что в видеоролике - Чистов
https://www.youtube.com/watch?v=QaRF3xg5rTc
(18) Может все-таки сами решите каким-нибудь образом? Найдете время? На этом канале вообще не удобно что-то искать, какой непонятный набор видео без определенной последовательности