Иногда требуется сформировать отчет по остаткам и оборотам из типового регистра накопления, но с отбором по полю регистратора. Например, во все документы-регистраторы был добавлен некий допреквизит, скажем "Номер сделки". И хочется получать остатки и обороты с отбором по этому полю.
Проблема заключается в том что остатки в регистре накопления хранятся в фиксированном наборе измерений и нашего нового поля там нет. Поэтому корректные начальные и конечные остатки мы не получим. А снимать конфигурацию с поддержки, добавлять измерение в регистр и перепроводить все документы ради одного отчета желания нет.
Решение задачи сводится к получению запросом данных в нужном формате (имитация виртуальной таблицы остатков и оборотов):
- Получаем начальные остатки на начало периода отчета как сумму оборотов с отбором по полю регистратора,
- Получаем обороты за период с отбором по полю регистратора,
- Рассчитываем обороты нарастающим итогом с учетом начальных остатков,
- Дополняем полученную таблицу строками для расчета конечных остатков
и настройке ролей в СКД:
роли НачОст и КонОст всегда задаем в паре (если у нас несколько ресурсов тогда указываем его имя чтобы СКД объединила их в 1 группу), поле Регистратор всегда дополняем полем ПериодСекунда (чтобы СКД могла правильно упорядочить регистраторы по дате и ссылке)
В результате СКД будет сама рассчитывать остатки по произвольной группировке, заданной пользователем.
В приложении находится внешний отчет, в котором полностью реализовано решение данной задачи. Запрос для универсальности выполняется к регистру накопления "Товары на складах", который присутствует в большинстве управленческих конфигураций 1С (УТ, КА, ERP).
Тестировалось на КА 2.4.11.91.