|   |   | 
| 
 | Отчет СКД, неверно считает (округление) | ☑ | ||
|---|---|---|---|---|
| 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 копейка и вылазит обычно :(     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |