РезультатБаза равна 0 1С:Предприятие 8.3, учебная версия (8.3.14.1694)

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

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


    
    //}}КОНСТРУКТОР_ЗАПРОСА_С_ОБРАБОТКОЙ_РЕЗУЛЬТАТА
    
    Движения.ДополнительныеНачисления.Записать();
Показать

Вот здесь ВыборкаДетальныеЗаписи.БазаДопНач ноль.
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. acces969 118 19.11.21 13:55 Сейчас в теме
Измените
ЕСТЬNULL(ДополнительныеНачисленияБазаДополнительныеНачисления.РезультатБаза, 0) КАК БазаДопНач,

на
ЕСТЬNULL(ДополнительныеНачисленияБазаДополнительныеНачисления.РезультатБаза, 1) КАК БазаДопНач,

Если же вам нужно решение проблемы, почему не заполняется сумма дополнительных начислений, то это к консультантам 1С
3. user1587645 19.11.21 14:21 Сейчас в теме
(2)Это будет неправильно. Надо, чтобы подставлялось значение указанное пользователем в пользовательском режиме из документа начисление зарплаты. То, что Вы подставляете единицу, Вы просто заменяете значение, если оно не задано (такое должно допускаться, поскольку подарок может быть выдан не каждому сотруднику). Это есть суть функции ЕСТЬNULL.
Мне нужно решить проблему: почему у меня по допначислениям пустая база, хотя должно быть значение подарка.
Спасибо за ответ. Но он в корне неправильный по заднному мной вопросу
4. acces969 118 19.11.21 14:24 Сейчас в теме
(3)
почему не заполняется сумма дополнительных начислений, то это к консультантам 1С
5. user1587645 19.11.21 14:26 Сейчас в теме
(4)вот я сюда поэтому и написал, в надежде на программистов 1с
6. acces969 118 19.11.21 14:28 Сейчас в теме
(5) Как программист и отвечаю - проблема в 0, нужно подставить 1.
Программист учетом не занимается.
7. user1587645 19.11.21 14:32 Сейчас в теме
(6)Друг мой. Здесь нужно решить задачу по программированию. Это и есть программирование. Какой здесь учет?! Я работаю в конфигураторе. Решение задачи по регистрам расчета. Еще раз текст задачи: посчитать премию, которая равна произведению процента, задаваемым пользователем, и суммы оклада (основное начисление) и подарка (допначисление, задается пользователем вручную в документе начисление зарплаты). Как решить эту задачу? Я написал код для записи движений и расчета премий по регистра расчета допначисления, но расчет неправильный
8. acces969 118 19.11.21 15:01 Сейчас в теме
(7) Прошу прощения, не посмотрел ваш код целиком.
Покажите набор записей в Движения.ДополнительныеНачисления в момент выполнения запроса
9. user1587645 19.11.21 16:30 Сейчас в теме
(8)Не совсем понял, что вы имеете ввиду под набором записей при выполнении запроса. я только учусь, не во всем еще разбираюсь. Запись в регистр расчета происходит в данном случае при проведении документа, т.е. при записи движений. Помимо указанных движений в строчке
ЗаполнитьЗначенияСвойств(Движение2, ТекСтрокаНачисленияДоп);
идет запись сотрудника, подразделения, должности и размера (в премии это процент т.е. число, в подарке это заданное число польхователем). Размер подарка я записал вот здесь
Если Движение2.ВидРасчета=ПланыВидовРасчета.ДополнительныеНачисления.Подарок Тогда
			Движение2.Результат=ТекСтрокаНачисленияДоп.Размер;
		КонецЕсли;
10. user1587645 19.11.21 18:31 Сейчас в теме
(8) прикрепляю базу. Код находится в документе начисление зарплаты
Прикрепленные файлы:
база 18.11.2021.dt
11. user1587645 23.11.21 14:19 Сейчас в теме
12. acces969 118 23.11.21 14:29 Сейчас в теме
(11) У вас тривиальная задача по регистрам расчета. Ищите на ютубе/форуме чистова решение задач по регистрам расчета для подготовки к экзамену "Специалист по платформе". Чистов хорошо на вебинарах обьясняет тонкости этих регистров. Потратите пол дня-день, но сможете решить свою задачу самостоятельно.
13. user1587645 23.11.21 14:43 Сейчас в теме
(12) Дружище, какая тривиальная задача? Я уже недели две маюсь, интернет перерыл. Нет, нигде такого. Никто не задает такой вид начисления, размер которого задается пользователем. Если бы об этом говорили, я бы даже не писал сюда. Вот о премии руководителя, о методах списания себестоимости оперативного учета и о многом другом можно найти ответ. А вот о таком виде начисление негде некто не говорит. Помоги пжл. Для Вас эта должна быть очень простая задача раз Вы специалист 1с.
14. acces969 118 23.11.21 14:45 Сейчас в теме
(13) Для меня простая задача, я с ней разберусь. Я даже скачал вашу базу на той неделе. Но на разбор нужно время, которого у меня, к сожалению, нет. Поэтому направляю вас к видеоурокам Чистова. Сначала посмотрите, потом говорите, что вашей ситуации в Интернете нет.
15. user1587645 23.11.21 14:48 Сейчас в теме
(14) я тебе реально говорю, что нету. Думаешь я сначала написал сюда, потом начал лазить в инете?! Нет, конечно. Я стараюсь искать ответ сам, только в крайнем случае писать на форумы. Дайте хотя бы ссылку на его уроки
16. acces969 118 23.11.21 14:56 Сейчас в теме
https://forum.chistov.pro/index.php?board=16.0 - обсуждение задач, очень похожих на ваш случай. Все задачи с нумерацией 3.хх
17. user1587645 23.11.21 14:56 Сейчас в теме
18. acces969 118 23.11.21 14:58 Сейчас в теме
(17) Те уроки, по которым я учился, уже не могу найти - выпиливают их. Но вот пример. Ищите по голосу, так как не всегда пишут, что в видеоролике - Чистов
https://www.youtube.com/watch?v=QaRF3xg5rTc
19. user1587645 23.11.21 15:41 Сейчас в теме
(18) Может все-таки сами решите каким-нибудь образом? Найдете время? На этом канале вообще не удобно что-то искать, какой непонятный набор видео без определенной последовательности
20. user1587645 23.11.21 18:09 Сейчас в теме
(18) я реально все посмотрел, но ничего подобного нет. Я же говорил что такого вида расчета нет негде. Подсобите пжл
Оставьте свое сообщение
Вопросы с вознаграждением
Вакансии
Администратор 1C
Москва
зарплата до 110 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата до 180 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству