|
Отчет СКД, неверно считает (округление) | ☑ | ||
---|---|---|---|---|
0
kissolo
05.10.21
✎
11:43
|
ДД, коллеги.
Попросили поправить отчет (писал не я, я по 7ке в основном, 8ку только начал), в нем считается СуммаБезНДС, СуммаНДС, СуммаСНДС, и вот последняя бывает не равна сумме первых двух, на копейки, дело явно в округлении, но как поправить отчет, я в затруднении, с СКД пока дел не имел вообще, запросы смотрел курс, но т.к. практики не было, толку мало :( Прошу помощи. Вот код запроса: ВЫБРАТЬ ТоварыОрганизаций.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры, СУММА(ТоварыОрганизаций.Количество) КАК Количество, СУММА(ТоварыОрганизаций.Количество * ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.ВесЧислитель) КАК Вес, ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, СУММА(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена) КАК СуммаБезНДС, СУММА(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ) КАК СуммаНДС, СУММА(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена + ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ) КАК СуммаСНДС, ЦеныНоменклатурыСрезПоследних.Номенклатура.Код КАК НоменклатураКод ИЗ РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ ТоварыОрганизаций.ВидДвижения = &ВидДвижения И ТоварыОрганизаций.ХозяйственнаяОперация = &ХозяйственнаяОперация И ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = &СтавкаНДС И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены И ТоварыОрганизаций.Период < &ДатаКон И ТоварыОрганизаций.Период >= &ДатаНач СГРУППИРОВАТЬ ПО ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура, ТоварыОрганизаций.АналитикаУчетаНоменклатуры, ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.Номенклатура.Код |
|||
1
osa1C
05.10.21
✎
12:54
|
(0) Маловероятно что ты сможешь подправить запрос по идее СуммаСНДС здесь считается как
СУММА(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена + ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ) КАК СуммаСНДС ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена + ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * (0,1 или 0.2) Сколько знаков после запятой имеют ТоварыОрганизаций.Количество и ЦеныНоменклатурыСрезПоследних.Цена ? а теперь умножь это на 0,1 или 0,2.... Лучше посмотри в типовых как считается СуммаСНДС |
|||
2
osa1C
05.10.21
✎
12:56
|
(1) хотя попробуй переписать так:
СУММА(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена + ТоварыОрганизаций.Количество * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ) * ЦеныНоменклатурыСрезПоследних.Цена КАК СуммаСНДС |
|||
3
kissolo
05.10.21
✎
13:43
|
(1) Количество - 3 знака. Цена - 2. Я и говорю, что скорее всего дело в округлении. Думал в СУММА (..) добавить округление, чтобы он сначала каждое значение округлял, для всех 3х значений - и суммы без НДС, и суммы НДС и суммы с НДС, но не дает. Видимо, нельзя?
(2) попробую |
|||
4
kissolo
05.10.21
✎
14:31
|
(2) Вынесение цены за скобки суммы не помогло. В идеале все же округление, но То ли я что-то не так делаю, то ли вообще нельзя в запросе округление использовать...
Попробовал СУММА(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена) КАК СуммаБезНДС, заменить на СУММА(Окр(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена,2)) КАК СуммаБезНДС, ну и остальные аналогично - ругается... " Ошибка получения информации набора данных по причине: Ошибка в запросе набора данных по причине: {(8, 8)}: Синтаксическая ошибка СУММА(<<?>>Окр(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена,2)) КАК СуммаБезНДС," |
|||
5
pechkin
05.10.21
✎
15:18
|
вместо
ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена + ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * (0,1 или 0.2) проще ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * (1 + 0,1 или 0.2) |
|||
6
kissolo
05.10.21
✎
15:23
|
(5) Это не помогает. Формула ж не меняется от этого, соответственно и результат не меняется.
|
|||
7
pechkin
05.10.21
✎
15:23
|
привдеи таблицу данных что не правильно
|
|||
8
kissolo
05.10.21
✎
15:25
|
24149 МОЛОЧНАЯ НЕЖНАЯ ЛИНИЯ в короб 128,96 1,506 194,21 19,42 213,64
код название цена колво сумБезНДС сумНДС СумСНДС |
|||
9
kissolo
05.10.21
✎
15:27
|
194,21+19,42=213,63 а получается 213,64. И таких копеек достаточно много получается, в т.ч. итого по таблице по всем товарам - тоже отличается.
|
|||
10
kissolo
05.10.21
✎
15:28
|
По сути мне бы по каждой ном-ре СуммуСНДС взять как сумму СуммыБезНДС и СуммыНДС, в принципе, в формуле то и получается... но дьявол кроется в копейках...
|
|||
11
pechkin
05.10.21
✎
15:29
|
тебе нужно округлять сумму без ндс и сумму ндс через выразить
|
|||
12
Kassern
05.10.21
✎
15:29
|
(9) все потому что, ту же сумму ндс могли высчитать и там 8 знаков к примеру после запятой. А далее от высчитанной суммы посчитали следующую итоговую сумму. Потом все это дело перенесли в документ, а там всего 2 знака после запятой, поэтому и вы не видите того "хвоста" в расчетах
|
|||
13
pechkin
05.10.21
✎
15:29
|
ВЫРАЗИТЬ(ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена КАК ЧИСЛО(15, 2)) * (1 + 0,1 или 0.2) КАК ЧИСЛО(15, 2))
|
|||
14
kissolo
05.10.21
✎
15:30
|
(11) Чтото знакомое, счас посмотрю, спасибо.
|
|||
15
kissolo
05.10.21
✎
16:43
|
(13) Непонятно, в консоли запросов получилось, округлилось до 63 копеек.
В отчете сделал аналогично - не работает. 64 копейки... Вот что получилось: ВЫБРАТЬ ТоварыОрганизаций.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры, СУММА(ТоварыОрганизаций.Количество) КАК Количество, СУММА(ТоварыОрганизаций.Количество * ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.ВесЧислитель) КАК Вес, ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, СУММА(ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена КАК ЧИСЛО(15,2))) КАК СуммаБезНДС, СУММА(ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ КАК ЧИСЛО(15,2))) КАК СуммаНДС, СУММА( ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена КАК ЧИСЛО(15,2)) + ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ КАК ЧИСЛО(15,2)) ) КАК СуммаСНДС, ЦеныНоменклатурыСрезПоследних.Номенклатура.Код КАК НоменклатураКод ИЗ РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ ТоварыОрганизаций.ВидДвижения = &ВидДвижения И ТоварыОрганизаций.ХозяйственнаяОперация = &ХозяйственнаяОперация И ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = &СтавкаНДС И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены И ТоварыОрганизаций.Период < &ДатаКон И ТоварыОрганизаций.Период >= &ДатаНач СГРУППИРОВАТЬ ПО ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура, ТоварыОрганизаций.АналитикаУчетаНоменклатуры, ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Цена, ЦеныНоменклатурыСрезПоследних.Номенклатура.Код |
|||
16
pechkin
05.10.21
✎
17:12
|
должно быть 2 выразить в сумме с ндс
|
|||
17
pechkin
05.10.21
✎
17:14
|
вот здесь
+ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР |
|||
18
mikecool
05.10.21
✎
17:57
|
не делать такие расчеты в отчете, а брать данные из регистров
|
|||
19
chihpyh
05.10.21
✎
23:11
|
Поместить первый запрос во временную таблицу, в нем посчитать сумму без НДС и сумму НДС. Потом вызвать эту временную таблицу, взять оттуда все поля и добавить поле СуммаСНДС = Сумма + СуммаНДС и все будет биться. Слишком много параллельных расчетов
|
|||
20
kissolo
06.10.21
✎
10:15
|
(18) В одном регистре количество. В другом цены. Сумм нет нигде.
|
|||
21
kissolo
06.10.21
✎
10:16
|
(19) Скорее всего так и сделаем. Через "Выразить" почему-то срабатывает в консоли запросов, но не срабатывает в отчете.
|
|||
22
kissolo
06.10.21
✎
12:18
|
Непонятно. Через ВТ тоже не работает. Точнее, если в запросе, то тоже нормально, а в отчете (CRL) - нет..
|
|||
23
kissolo
06.10.21
✎
12:20
|
*СКД
|
|||
24
Другая
06.10.21
✎
14:41
|
Возможно у вас СКД глючит, проверьте как выглядит запрос в процедуре "приКомпоновкеРезультата". Возможно он не изменился
|
|||
25
chihpyh
06.10.21
✎
22:42
|
(22) Напишите, как с временной таблицей выглядит запрос. Возможно, там что-то неверно
|
|||
26
КнОпка
07.10.21
✎
07:46
|
(20) Не может быть. Конфигурация какая?
|
|||
27
kissolo
07.10.21
✎
08:24
|
(24) Коллега грит, сделал все суммовые колонки через вычисляемые поля (с ВЫРАЗИТЬ), вроде как работает. Правда, ставку НДС он сделал числом пока, т.е. надо будет переделать. Но вроде как заработало...
А так - да, через СКД не работало.. |
|||
28
kissolo
07.10.21
✎
08:25
|
(25) На всякий случай отправлю, но пока это неактуально, коллега иначе решил вопрос..
Вот код запроса с ВТ: ВЫБРАТЬ ТоварыОрганизаций.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры, СУММА(ТоварыОрганизаций.Количество) КАК Количество, СУММА(ТоварыОрганизаций.Количество * ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.ВесЧислитель) КАК Вес, ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура, ЦеныНоменклатурыСрезПоследних.Номенклатура КАК Номенклатура1, ЦеныНоменклатурыСрезПоследних.Цена КАК Цена, СУММА(ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена КАК ЧИСЛО(15, 2))) КАК СуммаБезНДС, СУММА(ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ КАК ЧИСЛО(15, 2))) КАК СуммаНДС, СУММА((ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена КАК ЧИСЛО(15, 2))) + (ВЫРАЗИТЬ(ТоварыОрганизаций.Количество * ЦеныНоменклатурыСрезПоследних.Цена * ВЫБОР КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС10) ТОГДА 0.1 КОГДА ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = ЗНАЧЕНИЕ(Перечисление.СтавкиНДС.НДС20) ТОГДА 0.2 КОНЕЦ КАК ЧИСЛО(15, 2)))) КАК СуммаСНДС, ЦеныНоменклатурыСрезПоследних.Номенклатура.Код КАК НоменклатураКод ПОМЕСТИТЬ ВТ1 ИЗ РегистрНакопления.ТоварыОрганизаций КАК ТоварыОрганизаций ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&ДатаКон, ) КАК ЦеныНоменклатурыСрезПоследних ПО ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура ГДЕ ТоварыОрганизаций.ВидДвижения = &ВидДвижения И ТоварыОрганизаций.ХозяйственнаяОперация = &ХозяйственнаяОперация И ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура.СтавкаНДС = &СтавкаНДС И ЦеныНоменклатурыСрезПоследних.ВидЦены = &ВидЦены И ТоварыОрганизаций.Период < &ДатаКон И ТоварыОрганизаций.Период >= &ДатаНач СГРУППИРОВАТЬ ПО ТоварыОрганизаций.АналитикаУчетаНоменклатуры, ТоварыОрганизаций.АналитикаУчетаНоменклатуры.Номенклатура, ЦеныНоменклатурыСрезПоследних.Номенклатура, ЦеныНоменклатурыСрезПоследних.Номенклатура.Код, ЦеныНоменклатурыСрезПоследних.Цена ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ1.АналитикаУчетаНоменклатуры КАК АналитикаУчетаНоменклатуры, ВТ1.Количество КАК Количество, ВТ1.Вес КАК Вес, ВТ1.Номенклатура КАК Номенклатура, ВТ1.Номенклатура1 КАК Номенклатура1, ВТ1.Цена КАК Цена, ВТ1.СуммаБезНДС КАК СуммаБезНДС, ВТ1.СуммаНДС КАК СуммаНДС, ВЫРАЗИТЬ(ВТ1.СуммаБезНДС + ВТ1.СуммаНДС КАК ЧИСЛО(15, 2)) КАК СуммаСНДС, ВТ1.НоменклатураКод КАК НоменклатураКод ИЗ ВТ1 КАК ВТ1 |
|||
29
kissolo
07.10.21
✎
08:28
|
(26) Конфигурация УТ, немного доработанная, но не в этом месте, используемые регистры типовые. Вопрос в том, что смотрим не продажи, а документы внутреннего потребления(т.е. списание на расходы), поэтому берется регистр ТоварыОрганизаций, в котором только колво.
|
|||
30
chihpyh
07.10.21
✎
23:04
|
Да, точно, через Выразить. В отчет-то 2 знака после запятой выводится и в итоговой сумме могут копейки не биться. Одна копейка, как правило.
|
|||
31
kissolo
08.10.21
✎
10:49
|
(30) Так и есть. Правда, в итогах до 4х копеек накапливалось, а по одной номенклатуре как раз 1 копейка и вылазит обычно :(
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |