|
Неправильно считаются остатки в ОстаткиИОбороты | ☑ | ||
---|---|---|---|---|
0
askharlov
04.09.13
✎
15:37
|
Добрый день, всем!
Сделал запрос по остаткам и оборотам из виртуальной таблицы регистра накопления подчиненного регистратору. В запросе выбран также и регистратор. Чтоб правильно считались остатки в том случае, когда регистратор не выводится в отчет поставил периодичность Авто и выбрал в запросе ПериодСекунда (все как написано на ИТС). Все работает отлично (и с выбранным регистратором и без него), начальный и конечный остаток считается верно. Далее...: Делаю в запросе левое соединение с выборкой по расходным документам (которые являются регистратором) и оттуда беру одно поле: Сумма. После этой последней манипуляции (левого соединения) начальные и конечные остатки считаются неправильно. Если регистратор выбран в отчете, то правильно, если не выбран, то неправильно (остатки сильно завышены). В чем может быть проблема???? |
|||
1
Starhan
04.09.13
✎
15:42
|
запрос то покажешь?
|
|||
2
askharlov
04.09.13
✎
15:43
|
Конечно:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Организация, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Объект, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.ФазаРабот, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.ПредназначениеВидРабот, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Склад, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.ЛЗК, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Заявка, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Номенклатура, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.ХарактеристикаНоменклатуры, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.КоличествоНачальныйОстаток, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.КоличествоКонечныйОстаток, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.КоличествоПриход, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.КоличествоРасход, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.ПериодСекунда, ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Регистратор, ВЗСуммы.Сумма КАК СуммаРасход ИЗ РегистрНакопления.ЗаявкиНаПоставкуОтУПТК.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, Авто, , ) КАК ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ РасходСоСкладаУВТКТовары.Номенклатура КАК Номенклатура, СУММА(РасходСоСкладаУВТКТовары.Сумма) КАК Сумма, РасходСоСкладаУВТКТовары.Документ КАК Документ, РасходСоСкладаУВТКТовары.Ссылка КАК Ссылка ИЗ Документ.РасходСоСкладаУВТК.Товары КАК РасходСоСкладаУВТКТовары СГРУППИРОВАТЬ ПО РасходСоСкладаУВТКТовары.Номенклатура, РасходСоСкладаУВТКТовары.Документ, РасходСоСкладаУВТКТовары.Ссылка) КАК ВЗСуммы ПО ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Заявка = ВЗСуммы.Документ И ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Номенклатура = ВЗСуммы.Номенклатура И ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Регистратор = ВЗСуммы.Ссылка |
|||
3
askharlov
04.09.13
✎
16:13
|
up
|
|||
4
vicof
04.09.13
✎
16:14
|
ЕстьNULL не забудь
|
|||
5
askharlov
04.09.13
✎
16:23
|
Прошу прощения! А куда ЕстьNULL влепить?
|
|||
6
le_
04.09.13
✎
16:23
|
А чего сумму в регистр не добавишь?
|
|||
7
vicof
04.09.13
✎
16:28
|
(5) Давай подумаем, когда NULLы образуются
|
|||
8
le_
04.09.13
✎
16:32
|
Тут объединение надо делать, если уж на то пошло...
|
|||
9
askharlov
04.09.13
✎
16:36
|
(6) Ну, если сумму добавить в регистр, то она будет только в расходе, приходные документы без суммы. Некрасиво получается, - регистр не закрывается по сумме.
(7) Так вроде ж в моем запросе NULLами не пахнет... Я ж говорю, что без левого соединения все работает шикарно. А чего я сделал-то плохого: всего навсего добавил еще один реквизит. Причем соединение ЛЕВОЕ, поэтому дополнительных записей не появилось, так откуда же NULLы? (8) Не понял! Не вижу что с чем объединять, мне-то дополнительных записей не надо |
|||
10
vicof
04.09.13
✎
16:38
|
(9) Левое соединение на то и левое, чтобы получались NULLы
|
|||
11
le_
04.09.13
✎
16:49
|
(9)
1. А почему нельзя делать движения из приходных документов? 2. Объединять нужно запрос по остаткам с ТЧ документов. Примерно так: ВЫБРАТЬ
|
|||
12
spu79
04.09.13
✎
16:50
|
можно попробую проявить чудеса телепатии?
Сумма в отчета по каждой строке = сумма документа * кол-во строк в документе. Угадал? внимательный на запрос смотри. |
|||
13
spu79
04.09.13
✎
18:28
|
СУММА(РасходСоСкладаУВТКТовары.Сумма) КАК Сумма,
РасходСоСкладаУВТКТовары.Документ КАК Документ, РасходСоСкладаУВТКТовары.Ссылка КАК Ссылка ИЗ Документ.РасходСоСкладаУВТК.Товары КАК РасходСоСкладаУВТКТовары СГРУППИРОВАТЬ ПО РасходСоСкладаУВТКТовары.Номенклатура, Первая и последняя строка ни каких размышлений не добавляет? |
|||
14
askharlov
05.09.13
✎
11:57
|
(12) не понял. У меня не сумма увеличивается, а количество.
(13) не добавляет. не вижу своих огрехов (11) может и будет работать, только детальные записи выводить нельзя будет, придется выводить всегда только с группировкой. Хотя почему мой запрос глючит все равно никак не понимаю, вроде в нем все просто и логично. (10) Согласен, но НУЛы получаются то в сумме, а проблемы то в расчете остатков по количеству. Попробовал поставить ЕстьНулл в сумме - не спасло. |
|||
15
spu79
05.09.13
✎
12:30
|
(14) про (13. Ну что не понятно? СУММА(РасходСоСкладаУВТКТовары.Сумма) КАК Сумма, - считает сумму по колонке Сумма, ТЧ товары. так?
СГРУППИРОВАТЬ ПО РасходСоСкладаУВТКТовары.Номенклатура, - группирует по номенклатуре, т.е. по Каждой строке ТЧ товары. В результате группировки на каждую строку номенклатуры пишется полная сумма документа. Если уж использовать итоги по колонке ТЧ, то в группировке не используй детализацию по строкам. |
|||
16
hhhh
05.09.13
✎
12:39
|
(14) в общем соединение у тебя в конце
ПО ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Заявка = ВЗСуммы.Документ И ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Номенклатура = ВЗСуммы.Номенклатура И ЗаявкиНаПоставкуОтУПТКОстаткиИОбороты.Регистратор = ВЗСуммы.Ссылка ты должен жестко обеспечить, чтобы не было дубляжа, то есть ВЗСуммы.Документ, ВЗСуммы.Номенклатура, ВЗСуммы.Ссылка - была одна строка. ЕСли у тебя в таблице ВЗСуммы есть дубли по этим трем параметрам, то сразу выбрасывай свой запрос в корзину. |
|||
17
askharlov
05.09.13
✎
12:57
|
(16) Ну, понятно!
Так я же именно для исключения дублей и делал вложенный запрос. И написал в нем: СГРУППИРОВАТЬ ПО РасходСоСкладаУВТКТовары.Номенклатура, РасходСоСкладаУВТКТовары.Документ, РасходСоСкладаУВТКТовары.Ссылка Так что ДУБЛИ исключены! |
|||
18
askharlov
05.09.13
✎
13:02
|
(15) извини, ты или неправ, или твою мысль я не понимаю. Группировка по номенклатуре во вложенном запросе для того и стоит, чтоб сумма считалась только по соответствующей номенклатуре, а не по всему документу. С суммой, кстати, все тип-топ (вижу в выведенном на экране отчете). А вот, как и писал с начальным и конечным остатками по количеству проблема!
|
|||
19
askharlov
05.09.13
✎
13:54
|
Вроде, нашел!:
Так как остатки в виртуальной таблице считаются по периодам, в числе которых является и регистратор, то, когда я соединяю виртуальную таблицу остатков и оборотов с таблицей расходных документов и ставлю связь по регистратору в том числе, то этот регистратор и портит всю картину (не дает СКД нормально посчитать остатки). Убрал связь по регистратору и сразу остатки пошли правильные. Но, понятно, что при выведенном отчет регистраторе теперь завышенная сумма. Вот теперь думаю, как с этим бороться. Думаю, можно ли как-то побороть не изменяя динамически запрос в зависимости от наличия - отсутствия регистратора в отчете |
|||
20
le_
05.09.13
✎
14:02
|
(19) >Вот теперь думаю, как с этим бороться.
см. (8) |
|||
21
ДемонМаксвелла
05.09.13
✎
14:03
|
(19) СКД?????
чего молчал то? флаг "Обязательное поле" |
|||
22
askharlov
05.09.13
✎
14:14
|
(21) какому полю влепить этот флаг? И где (в какой вкладке)?
|
|||
23
askharlov
05.09.13
✎
14:15
|
понял. Во вкладке "Роль"? А какому полю?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |