Есть регистр накопления "Партии товаров на складах". Беру виртуальную таблицу остатков и оборотов за год (&Нач = 01.01.2016, &Кон = 31.12.2016), периодичность - месяц. Т.е. мне нужно получить начальный остаток в разрезе каждого месяца. В выходные поля выбираю номенклатуру (одно из измерений регистра) и СтоимостьНачальныйОстаток (ресурс). В результате, если сделать итоги по периоду, на уровне группировки период сумма начального остатка корректная, НО если просуммировать все записи детальные, то сумма начального остатка не совпадает с суммой начального остатка по группировке период.
Текст запроса:
ВЫБРАТЬ
ПартииТоваровНаСкладахОстаткиИОбороты.ПериодМесяц КАК ПериодМесяц,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,
ПартииТоваровНаСкладахОстаткиИОбороты.РУ_СтоимостьНачальныйОстаток КАК РУ_СтоимостьНачальныйОстаток
ИЗ
РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(
&Нач,
&Кон,
Авто,
,
Склад = &Склад И
СерияНоменклатуры.Организация = &Организация) КАК ПартииТоваровНаСкладахОстаткиИОбороты
Показать
Если я беру эту таблицу не за год, а за месяц конкретно (&Нач=01.10.2016, &Кон = 31.10.2016), то все корректно, сумма детальных записей равна сумме по группировке, сравниваю детальные позиции - в результате первого запроса в группировкой 01.10.2016 не хватает некоторых записей.
Подскажите, пожалуйста, почему так или в каком направлении смотреть.
(5) Дорогая Екатерина, я не сказал, что таблица "ОстаткиИОбороты" неверный, я сказал, что "Если не нужно взять записи "Начальный или Конечный Остаток" и "Обороты" вместе, некогда НЕ ВЗЯТЬ ДАННЫЕ ИЗ "ОстаткиИОбороты"", потому что таблица "ОстаткиИОбороты" будет работать медленнее. В этом задаче лучше взять таблицу "Остатки". :) :)
(8) Ну-ка, ну-ка. Что у вас там будет в первом наборе? Декартово произведение номенклатуры, складов и периодов? С соединением второго набора по номенклатуре и складу и периодом в параметрах? И это будет лучше и быстрее простой остатки/обороты по периодам? В самом деле?
Поправьте, если я что не так понял.
(11) Конечно нет. Зачем в первом запросе взять номенклатуру и склад? В первом запросе просто будем взять месяцы, а номенклатуру, склад и остальные данные из таблицы остатков. И это будет работать быстрее, потому что в этом случае в данных не будет существовать обороты, более того созданное таблица будет более простой структурой, чем таблица 'остатки и обороты' по SQL.
(12)
1) Хм... Да, тут я, пожалуй, протупил. По-идее, должно сработать.
2) Параметризированные связи СКД работают по сути как запросы в цикле. Уверены, что 12 получений остатков (если за год помесячно) будет быстрее, чем одна остатки/обороты? Хотя какая-то оптимизация там несомненно есть. Во-всяком случае получение среза последних через связанные наборы данных работает быстрее, чем можно было бы предположить. Но медленнее, чем если в одном запросе реализовать. И возможно, оптимизация срабатывает из-за простоты виртуальной таблицы среза последних, которая суть вложенный запрос. А виртуальная таблица остатков посложнее будет.
В общем, даже если производительность сопоставима, один набор данных и одна виртуальная таблица при необходимости помесячных данных выглядят более простым и логичным решением.