Суммирование итогов записей регистра накопления
Здравствуйте, написал код:
Но почему то подхватывает по отбору только 1 записи регистра, проверял неоднократно (в том числе копированием), должен подхватывать больше. Подскажите пожалуйста где мог ошибиться.
Запрос=Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| ВЫБОР
| КОГДА ЗаданияНаРаботу.ВидРабот.Наименование = ""Расчет""
| И ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ТипыСобытий.Прочее)
| И ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование = ""Расчет""
| ТОГДА 200
| КОГДА ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ТипыСобытий.Прочее)
| И ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование = ""Расчет""
| И ЗаданияНаРаботу.Регистратор.Событие.Состояние = ЗНАЧЕНИЕ(Справочник.СостоянияСобытий.Завершено)
| ТОГДА 50
| КОГДА ЗаданияНаРаботу.ВидРабот.Наименование = ""Замер""
| И ЗаданияНаРаботу.Регистратор.Состояние = ЗНАЧЕНИЕ(Справочник.СостоянияСобытий.Завершено)
| ТОГДА 100
| ИНАЧЕ 0
| КОНЕЦ КАК Сумма,
| ЗНАЧЕНИЕ(Справочник.ВидыНачисленийИУдержаний.ПремияЗаВыполненныеЗаказы) КАК ВидНачисленияУдержания,
| ЗаданияНаРаботу.Сотрудник КАК Сотрудник,
| ЗаданияНаРаботу.Регистратор КАК Регистратор,
| NULL КАК Поле1
|ПОМЕСТИТЬ ОТБОР
|ИЗ
| РегистрНакопления.ЗаданияНаРаботу КАК ЗаданияНаРаботу
|ГДЕ
| ЗаданияНаРаботу.ВремяОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
|
|ОБЪЕДИНИТЬ ВСЕ
|
|ВЫБРАТЬ
| НачислениеПремийИВСОбороты.СуммаОборот,
| ЗНАЧЕНИЕ(Справочник.ВидыНачисленийИУдержаний.ПремияЗаВыполненныеЗаказы),
| НачислениеПремийИВСОбороты.Сотрудник.ЗначениеРесурса,
| NULL,
| 0
|ИЗ
| РегистрНакопления.НачислениеПремийИВС.Обороты(&ДатаНачала, &ДатаОкончания, , ) КАК НачислениеПремийИВСОбороты
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| СУММА(ОТБОР.Сумма) КАК Сумма,
| ОТБОР.ВидНачисленияУдержания КАК ВидНачисленияУдержания,
| ОТБОР.Сотрудник КАК Сотрудник
|ИЗ
| ОТБОР КАК ОТБОР
|
|СГРУППИРОВАТЬ ПО
| ОТБОР.ВидНачисленияУдержания,
| ОТБОР.Сотрудник";
Запрос.УстановитьПараметр("ДатаНачала",НачалоМесяца(Объект.ПериодРегистрации));
Запрос.УстановитьПараметр("ДатаОкончания",КонецМесяца(Объект.ПериодРегистрации));
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
НоваяСтрока = Объект.НачисленияУдержания.Добавить();
ЗаполнитьЗначенияСвойств(НоваяСтрока, Выборка);
КонецЦикла;
ПоказатьНо почему то подхватывает по отбору только 1 записи регистра, проверял неоднократно (в том числе копированием), должен подхватывать больше. Подскажите пожалуйста где мог ошибиться.
По теме из базы знаний
- Баттерфляй - метод быстрого расчета нарастающего итога в запросе
- Неоплаченные долги при распределении оплаты по правилу ФИФО одним запросом и намного быстрее, чем Вы думали
- 50+ советов для успешной сдачи 1С: Специалист по платформе
- Конфигурация Flowcon: Набор инструментов для управления задачами, проектами и бизнесом в 1С
- SynchroWB — интеграция 1С и Wildberries: автоматизация заказов и остатков по API с УТ, КА, ERP, УНФ, Розница 3
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(4) Вот, упростил запрос для того чтобы было видно что и как не попадает в отборы:
ВЫБРАТЬ
ВЫБОР
КОГДА ЗаданияНаРаботу.ВидРабот.Наименование = "Расчет"
И ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ТипыСобытий.Прочее)
И ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование = "Расчет"
ТОГДА 200
КОГДА ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия = ЗНАЧЕНИЕ(Перечисление.ТипыСобытий.Прочее)
И ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование = "Расчет"
И ЗаданияНаРаботу.Регистратор.Событие.Состояние = ЗНАЧЕНИЕ(Справочник.СостоянияСобытий.Завершено)
ТОГДА 50
КОГДА ЗаданияНаРаботу.ВидРабот.Наименование = "Замер"
И ЗаданияНаРаботу.Регистратор.Состояние = ЗНАЧЕНИЕ(Справочник.СостоянияСобытий.Завершено)
ТОГДА 100
ИНАЧЕ 0
КОНЕЦ КАК Сумма,
ЗНАЧЕНИЕ(Справочник.ВидыНачисленийИУдержаний.ПремияЗаВыполненныеЗаказы) КАК ВидНачисленияУдержания,
ЗаданияНаРаботу.Сотрудник КАК Сотрудник,
ЗаданияНаРаботу.Регистратор КАК Регистратор,
ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование КАК РегистраторСобытиеТемаНаименование,
ЗаданияНаРаботу.Регистратор.Событие.Состояние КАК РегистраторСобытиеСостояние,
ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия КАК РегистраторСобытиеТипСобытия
ИЗ
РегистрНакопления.ЗаданияНаРаботу КАК ЗаданияНаРаботу
ГДЕ
ЗаданияНаРаботу.ВремяОкончания МЕЖДУ &ДатаНачала И &ДатаОкончания
ПоказатьПрикрепленные файлы:

(8) Я понимаю что он работает как ему сказали, проблема в том что сказал я не правильно и пытаюсь понять как это сделать правильно)
Параметров только 2: ДатаНачала и ДатаОкончания.
Если вы посмотрите на код то увидите что добавил:
ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование КАК РегистраторСобытиеТемаНаименование,
ЗаданияНаРаботу.Регистратор.Событие.Состояние КАК РегистраторСобытиеСостояние,
ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия КАК РегистраторСобытиеТипСобытия
на скриншоте видно что попадает только 2 записи из всех, хотя записи точно должны попадать...
Параметров только 2: ДатаНачала и ДатаОкончания.
Если вы посмотрите на код то увидите что добавил:
ЗаданияНаРаботу.Регистратор.Событие.Тема.Наименование КАК РегистраторСобытиеТемаНаименование,
ЗаданияНаРаботу.Регистратор.Событие.Состояние КАК РегистраторСобытиеСостояние,
ЗаданияНаРаботу.Регистратор.Событие.ТипСобытия КАК РегистраторСобытиеТипСобытия
на скриншоте видно что попадает только 2 записи из всех, хотя записи точно должны попадать...
(19) В документе (скрин1) мы можем перейти к форме где отображаются все связанные с ним события (для кого он является основанием(скрин 2-3). Через конфигуратор в документе есть реквизит Событие с ссылкой на них же(скрин 4), а в регистре накопление документ является регистратором где мы как раз тоже можем обратиться к связанным событиям (скрин 5)
Прикрепленные файлы:





Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот