Таблица ОстаткиИОбороты регистра накопления

1. user615689_ey 22.02.17 14:21 Сейчас в теме
Добрый день! Помогите, пожалуйста, разобраться.

Есть регистр накопления "Партии товаров на складах". Беру виртуальную таблицу остатков и оборотов за год (&Нач = 01.01.2016, &Кон = 31.12.2016), периодичность - месяц. Т.е. мне нужно получить начальный остаток в разрезе каждого месяца. В выходные поля выбираю номенклатуру (одно из измерений регистра) и СтоимостьНачальныйОстаток (ресурс). В результате, если сделать итоги по периоду, на уровне группировки период сумма начального остатка корректная, НО если просуммировать все записи детальные, то сумма начального остатка не совпадает с суммой начального остатка по группировке период.
Текст запроса:

ВЫБРАТЬ      
ПартииТоваровНаСкладахОстаткиИОбороты.ПериодМесяц КАК ПериодМесяц,
ПартииТоваровНаСкладахОстаткиИОбороты.Номенклатура,      
ПартииТоваровНаСкладахОстаткиИОбороты.РУ_СтоимостьНачальныйОстаток КАК РУ_СтоимостьНачальныйОстаток
ИЗ      
РегистрНакопления.ПартииТоваровНаСкладах.ОстаткиИОбороты(      
&Нач,      
&Кон,      
Авто,      
,      
Склад = &Склад      И 
СерияНоменклатуры.Организация = &Организация) КАК ПартииТоваровНаСкладахОстаткиИОбороты  
Показать


Если я беру эту таблицу не за год, а за месяц конкретно (&Нач=01.10.2016, &Кон = 31.10.2016), то все корректно, сумма детальных записей равна сумме по группировке, сравниваю детальные позиции - в результате первого запроса в группировкой 01.10.2016 не хватает некоторых записей.

Подскажите, пожалуйста, почему так или в каком направлении смотреть.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. alex-l19041 8 22.02.17 15:17 Сейчас в теме
(1) сделайте пересчет итогов
3. user615689_ey 22.02.17 15:59 Сейчас в теме
(2) уже разобралась, что это связано с особенностями работы данной виртуальной таблицы.
Вот похожая тема была:
http://forum.infostart.ru/forum9/topic83703/
4. SP17081992 5 22.02.17 16:14 Сейчас в теме
Если не нужно взять записи "Начальный или Конечный Остаток" и "Обороты" вместе, некогда НЕ ВЗЯТЬ ДАННЫЕ ИЗ "ОстаткиИОбороты".
5. user615689_ey 24.02.17 15:42 Сейчас в теме
(4) Сережа, Вы не совсем правы.
Если в этом запросе поставить итоги по периоду и номенклатуре, то все получается корректно
6. SP17081992 5 24.02.17 16:45 Сейчас в теме
(5) Дорогая Екатерина, я не сказал, что таблица "ОстаткиИОбороты" неверный, я сказал, что "Если не нужно взять записи "Начальный или Конечный Остаток" и "Обороты" вместе, некогда НЕ ВЗЯТЬ ДАННЫЕ ИЗ "ОстаткиИОбороты"", потому что таблица "ОстаткиИОбороты" будет работать медленнее. В этом задаче лучше взять таблицу "Остатки". :) :)
user686220_armen.hovhannisyan.1981; +1 Ответить
7. user615689_ey 27.02.17 09:10 Сейчас в теме
(6) Сережа, а как предлагаете разбить таблицу "Остатки" по месяцам в разрезе года?
8. SP17081992 5 27.02.17 09:42 Сейчас в теме
(7) Екатерина, например с помощью двух наборов данных в СКД.
9. user615689_ey 27.02.17 13:05 Сейчас в теме
(8) Спасибо, Сережа! Видимо я этому еще не очень научилась :)
10. пользователь 27.02.17 13:11
Сообщение было скрыто модератором.
...
11. herfis 499 27.02.17 13:30 Сейчас в теме
(8) Ну-ка, ну-ка. Что у вас там будет в первом наборе? Декартово произведение номенклатуры, складов и периодов? С соединением второго набора по номенклатуре и складу и периодом в параметрах? И это будет лучше и быстрее простой остатки/обороты по периодам? В самом деле?
Поправьте, если я что не так понял.
12. SP17081992 5 27.02.17 20:09 Сейчас в теме
(11) Конечно нет. Зачем в первом запросе взять номенклатуру и склад? В первом запросе просто будем взять месяцы, а номенклатуру, склад и остальные данные из таблицы остатков. И это будет работать быстрее, потому что в этом случае в данных не будет существовать обороты, более того созданное таблица будет более простой структурой, чем таблица 'остатки и обороты' по SQL.
13. herfis 499 28.02.17 10:23 Сейчас в теме
(12)
1) Хм... Да, тут я, пожалуй, протупил. По-идее, должно сработать.
2) Параметризированные связи СКД работают по сути как запросы в цикле. Уверены, что 12 получений остатков (если за год помесячно) будет быстрее, чем одна остатки/обороты? Хотя какая-то оптимизация там несомненно есть. Во-всяком случае получение среза последних через связанные наборы данных работает быстрее, чем можно было бы предположить. Но медленнее, чем если в одном запросе реализовать. И возможно, оптимизация срабатывает из-за простоты виртуальной таблицы среза последних, которая суть вложенный запрос. А виртуальная таблица остатков посложнее будет.
В общем, даже если производительность сопоставима, один набор данных и одна виртуальная таблица при необходимости помесячных данных выглядят более простым и логичным решением.
Оставьте свое сообщение

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