gifts2017

Ведомость по партиям, по кодам операций.

Опубликовал Дмитрий Изосин (Izosin) в раздел Отчеты - Анализ учета

Образец построения отчета с группировками по "Реквизитам" на примере отчета "Ведомость по партиям".

При переходе с 7.7 на 8.2 столкнулся с проблемой отсутствия ведомости по партиям с детализаций по кодам операций. Долго рыл интернет, и так ничего толкового не нашел. Пришлось потратить время и написать свой отчет.

Пошел по пути наименьшего сопротивления и просто переделал штатный отчет. Предлагаю свой вариант отчета.

Недавно мы обновили платформу до 8.2.14.519, так что у кого платформа младше могут возникнуть трудности с открытием обработки. На этот случай я приложил текст запроса, и текст модуля который я правил. Отчет был взят из УТ 10.3.13.2, и он использует "УниверсальныйОтчет" этой платформы. Так что я не гарантирую работоспособность на других версиях УТ. Мне кажется самым главным будет запрос которые реализует детализация по Кодам операций.

 

P.S. Надеюсь моя работа хоть кому то поможет решить задачу в кратчайшие сроки подобно моей. Если я где то допустил грубых ошибок, пишите, буду очень признателен, так как я только начинаю осваивать 8.2 и любая конструктиваня критика будет полезна.

 

UPD: 15.11.2011

В ходе работы был выявлен существенный недостаток этого отчета. Если документ имел Дату/Время совподающей с границей отчета, то при некоторых группировках данные по начальному или конечному остатку моли задваиваться, а могли и правильно отображаться. Так как я считаю что Начальный/Конечный остаток должны показываться всегда одинаковые, и не зависить от настроек пришлось разобраться и найти решение этой проблемы, может и не самое изящное, но работает.

В конструкцию получения начального/конечного остатков я добавил лишнее условие "И ТаблКодовОпераций.КодОперации ЕСТЬ NULL":

    ВЫБОР
        КОГДА ИсточникДанных.Период = &ДатаНачала
                И ТаблКодовОпераций.КодОперации ЕСТЬ NULL
            ТОГДА ИсточникДанных.КоличествоНачальныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК КоличествоНачальныйОстаток,

Тестирование вроде показало что в таком виде суммы начальных и конечных остатков не зависят от настроек отчета, но у этой конструкции есть какая то недостказанность, и это меня напрягает. Мне кажется это можно было сделать лучше, но я пока незнаю как.

 

Еще был добавлен расчет прибыли, валовый и в процентах, это было реализованно добавлением в секцию "ВЫБОРАТЬ"

    ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.Реализация)
                ИЛИ ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.РеализацияРозница)
            ТОГДА -ИсточникДанных.СуммаПродажиОборот
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.ВозвратОтПокупателя)
            ТОГДА -ИсточникДанных.СуммаПродажиОборот
        ИНАЧЕ 0
    КОНЕЦ КАК Оборот,
    ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.Реализация)
                ИЛИ ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.РеализацияРозница)
            ТОГДА -1 * (ИсточникДанных.СуммаПродажиОборот - ИсточникДанных.СтоимостьОборот)
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.ВозвратОтПокупателя)
            ТОГДА -(ИсточникДанных.СуммаПродажиОборот - ИсточникДанных.СтоимостьОборот)
        ИНАЧЕ 0
    КОНЕЦ КАК Профит,
    ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.Реализация)
                ИЛИ ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.РеализацияРозница)
            ТОГДА -ИсточникДанных.КоличествоОборот
        ИНАЧЕ 0
    КОНЕЦ + ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.ВозвратОтПокупателя)
            ТОГДА -ИсточникДанных.КоличествоОборот
        ИНАЧЕ 0
    КОНЕЦ КАК ОборотКоличество,
    ВЫБОР
        КОГДА ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.Реализация)
                ИЛИ ТаблКодовОпераций.КодОперации = ЗНАЧЕНИЕ(Перечисление.КодыОперацийПартииТоваров.РеализацияРозница)
            ТОГДА 100 * (ИсточникДанных.СуммаПродажиОборот - ИсточникДанных.СтоимостьОборот) / ИсточникДанных.СтоимостьОборот
        ИНАЧЕ NULL
    КОНЕЦ КАК ПрофитПроцент,

