Некорректные итоги по остаткам

Клиент обратился с проблемой что у него неправильно считаются остатки.

В первой строке выводится итог по товару, две другие — движения по документам:

Видно, что товара пришло 2, ушло 0, но конечный остаток 0.

Проверил работу отчета в консоли запросов.

В исходном запросе объединялись два запроса по регистру остатков и материалов.

Исходный код итогов был таким:

СУММА(КоличествоНачальныйОстаток),
СУММА(КоличествоКонечныйОстаток),
СУММА(КоличествоПриход),
СУММА(КоличествоРасход),
СУММА(СуммаНачальныйОстаток),
СУММА(СуммаКонечныйОстаток),
СУММА(СуммаПриход),
СУММА(СуммаРасход),
СУММА(ЗаказНаНачалоПериода),
СУММА(ЗаказНаКонецПериода),

Я поменял итоги так:

СУММА(ВЫБОР КОГДА Регистратор = Неопределено ТОГДА КоличествоНачальныйОстаток  ИНАЧЕ 0 КОНЕЦ) КАК КоличествоНачальныйОстаток,
СУММА(ВЫБОР КОГДА Регистратор = Неопределено ТОГДА КоличествоКонечныйОстаток  ИНАЧЕ 0 КОНЕЦ) КАК КоличествоКонечныйОстаток,
СУММА(КоличествоПриход),
СУММА(КоличествоРасход),
СУММА(СуммаНачальныйОстаток),
СУММА(СуммаКонечныйОстаток),
СУММА(СуммаПриход),
СУММА(СуммаРасход),
СУММА(ВЫБОР КОГДА Регистратор = Неопределено ТОГДА ЗаказНаНачалоПериода  ИНАЧЕ 0 КОНЕЦ) КАК ЗаказНаНачалоПериода,
СУММА(ВЫБОР КОГДА Регистратор = Неопределено ТОГДА ЗаказНаКонецПериода   ИНАЧЕ 0 КОНЕЦ) КАК ЗаказНаКонецПериода,

В сравнении это выглядит так:

В результате данные стали выводиться корректно:

Раньше не пользовались заказами и как-то итоги работали. Как — уже сложно понять, но понадобился вот такой патч, чтобы решить проблему.

UPD: нужно еще учитывать дату начала и конца и по суммам тоже корректировать остатки:

СУММА(ВЫБОР КОГДА Регистратор = Неопределено И Период = &ДатаНачало ТОГДА КоличествоНачальныйОстаток  ИНАЧЕ 0 КОНЕЦ) КАК КоличествоНачальныйОстаток,
СУММА(ВЫБОР КОГДА Регистратор = Неопределено И Период = &ДатаКонец ТОГДА КоличествоКонечныйОстаток  ИНАЧЕ 0 КОНЕЦ) КАК КоличествоКонечныйОстаток,
СУММА(КоличествоПриход),
СУММА(КоличествоРасход),
СУММА(ВЫБОР КОГДА Регистратор = Неопределено И Период = &ДатаНачало ТОГДА СуммаНачальныйОстаток  ИНАЧЕ 0 КОНЕЦ) СуммаНачальныйОстаток,
СУММА(ВЫБОР КОГДА Регистратор = Неопределено И Период = &ДатаКонец ТОГДА СуммаКонечныйОстаток  ИНАЧЕ 0 КОНЕЦ) СуммаКонечныйОстаток,
СУММА(СуммаПриход),
СУММА(СуммаРасход),
СУММА(ВЫБОР КОГДА Регистратор = Неопределено  И Период = &ДатаНачало  ТОГДА ЗаказНаНачалоПериода  ИНАЧЕ 0 КОНЕЦ) КАК ЗаказНаНачалоПериода,
СУММА(ВЫБОР КОГДА Регистратор = Неопределено И Период = &ДатаКонец ТОГДА ЗаказНаКонецПериода   ИНАЧЕ 0 КОНЕЦ) КАК ЗаказНаКонецПериода,

Среда: Нетленка. Объем: 1 час

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

комментария 4

  1. rzd:

    А какое этому есть логическое объяснение?

  2. Вачя:

    За такое надо бить чем-то тяжелым

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *