Как превратить линейно-периодический отчёт в многолинейно-периодический (в платформах 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 не будет опубликован. Обязательные поля помечены *