и в секцию "ИТОГ"

    СУММА(Профит),
    ВЫБОР
        КОГДА СУММА(СтоимостьРеализация) + СУММА(СтоимостьРеализацияРозница) - СУММА(СтоимостьВозвратОтПокупателя) > 0
                И СУММА(Оборот) > 0
            ТОГДА -100 * (СУММА(СтоимостьРеализация) + СУММА(СтоимостьРеализацияРозница) - СУММА(СтоимостьВозвратОтПокупателя) - СУММА(Оборот)) / (СУММА(СтоимостьРеализация) + СУММА(СтоимостьРеализацияРозница) - СУММА(СтоимостьВозвратОтПокупателя))
        ИНАЧЕ NULL
    КОНЕЦ КАК ПрофитПроцент,

Думаю как образец расчета процентных значений пригодится, на эти проценты я убил больше всего времени. За то теперь по образу и подобию этого отчета, клепаю отчеты по проще.

Подобный отчет можно было реализовать не временными таблицами, а вложенным запросом, но все мои попытки сделать это провалились, так что буду очень признателен если кто сможет переписать запрос в этом отчете через вложенные запросы, будет очень интересно посмотреть на изменения в скорости и потребляемой памяти.

P.S. Не стал трогать все файлы, изменил только "Текст запроса", хотя можно этот файл и не скачивать, все изменения я описал выше.

 

 

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
Ведомость по партиям
.erf 19,41Kb
29.07.11
165
.erf 19,41Kb 165 Скачать
Текст запроса
.txt 14,21Kb
16.11.11
25
.txt 14,21Kb 25 Скачать
Модуль отчета
.txt 30,30Kb
29.07.11
18
.txt 30,30Kb 18 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Виктор (vkt) 10.09.11 20:11
Толковый отчет. Очень пригодился при разработке своих отчетов.
2. Дмитрий Изосин (Izosin) 14.09.11 11:37
Это мой первый отчет в 8.2. Рад что кому то пригодилось. Думаю чем больше будет подобной информации, то будет проще изучать 1С и находить новые и нестандартные решения стандартных задач.
3. Виктор (vkt) 15.09.11 11:49
Согласен. Изучение чужих разработок позволяет более качественно разрабатывать свои собственные.
4. Svetlana_K (Svetlana_K) 05.10.11 15:00
5. Игорь Фрунзэ (gorodok11) 27.10.11 17:43
Очень хороший пример для работы с реквизитами регистров. Однозначно +!
У меня был примерно такой же отчет по структуре запроса, но немножко не оптимизированный. Спасибо Дмитрий за подсказку. Оказалось очень удобно вывести количество по единицам измерения. Именно здесь у меня была ошибка. В интернете очень мало примеров работы с реквизитами регистров в отчетах и уж тем более на основе универсального.
6. Lidiya Nechaeva (n.lana) 23.11.11 12:49
Здравствуйте,оч полезный отчет, для производственных организаций было бы неплохо вынести в отдельные показатели:
- Отчет производства за смену - (ПРОИЗВЕДЕНО)
- Требование-накладные + Списание материалов в эсксплуатацию (Передано в производство)
- Списание товаров - (Списание на ФР).
А еще удобнее, если вид отчета оставить стандартным, и добавить возможность группировки по кодау операции, тогда он будет компактным и "приход - расход" будет виден
7. Дмитрий Изосин (Izosin) 23.11.11 13:40
У нас нет производства, поэтому нет возможности добавить и проверить такие показатели, но есть исходники, и любой можно добавить любые показатели, по образу и подобию.
Группировку по кодам операция мне сделать не удалось, проблема была в том что по коду операции группируются все показатели, включая начальный и конечный остаток, и отчет становиться жутко некрасивый. Думаю эту проблему можно решить использовав СКД, но я пока жду заказанную книгу, и как появиться время буду изучать СКД. В нашей программе этот отчет имеет статус временной заглушки, переделывать его придется полностью, так как он многим меня не устраивает. Но основа получения данных наверно останется прежним, если я не найду способ лучше.
8. Олег Крапивный (powerpc) 24.11.11 12:28
отличный отчет, спасибо.
9. Оксана Оксана (oxana1) 29.11.11 19:12
отчет шикарный - ищу такой уже давно, ностальжи по семерке выражается только в тоске по этому отчету... а, еще по галке Показать остатки у комиссионеров в ведомости по товарам)))))...
в кривом виде мне удавалось в УТ воспроизвести ведомочть по партиям с детализацией по видам операций, но там жутко некрасиво, да... там получается "Перемещение" и внутри "Нач.остаток, Приход, Расход, Кон.Остаток", а так хочется уивдеть "Начальный остаток", "Приход" (и тут детализация по видам операции Приход), "Расход" (и тут детализация по виду операции Расход)... ну, Вы понимаете же, да, как в семерке:))

