Как превратить линейно-периодический отчёт в многолинейно-периодический (в платформах 8.х)



Навеяно http://infostart.ru/public/90001/ — решение на основе пользовательских полей в СКД

Исходные данные: к примеру, у нас есть отчёт по продажам на основе некоего оборотного регистра, написанный на СКД и имеющий возможность разворота по датам продажи.

Что нужно: вывести те же показатели, но в диаграмме по двум аналогичным периодам сразу (например, за год с развёрткой по месяцам).

Чем решаем: пользовательскими полями, без изменения отчёта в конфигураторе.

Разберём, что, собственно, минимально нужно для построения такого отчёта.

  1. ОДИН ресурсный показатель (сумма продаж)
  2. ДВА  измерения (год и месяц) — остальные, считаем, и так есть (контрагент, например).

Делаем пользовательские поля (выражения):

  1. Поле «Сумма» — самое сложное: пишем в выражении детальных записей «ВЫБОР КОГДА Год([Дата продажи]=2010(тут подставляете первый нужный год) ТОГДА [Сумма продажи] КОГДА (то же самое для каждого нужного года) ИНАЧЕ 0 КОНЕЦ». В выражении итоговых — Сумма(выражение детальных). Учитывайте, что в некоторых версиях 8.1 множественные «Выбор Когда Тогда Когда Тогда» могут не работать (зафиксированы такие случаи) и придётся писать вложенные «Выбор Когда Тогда Иначе Конец». это и есть ваше поле, по которому нужно отслеживать изменение 🙂
  2. Поле «Год» — НачалоПериода([Дата продажи],»Год») (и сразу в условном оформлении указываем его формат) (или сразу Год([Дата продажи]) — кому как нравится).
  3. Поле «Месяц» — Формат([Дата продажи],»ДЛФ=’MM. MMMM'») — так удобнее всего отображается.

Теперь осталось только вывести диаграмму: точки — месяц, серии — год, показатель — сумма, тип диаграммы, например, с накоплением.

Аналогично можно рассмотреть любой период.

Приложение к статье — файл сохранённой настройки для Универсального отчёта в ЗУП 2.5 8.2 (отчёт по регистру взаиморасчётов с сотрудниками организаций).

UPD 1: Для конструкции «ВЫБОР КОГДА ТОГДА» можно применить в данном случае сокращённый вариант записи:

Выбор Год([Дата продажи])
Когда 2007
  Тогда [Сумма продажи]
Когда 2008
  Тогда [Сумма продажи]
Когда 2009
  Тогда [Сумма продажи]
Когда 2010
  Тогда [Сумма продажи]
Когда 2011
  Тогда [Сумма продажи]
Иначе 0
Конец

Мои благодарности ildarovich за эту информацию.

UPD 2: тем более спасибо artbear, который заставил меня наконец-то отключиться от вообще вычисления суммы продаж таким извратом 🙂 заело с какого-то старого отчёта. Отдельное вычисление суммы не нужно вообще, можно сразу брать нужное поле. Зато мы теперь знаем про UPD 1!

35 Comments

  1. Ish_2

    Потрясен таким изобретением.

    Reply
  2. e.kogan

    (1) Какое там изобретение, просто жаль стало людей, которым предлагают за такую штуку платить штуку 🙂

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

    Reply
  3. Арчибальд

    Даешь по бесплатной альтернативе на каждую платную публикацию!

    Reply
  4. Ish_2

    (2) Достаточно было сделать комментарий в платной теме «не морочь людям голову».

    Reply
  5. e.kogan

    (4) Там примерно так и написано 😉

    (3) Если распределить нагрузку по, например, топ-30 — вполне реально 😀 только зачем? Немалая часть, ИМХО, не просто так платная. Лучше прикрутить кнопочку «спасибо рублём» с автопоявлением для разработок с рейтингом выше Х.

    Reply
  6. ildarovich

    (0) А не получится ли здесь использовать более короткую запись?

    ВЫБОР Год([Дата продажи]) КОГДА 2007 ТОГДА [Сумма продажи] КОГДА 2008 Тогда[Сумма продажи] КОГДА(то же самое для каждого нужного года) ИНАЧЕ 0 КОНЕЦ
    Reply
  7. e.kogan

    (6) Попробуйте. Я такой формой не пользовалась.

    UPD: Работает. Спасибо за информацию!

    Reply
  8. artbear

    (6) (7)

    А в чем проблема написать ВЫБОР КОГДА Год([Дата продажи]) >= 2007 ТОГДА [Сумма продажи] ИНАЧЕ 0 КОНЕЦ

    🙂

    Reply
  9. alexk-is

    (6) (7) (8) Если оптимизировать то так

    ВЫБОР КОГДА [Дата продажи] >= ДАТАВРЕМЯ(2007,1,1) ТОГДА [Сумма продажи] ИНАЧЕ 0 КОНЕЦ

    или так

    ВЫБОР КОГДА [Дата продажи] >= &ДатаГод2007 ТОГДА [Сумма продажи] ИНАЧЕ 0 КОНЕЦ

    Reply
  10. e.kogan

    (9) Да вообще ничего не надо, это у меня с какого-то старого отчёта заело, где показатель вычислялся сложнее 🙂 поправила.

    Reply
  11. alexk-is

    (7) Это так. Для справки http://infostart.ru/public/67585/

    Reply
  12. cool.vlad4

    (11) Черт, не знал. Хоть в запросах у 1С есть switch.

    Reply
  13. artbear

    (9) Это понятно, я показал более краткую форму записи без оптимизацию, недоумевая, почему не автор и комментаторы не пользуются краткой записью 🙂

    Reply
  14. e.kogan

    (13) Так оно и бывает со старыми разработками — когда доходят руки, оказывается, что две трети обвесов умерло своей смертью 🙂

    (9) Кстати, сравнение значения с ДатаВремя или тем более параметром (решение же пользовательским полем идёт, никакого добавления параметров в отчёт!) в данном случае вроде особого выигрыша дать не может по отношению к записи через Год… или ДатаВремя быстрее Год?ДатаВремя быстрее Год, согласна. А вот параметр в данном случае сбоку припёка. )

    Reply
  15. anig99

    Просто. Чего-то сам не допер, когда пытался прикрутить. Я зациклился на 2х мерной таблице.

    Reply
  16. e.kogan

    (15) Ясенпень, что просто ) но у всех бывают затыки на ровном месте. Для того и выложила, чтобы такой затык никому работу не тормозил )

    Reply
  17. bo_

    (2) Конечно, рад за Ваш энтузиазм и желание/стремление трудится за признание, но мы все таки живем в таком мире где одним признанием, своего благосостояния улучшить, к сожалению, не получится. Может быть как раз из-за таких «идейных» программистов, которых хлебом не корми, денег не плати, дай только покодить, нас 1С-ников, и не считают особо ценными специалистами, хотя по сути дела большинство таких спецов являются уже аналитиками/консультантами, а это совсем другой уровень и признания и оплаты. Хотя конечно когда-то и сам был начинающим, тоже работал за идею, не понимая того что отдаешь свой труд за бесценок, да еще и особых благодарностей/признания что-то не перепадало.

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

    ВАЖНО понимать что конечные пользователи отчетов, используют Ваш труд/идеи/мысли/изобретения (не отблагодарив Вас ни рублем) для увеличения своих доходов, и как правило используя хорошие отчеты, доходы довольно таки хорошо увеличиваются, ну а Вы радуйтесь всего лишь плюсом к Вашей карме, и то, скорее всего маловероятным, потому что дядьки олигархи на такими мелочами не заморачиваются.

    Мой отчет стоит всего лишь 1000 рублей — это меньше полу-часа работы наемного программиста, который просидит над отчетом гораздо больше.

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

    Reply
  18. anig99

    (17) Бред. Писать отчет под конкретного пользователя или писать тиражное решение — совершенно разные расценки. Такой отчет как у Вас на СКД пишется меньше чем за час, что автор и показал. Обращайтесь в 1с с жалобой, что придумав СКД они отобрали у вас хлеб. Профессионализм заключается не в зарабатывании денег, как это пытался доказать Eugeneer, а в том, чтобы быть постоянно на краю прогресса. Этот прогресс постоянно обесценивает написанное любым программистом — вы готовы купить windows 3.11 по цене на момент выхода? А window 95? Более простые вещи обесцениваются ещё быстрее. Перепишите Ваш отчет на СКД, добавьте плюшек и свистелок для пользователей и вперед. Вот, например, решение автора страдает недостатком — создание пользовательских полей ручное, хотя это можно автоматизировать.

    Reply
  19. bo_

    (18) С мнением о профессионализме согласен, но соревноваться в нем можно сколько угодно, но во-первых эти соревнования должны быть сугубо между спецами, а во-вторых, нужно адекватно оценивать Ваши разработки, и пользу, которую они принесут конечным пользователям. Вот как раз таки отношение пользы и стоимости моего отчета, по-моему больше чем отлично. Вы попробуйте показать идею/суть отчета руководителям, а затем назовите мою цену, думаю что найдется очень очень не много скупердяев, которые еще будут думать, а нужно покупать или нет…

    Reply
  20. e.kogan

    (17) Не знаю как вас, а меня ценным специалистом считают, т-т-т.

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

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

    Заметьте, сабж — статья, а не обработка; адресована, таким образом, программистам и тем из пользователей, кто освоил СКД на достаточном уровне.

    (18) Кстати, это не готовое решение, а путь решения для класса задач, причём решения именно чисто пользовательского, без захода в конфигуратор. Потому и без автоматизации 😉

    (19) Да продавайте, кто вам мешает? Я даже не стала ставить в вашей теме ссылку сюда — кто не найдёт, тем точно нужна ваша работа. Вы продаёте яблоки, я рассказываю, как их стрясти с дерева.

    Reply
  21. anig99

    (19) Ваш отчет отстал от прогресса, поэтому он не стоит НИЧЕГО, что наглядно показал автор этой публикации.

    Reply
  22. kocheroff

    Может и оффтоп, но все же скажу.

    Это сугубо мое мнение:

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

    Причина? Причина проста — пока программист тратит время на решение всякой мелочи типа «…ой, у меня тут отчетик слетел…» (хотя там надо просто поменять настройки этого отчета средствами СКД и делается это за 5 минут) у него меньше времени остается на самосовершенствование. Как следствие медленней идет прогресс в профессиональном уровне и меньше толковых разработок. А пользователь (заказчик) все заваливает и заваливает разной мелочью.

    Итог один: хорошего не разрабатывают -> денег хороших не платят. А за «мелочь» — мелочь и платят.

    Как то так 🙂

    Reply
  23. Ish_2

    (18) Просто молодца !

    Reply
  24. support

    У коммерческого решения есть неоспоримое преимущество — у него есть техническая поддержка пользователей и дальнейшее развитие. В отличии от бесплатного, где это на усмотрение автора, его занятость, настроения и т.д.

    Reply
  25. cool.vlad4

    (24) не хочется оффтопить, но тем не менее поправлю — у коммерческого решения как правило есть способ регулирования отношения между продавцом и покупателем, например, договор, в котором и может быть указана тех поддержка, а может и нет, а может оговорены условия. Упомянутый windows 3.11 никто не поддерживает уже. И не развивает.

    Reply
  26. gutentag

    (24)

    У коммерческого решения есть неоспоримое преимущество — у него есть техническая поддержка

    Которая, обычно, заканчивается через полгода-год как в 1С с конфигурациями типа «ПРОФ».

    РЕЗЮМЕ: главное, чтобы конечный пользователь не превратился в «дойную корову»

    ———

    В остальном, мне приемлемы, практически все, позиции озвученные в дискуссии.

    Reply
  27. anig99

    (24) что-то я не заметил у платного отчета дальнейшего развития.

    Reply
  28. Поручик

    (26) Предлагаешь всю жизнь поддерживать?

    Reply
  29. Поручик

    (2) Это для программистов, конечный пользователь типа менеджера или бухгалтера или руководителя не станет выписывать какие-то странные буквы из вашей статьи и что-то настраивать в отчёте.

    Reply
  30. RomanUzmov

    (26) gutentag,

    РЕЗЮМЕ: главное, чтобы конечный пользователь не превратился в «дойную корову»

    Все мы, по большому счету, являемся «дойными коровами», в той или иной степени: главбух платит программистам за услуги по сопровождению программ, а программист платит местным провайдерам за интернет и службе такси за доставку его тела к тому самому бухгалтеру… Каждый ожидает качественной работы… А за работу, как ни крути, все равно надо платить. Если, к примеру, отчет написан для 1С-бухгалтерии, то, при изменении последней, его, возможно, придется изменять, а это работа, а за неё надо платить. Для того и служит поддержка: гарантированная бесплатная, а затем и платная, на указанные сроки. Да хоть бесплатная поставка отчета/программы будет — пусть так, по принципу СПО, к примеру… услуги по обновлению всё равно платными будут… А если пользователь САМ может менять отчет, — пусть меняет, никто же его не будет заставлять платить силой… Просто тут уже следует задуматься — а может глбуху тому же сменить работу и идти на программиста? Ведь он, по сути, своё собственное время — которое тоже имеет свою цену с точки зрения работодателя, тратит «непрофильно», да и не факт, что сможет нормально неспециалист вносить изменения в программы/отчеты. Каждому своё… имхо, конечно же…

    Reply
  31. Поручик

    (30) + с единственной придиркой: программистам платит не главбух, а владелец/руководитель организации. Остальное верно.

    Reply
  32. RomanUzmov

    (31) Поручик, ну да… я так, утрируя… раз уж оппонент — гл.бух. 😉

    Reply
  33. e.kogan

    (29) Конечные пользователи бывают разные. Кому-то быстрее и проще будет внести предлагаемые (чисто пользовательские, замечу) изменения в свой отчёт (может, и не в типовой конфигурации, может, и не только в продажах), кому-то — проплатить, подождать пакета документов и пользоваться предложенным отчётом, не трогая настроек и вообще не включая мозг.

    Кстати, (30), в таком случае можно сказать, что бухгалтер, ставящий отбор в оборотке, тоже тратит время непрофильно. Пусть программист поставит флажок, укажет значение и сохранит десяток настроек под десять контрагентов… 😉

    Reply
  34. Den_D

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

    Reply
  35. German_Tagil

    ок запомню

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *