Имя: Пароль:
1C
1С v8
Как получить правильные остатки по регистру накопления
0 yegorka
 
10.10.13
10:19
Здравствуйте!

Вероятно уже баян, про остатки регистра накопления, но все же хочется узнать кто и как сталкивался с проблемой правильности остатков и кто как ее решал.
Делаю отчет в СКД, который должен отображать остатки на начало, приход, расход, остатки на конец. Что бы проще.
Вот такой запрос:
=================================================================================================================================


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

ОБЪЕДИНИТЬ ВСЕ

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

=================================================================================================================================
дает не верное значение остатков при группировке по регистратору. Но если запрос разъединить на 2 запроса, то каждый из запросов дает верный результат. Почему такое происходит? И еще, если этот объединенный запрос сделать вложенным, то результат по остаткам опять другой.
1 elCust
 
10.10.13
10:22
Остатки с регистратором? Это круто!
2 yegorka
 
10.10.13
10:26
(1) а почему нет-то???
Так аналитики хотят. А в данном примере регистратор это тот же период, в принципе.
3 Defender aka LINN
 
10.10.13
10:34
(0) А ты СКД сказал-то, что это остаток?
Ну и какбе:
Документ1 делает движения по одному регистру, документ2 - по другому. Какой остаток показать в отчете по каждому из них?
4 yegorka
 
10.10.13
10:44
(3) так да отчет-то на СКД.
Попытаюсь объяснить, что я сейчас имею.
Итоги по отчету по группировкам Склад-Номенклатура не равны итогам по отчету Склад-Номенклатура-Регистратор. Не равны в части остатков, обороты совпадают.

Почему они не равны?
5 Defender aka LINN
 
10.10.13
10:52
(4) Больше одной строки за раз читать умеешь?
6 yegorka
 
10.10.13
10:56
(5) так и вы научитесь.
Если запросы разъединить на 2 то каждый из них дает одинаковые итоги не зависимо от группировки.
Объединение дает разные итоговые результаты при разных группировках.

и еще, в данном контексте регистратор - не документ, а фактически период. Понимаешь???
7 yegorka
 
10.10.13
11:01
(3) а всякий: СКД -- это не остаток, это система компоновки данных
8 floody
 
10.10.13
11:11
(7) СКД -- это не остаток, это система компоновки данных

вот спасибо, просветили
9 yegorka
 
10.10.13
11:25
(8)
Пожалуйста, будьте внимательней впредь, ответ был на (3)
10 hhhh
 
10.10.13
11:27
(9) но ведь и полному придурку понятно, что если простой запрос, то СКД сама понимает, где остаток. А если запрос посложнее, то нужно ему указывать, какие поля являются остатками. Вроде (3) об этом вам и намекает.
11 samozvanec
 
10.10.13
11:28
(0) можно предположить, что один регистратор делает движения по обоим регистрам, тогда остатки вполне себе сложатся
12 yegorka
 
10.10.13
11:35
(10) да она сама все правильно поняла, вероятно потому, что это запрос не из ряда "по-сложнее" :-)
13 yegorka
 
10.10.13
11:40
(11) можно предположить. Но я же и написал, что если запрос разъединить, получаем правильные итоги по любой группировке, но в сумме они не равны итогам объединенного запроса. Вот как-то так.
14 Defender aka LINN
 
10.10.13
11:45
(6) Я-то умею. Прочитай продолжение.
ЧТО должен показать отчет, когда по одному документу есть остаток по только по одному регистру, а по другому документу - только по второму? Не надо только рассказывать, что когда Венера в Сатурне под лай чОрной кошки, то отчет что-то показывает. Расскажи, что должен показать отчет и как.
15 yegorka
 
10.10.13
11:54
(14)Вывести данные по обоим документам, как это происходит при объединении таблиц.
16 Defender aka LINN
 
10.10.13
12:08
(15) Он выводит. Вопрос исчерпан?
17 yegorka
 
10.10.13
12:13
Так не исчерпан. Выводит не правильно, в части остатков. А вопрос звучал "Почему?"
18 fisher
 
10.10.13
13:05
Defender пытался подвести тебя к ответу.
При твоем запросе детальные записи изначально не будут содержать правильных сводных остатков по каждому регистратору.
Поэтому СКД бессильно.