хоть у меня и 8.1, но однозначно жирный плюс! (поковыряла на 8.2 немного)
10. Оксана Оксана (oxana1) 29.11.11 19:14
зы еще вот что заметила, если хочу развернуть до регистратора , например, сумму по перемещениям - открываются документы по всем операциям... наверное, хорошо бы отбор срабатывал только по перемещениям (или поступлениям, реализациям и т.д.)...
11. Дмитрий Изосин (Izosin) 30.11.11 09:14
(9) oxana1,

Этот отчет очень легко портировать на 8.1. Он создавался на базе Управления Торговли 10.3, которая в свою очередь была под 8.1. Так что думаю что если у вас Управление Торговлей 10.3 то вы легко сможете его переделать под себя, просто копируете любой самый простой отчет который базируется на универсальном отчете, и в модуль вставляете текст из моего отчета. Мне кажется заработает даже без допиливания напильником.

Если есть такая потребность то могу сделать этот отчет на старой платформе 8.1, у меня дома где то завалялся дистрибутив старой платформы. Мы просто сразу купили и поставили 8.2, так что на работе нет старой платформы.
12. Оксана Оксана (oxana1) 30.11.11 12:57
(11) сейчас буду пробовать, спасибо большое!:)
13. Оксана Оксана (oxana1) 30.11.11 18:18
все получилось, абсолютно без допиливания...
если нужен, могу вам скинуть, добавите и его, есть еще народ на 8.1...)

зы и еще "Реализация в розницА" можно поправить на "Реализация в розницЕ" или "Реализация (розница)"... я у себя поправила
14. Максим Сой (MMMaXXX) 14.12.11 08:17
Если дата документа = допустим 12.01.11 00:00:00
Начальный остаток задваивается проблема я думаю в этой строке

| КОГДА ИсточникДанных.Период = &ДатаНачала
| ТОГДА ИсточникДанных.КоличествоНачальныйОстаток
| ИНАЧЕ 0

Как исправить?
15. Дмитрий Изосин (Izosin) 14.12.11 13:24
(14) MMMaXXX,

В ходе работы был выявлен существенный недостаток этого отчета. Если документ имел Дату/Время совподающей с границей отчета, то при некоторых группировках данные по начальному или конечному остатку моли задваиваться, а могли и правильно отображаться. Так как я считаю что Начальный/Конечный остаток должны показываться всегда одинаковые, и не зависить от настроек пришлось разобраться и найти решение этой проблемы, может и не самое изящное, но работает.

В конструкцию получения начального/конечного остатков я добавил лишнее условие "И ТаблКодовОпераций.КодОперации ЕСТЬ NULL":

ВЫБОР
КОГДА ИсточникДанных.Период = &ДатаНачала
И ТаблКодовОпераций.КодОперации ЕСТЬ NULL
ТОГДА ИсточникДанных.КоличествоНачальныйОстаток
ИНАЧЕ 0
КОНЕЦ КАК КоличествоНачальныйОстаток,
16. Максим Сой (MMMaXXX) 15.12.11 11:38
Спасибо! Единственное исправление которое внес еще это округление количества до тысячных. Прекрасный отчет!
17. Alonzomozley (alonzomozley) 29.11.12 15:05
Спасибо за отчет. Помог разобраться с реквизитами регистров.
18. МТ 1С профи (COMPER) 04.07.13 12:54
Хороший отчет, но к сожалению не работает стандартная галочка "Использовать свойства".
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа