Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Отчет движения товаров с ценами номенклатуры

Отчет движения товаров с ценами номенклатуры
Я
   orman071
 
06.03.20 - 12:35
Добрый день друзья. Строю отчет движение товаров с ценами номенклатуры в скд. Конфигурация не типовая. Беру данные из таблицы остатки и обороты, начальный остаток, делю колонки прихода и расхода в разрезе документа движения и конечный остаток, далее левым соединение беру срез последних цен из регистра сведений цены номенклатуры срез последних и левым соединением присоединяю к таблице остатки и обороты с выводом этих данных проблем нет. В вычисляемых полях цену умножаю на количество конечный остаток, поле называю сумма чтобы было ясно дальнейший вопрос.Проблема заключается в том что когда происходит вывод отчета с группировкой по товарам поле сумма считается неверно. Но если выводить детальные записи, там где есть регистратор, все считается корректно. Прошу вас помочь мне. Я уже все что знал перепробовал. Возможно я чего то незнаю так как опыта еще не так много
Вот запрос
ВЫБРАТЬ
    ТоварыНаСкладахОстаткиИОбороты.Склад,
    ТоварыНаСкладахОстаткиИОбороты.Товар,
    ТоварыНаСкладахОстаткиИОбороты.Товар.Штрихкод,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК КоличествоНачальныйОстаток,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
    ЦеныНоменклатурыСрезПоследних.Цена КАК Цена,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ОприходованиеТоваров)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоОприходование,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ВозвратТоваровОтПокупателя)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоВозвратОтПокупателя,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ПоступлениеТоваров)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоПоступление,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ПеремещениеТоваров)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоПеремещениеНаСклад,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ПеремещениеТоваров)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоПеремещениеСоСклада,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.РеализацияТоваров)) <> НЕОПРЕДЕЛЕНО
                ИЛИ (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ВозвратТоваровОтПокупателя)) <> НЕОПРЕДЕЛЕНО
                ИЛИ (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ОтчетКассовойСмены)) <> НЕОПРЕДЕЛЕНО
                ИЛИ (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.Чек)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход - ТоварыНаСкладахОстаткиИОбороты.КоличествоПриход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоПродаж,
    ВЫБОР
        КОГДА (ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.ВозвратПоставщику)) <> НЕОПРЕДЕЛЕНО
            ТОГДА ТоварыНаСкладахОстаткиИОбороты.КоличествоРасход
        ИНАЧЕ NULL
    КОНЕЦ КАК КоличествоВозвратПоставщику,
    ТоварыНаСкладахОстаткиИОбороты.КоличествоОборот,
    ТоварыНаСкладахОстаткиИОбороты.ПериодСекунда,
    ТоварыНаСкладахОстаткиИОбороты.Регистратор
ИЗ
    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , Склад = &ВыбранныйСклад) КАК ТоварыНаСкладахОстаткиИОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ТипЦен = &ТипЦены) КАК ЦеныНоменклатурыСрезПоследних
        ПО ТоварыНаСкладахОстаткиИОбороты.Товар = ЦеныНоменклатурыСрезПоследних.Номенклатура
   lodger
 
1 - 06.03.20 - 12:40
начнем с того, что конструкцию
(ВЫРАЗИТЬ(ТоварыНаСкладахОстаткиИОбороты.Регистратор КАК Документ.РеализацияТоваров)) <> НЕОПРЕДЕЛЕНО
надо заменить на
ТоварыНаСкладахОстаткиИОбороты.Регистратор ССЫЛКА Документ.РеализацияТоваров
   orman071
 
2 - 06.03.20 - 12:47
Хорошо. Сейчас переделаю
   orman071
 
3 - 06.03.20 - 12:53
Все так же как и было. Это не помогло
   lodger
 
4 - 06.03.20 - 12:55
(3) а это и не должно было помочь в исходной проблеме. это общая оптимизация.
далее
ИНАЧЕ NULL
на
ИНАЧЕ 0
это ж ресурс? нед движения = 0.

потом. "сумма", которое Колво*Цену в вычисляемых полях - придется прописывать в ресурсах по группировкам, на какое  Колво и какую цену ориентироваться.
ибо в группировке Склад общее колво умноженное на любую цену будет шняга - там должна быть сумма от умножений количества товара помноженное на цену товара. для начала, конца и оборота разные поля количеств.
   orman071
 
5 - 06.03.20 - 13:04
А как добавить одно вычисляемое поле с разными группировками. Отчет не будет ругаться при формировании на одинаковые поля?
   orman071
 
6 - 06.03.20 - 13:07
Я могу указать по каким полям рассчитать но это не даст результата. проблема в том что например товар 1 цена 14, начост 2 , приход 2 , кон ост 4 , сумма 28 при группировке по товару, а при группировке по детальным записям 56 тоесть детальные записи верно показывают. Я вот понять не могу почему так. Вроде в группировке по товару кон ост цифра верная а рассчет суммы ошибочный
   orman071
 
7 - 06.03.20 - 13:14
https://yadi.sk/i/9QBPzGHhvrNMRA


Вот ссылка с примером того как выводятся данные. Прошу вас помогите так как я уже все что знал перепробовал
   orman071
 
8 - 06.03.20 - 13:30
Начал эксперементы с вычисляемым полем. Изменил формулу написал туда просто показать КоличествоКонечныйОстаток. Выводит правильную цифру. Далее написал просто чтобы показал Цену, так же верно показал. Но когда я далее написал цена * КоличествоКонечныйОстаток то вывел непонятную цифру

Список тем форума
Рекламное место пустует  Рекламное место пустует
2 + 2 = 3.9999999999999999999999999999999...
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.