При переходе с 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. Не стал трогать все файлы, изменил только «Текст запроса», хотя можно этот файл и не скачивать, все изменения я описал выше.
Толковый отчет. Очень пригодился при разработке своих отчетов.
Это мой первый отчет в 8.2. Рад что кому то пригодилось. Думаю чем больше будет подобной информации, то будет проще изучать 1С и находить новые и нестандартные решения стандартных задач.
Согласен. Изучение чужих разработок позволяет более качественно разрабатывать свои собственные.
Отчет-хороший.
Очень хороший пример для работы с реквизитами регистров. Однозначно +!
У меня был примерно такой же отчет по структуре запроса, но немножко не оптимизированный. Спасибо Дмитрий за подсказку. Оказалось очень удобно вывести количество по единицам измерения. Именно здесь у меня была ошибка. В интернете очень мало примеров работы с реквизитами регистров в отчетах и уж тем более на основе универсального.
Здравствуйте,оч полезный отчет, для производственных организаций было бы неплохо вынести в отдельные показатели:
— Отчет производства за смену — (ПРОИЗВЕДЕНО)
— Требование-накладные + Списание материалов в эсксплуатацию (Передано в производство)
— Списание товаров — (Списание на ФР).
А еще удобнее, если вид отчета оставить стандартным, и добавить возможность группировки по кодау операции, тогда он будет компактным и «приход — расход» будет виден
У нас нет производства, поэтому нет возможности добавить и проверить такие показатели, но есть исходники, и любой можно добавить любые показатели, по образу и подобию.
Группировку по кодам операция мне сделать не удалось, проблема была в том что по коду операции группируются все показатели, включая начальный и конечный остаток, и отчет становиться жутко некрасивый. Думаю эту проблему можно решить использовав СКД, но я пока жду заказанную книгу, и как появиться время буду изучать СКД. В нашей программе этот отчет имеет статус временной заглушки, переделывать его придется полностью, так как он многим меня не устраивает. Но основа получения данных наверно останется прежним, если я не найду способ лучше.
отличный отчет, спасибо.
отчет шикарный — ищу такой уже давно, ностальжи по семерке выражается только в тоске по этому отчету… а, еще по галке Показать остатки у комиссионеров в ведомости по товарам)))))…
в кривом виде мне удавалось в УТ воспроизвести ведомочть по партиям с детализацией по видам операций, но там жутко некрасиво, да… там получается «Перемещение» и внутри «Нач.остаток, Приход, Расход, Кон.Остаток», а так хочется уивдеть «Начальный остаток», «Приход» (и тут детализация по видам операции Приход), «Расход» (и тут детализация по виду операции Расход)… ну, Вы понимаете же, да, как в семерке:))
хоть у меня и 8.1, но однозначно жирный плюс! (поковыряла на 8.2 немного)
зы еще вот что заметила, если хочу развернуть до регистратора , например, сумму по перемещениям — открываются документы по всем операциям… наверное, хорошо бы отбор срабатывал только по перемещениям (или поступлениям, реализациям и т.д.)…
(9) oxana1,
Этот отчет очень легко портировать на 8.1. Он создавался на базе Управления Торговли 10.3, которая в свою очередь была под 8.1. Так что думаю что если у вас Управление Торговлей 10.3 то вы легко сможете его переделать под себя, просто копируете любой самый простой отчет который базируется на универсальном отчете, и в модуль вставляете текст из моего отчета. Мне кажется заработает даже без допиливания напильником.
Если есть такая потребность то могу сделать этот отчет на старой платформе 8.1, у меня дома где то завалялся дистрибутив старой платформы. Мы просто сразу купили и поставили 8.2, так что на работе нет старой платформы.
(11) сейчас буду пробовать, спасибо большое!:)
все получилось, абсолютно без допиливания…
если нужен, могу вам скинуть, добавите и его, есть еще народ на 8.1…)
зы и еще «Реализация в розницА» можно поправить на «Реализация в розницЕ» или «Реализация (розница)»… я у себя поправила
Если дата документа = допустим 12.01.11 00:00:00
Начальный остаток задваивается проблема я думаю в этой строке
| КОГДА ИсточникДанных.Период = &ДатаНачала
| ТОГДА ИсточникДанных.КоличествоНачальныйОстаток
| ИНАЧЕ 0
Как исправить?
(14) MMMaXXX,
В ходе работы был выявлен существенный недостаток этого отчета. Если документ имел Дату/Время совподающей с границей отчета, то при некоторых группировках данные по начальному или конечному остатку моли задваиваться, а могли и правильно отображаться. Так как я считаю что Начальный/Конечный остаток должны показываться всегда одинаковые, и не зависить от настроек пришлось разобраться и найти решение этой проблемы, может и не самое изящное, но работает.
В конструкцию получения начального/конечного остатков я добавил лишнее условие «И ТаблКодовОпераций.КодОперации ЕСТЬ NULL»:
ВЫБОР
КОГДА ИсточникДанных.Период = &ДатаНачала
И ТаблКодовОпераций.КодОперации ЕСТЬ NULL
ТОГДА ИсточникДанных.КоличествоНачальныйОстаток
ИНАЧЕ 0
КОНЕЦ КАК КоличествоНачальныйОстаток,
Спасибо! Единственное исправление которое внес еще это округление количества до тысячных. Прекрасный отчет!
Спасибо за отчет. Помог разобраться с реквизитами регистров.
Хороший отчет, но к сожалению не работает стандартная галочка «Использовать свойства».