Расчет средних по периодам в запросе - это элементарно!
Задачи пользователя - Анализ учета
Файлы
ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.
Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний
Оформите подписку на компанию для решения рабочих задач
Оформить подписку и скачать решение со скидкойВы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».
- 0% комиссии — оплата напрямую исполнителю;
- Исполнители любого масштаба — от отдельных специалистов до команд под проект;
- Прямой обмен контактами между заказчиком и исполнителем;
- Безопасная сделка — при необходимости;
- Рейтинги, кейсы и прозрачная система откликов.
Легче всего объяснить предлагаемый прием на таком простом примере и конкретных числах: Пусть требуется посчитать среднее число рабов на плантации сотрудников некоторой компании за год. На начало года имеем 10 сотрудников. Предположив, что состав будет стабильным, оценим годовой бюджет рабочего времени компании в 3650 (10х365) человеко-дней. Если 13 мая в пятницу один из сотрудников уволится, то бюджет уменьшится на 232 дня (это число оставшихся дней года). А когда 17 июня на работу выйдет новенькая сотрудница, бюджет увеличится на 197 дней. Приём на работу 1-го сентября одного сотрудника увеличит бюджет на 121 дней, а увольнение 3-х сотрудников 30 сентября - уменьшит его на 376 (3х92) человеко-дней. В итоге получим бюджет 3650 - 232 + 197 + 121 - 376 = 3360. Разделив его на 365, получим в среднем примерно 9,2 работающих сотрудника. Заметьте, что при этом нам не пришлось учитывать ни интервалы работы сотрудников, ни интервалы между событиями!
То же самое можно описать формулой:

И привести как пример реализации в запросе:
ВЫБРАТЬ
Номенклатура,
СУММА(ВЫБОР КОГДА Период = &НачалоПериода ТОГДА КоличествоКонечныйОстаток ИНАЧЕ КоличествоОборот КОНЕЦ * (РАЗНОСТЬДАТ(Период, &КонецПериода, ДЕНЬ) + 1))
/ (РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ) + 1) КАК СреднийЗапас
ИЗ
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , )
СГРУППИРОВАТЬ ПО
Номенклатура
Основная "хитрость" предлагаемого метода состоит в замене суммирования остатков в формуле расчета среднего суммированием оборотов. В результате этого не требуется рассматривать периодов, в которых оборотов не было.
Ограничивает применение метода два обстоятельства:
1) Случай использования периодических регистров сведений, где в записи регистра не указана величина изменения, а только абсолютная величина. Это требует использования медленных тэта-соединений для определения предыдущего состояния и дельты, что сводит на нет преимущества метода.
2) Случай, когда расчет среднего производится "по рабочим дням" или похожими способами. При этом не просто (но возможно!) определить число оставшихся периодов.
В остальных случаях: для регистров накопления, регистров сведений с дельтой, простых зависимостей числа периодов от интервала метод работает быстро и эффективно.
Вступайте в нашу телеграмм-группу Инфостарт