Дружелюбная система компоновки данных (СКД)

20.10.16

Разработка - СКД

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

Если Вы работаете программистом в крупной фирме с долгой историей, то, возможно, Вам знакома ситуация, когда большинство отчетов в базе написано «неизвестно кем, неизвестно для кого». В результате приходится долго искать нужный отчет, просматривать код отчета перед использованием.

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

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

"СрокХраненияДней = 20, СрокХраненияПроцент = 60"

выводить значения параметров в связный текст, например:

"Остатки товаров по партионному учету, со сроками хранения менее 60 процентов или менее 20 дней".

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

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

Поле «Заголовок» добавляем в структуру выводимых данных на закладке «Настройки» выше группировок основного отчета.

Вывод параметров можно отключить: закладка «Настройки» - закладка внизу «Другие настройки». Так выглядит результат. Блок параметров лучше убрать. Шрифт заголовка - на закладке "Вычисляемые поля", формат поля.

Этот комментарий мне больше всего понравился. Лучше не скажешь.

Надеюсь, эта заметка послужит улучшению взаимопонимания между нами, исполнителями и нашими заказчиками. А мне принесет несколько плюсов в карму ))).

Отчет СКД. Справочная информация. Параметры отчета. Формирование заголовка. Система компоновки.

См. также

SALE! 15%

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    159690    876    399    

862

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    8730    implecs_team    6    

47

Инструментарий разработчика СКД Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

3 стартмани

05.02.2024    7012    56    obmailok    21    

79

Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    3156    5    Yashazz    1    

34

СКД WEB-интеграция Программист Платформа 1С v8.3 Конфигурации 1cv8 Абонемент ($m)

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

2 стартмани

11.12.2023    10834    23    John_d    25    

124

СКД Программист Платформа 1С v8.3 Система компоновки данных Конфигурации 1cv8 Бесплатно (free)

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

05.12.2023    8053    PROSTO-1C    15    

68
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. json 3350 20.10.16 20:53 Сейчас в теме
А чем не устраивает комментарий у отчета?
По моему скромному мнению, лишние поля в схеме - не есть гут. Все равно все отчеты, которые есть - не подпишешь. Обязательно найдутся пользователи, которым ваш заголовок будет мешать. Самый лучший способ - самодокументируемое название отчета в дереве метаданных. См. Рекомендации по именованию метаданных на ИТС
boln; Nelli_A86; Sheff; kuzyara; CSiER; papche; rpgshnik; +7 Ответить
2. vasilev2015 2723 21.10.16 09:07 Сейчас в теме
(1) yurii_host,
Про дерево метаданных наши заказчики даже не слышали )) и конечно, название там не может быть подробным, не может включать значения параметров в удобочитаемой форме.
3. Synoecium 786 21.10.16 10:59 Сейчас в теме
А как обстоят дела с производительностью такого подхода? Замечал, что если включать такие поля (без данных из набора данных, просто с служебной информацией), то время выполнения увеличивается, возможно запрос набора данных выполняется 2 раза.
4. papche 618 21.10.16 13:07 Сейчас в теме
Производительность не пострадает, а вот эстетика - да ))
Я бы формировал заголовок программно (ПриКомпоновкеРезультата).
5. vasilev2015 2723 21.10.16 13:30 Сейчас в теме
(4) papche,
Тоже хороший вариант. Но чуть сложнее.
6. Evil Beaver 8244 21.10.16 16:06 Сейчас в теме
(4) papche, если сбросить СтандартнуюОбработку, то фоновое выполнение отчета придется реализовывать руками.
9. papche 618 22.10.16 09:36 Сейчас в теме
(6) Evil Beaver, а и не надо сбрасывать флаг стандартной обработки без необходимости
7. Cyberhawk 135 21.10.16 16:32 Сейчас в теме
(4)
Я бы формировал заголовок программно (ПриКомпоновкеРезультата)
Увы, такое не прокатит для подключаемых к БСП отчетов, не имеющих собственной формы отчета
8. starik-2005 3088 21.10.16 17:59 Сейчас в теме
(7) Cyberhawk, кто сказал? На сколько я знаю, метод модуля отчета "ПриКомпоновкеРезультата" выполняется всегда.

С другой стороны, всегда можно вывести заголовок с помощью макета. Я обычно так и делаю: заголовок из макета, остальное из схемы.
11. papche 618 22.10.16 11:36 Сейчас в теме
(8) starik-2005, а это как, можно поподробнее?
14. starik-2005 3088 23.10.16 15:57 Сейчас в теме
(11) papche, если исходить из того, что некоторые вместо "Отчет.Сформировать()" используют процессор, то у них не работает. А вот если отчет формируется (можно и в фоне), то метод "ПриКомпоновке..." отрабатывает. В типовой через "Сформировать" все работает.

Но если вопрос касался макета для заголовка, то тут нужно показывать.

ЗЫ: вапсче, господа, если о чем-то спрашивайте, то детали иногда важны, Особенно если в сообщении два ответа.
10. papche 618 22.10.16 09:39 Сейчас в теме
(7) Cyberhawk, а Вы попробуйте, удивитесь, но работает и без собственной формы ))
Вот рабочий код, выводит заголовок с использованием параметра "Период" типа стандартный период
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ЗначениеПериода = Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")).Значение;

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
Настройки.ПараметрыВывода.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Заголовок")).Значение =
"Дата начала: "+Строка(ЗначениеПериода.ДатаНачала) + ". Дата окончания: "+Строка(ЗначениеПериода.ДатаОкончания);
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки);

ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных,);
КонецПроцедуры

12. SITR-utyos 1429 22.10.16 18:13 Сейчас в теме
(0)
Пара вопросов:
1. А что будет если параметр является необязательным и он не установлен?
2. Необходимо добавить вычисляемое поле в группировку? Думаю, будет не лишним указать, что в этой группировке надо отключить автополе, и выбрать только вычисляемое поле. Подобным образом надо сделать в разделе сортировка
18. vasilev2015 2723 24.10.16 15:36 Сейчас в теме
(12) SITR-utyos,
1. В вычисляемое поле можно добавлять любые условия, проверки заполнения.
2. Да. Спасибо за дополнение.
13. echo77 1906 23.10.16 07:20 Сейчас в теме
Добавьте еще скриншот как будет выглядеть отчет с этим заголовком
17. vasilev2015 2723 24.10.16 09:00 Сейчас в теме
15. zqzq 25 24.10.16 08:33 Сейчас в теме
Использовал данный подход. Имеет смысл, когда нужно программно формировать заголовок с учетом параметров и т.д.. Кстати, можно в настройках СКД шапку и рамку заголовка убрать, а также шрифт настроить.
vasilev2015; +1 Ответить
16. vasilev2015 2723 24.10.16 08:59 Сейчас в теме
(15) zqzq,
я рад, что кому-то пригодилось.
19. echo77 1906 24.10.16 17:47 Сейчас в теме
(0) Так же советую, рассказать про то, что группировку можно оформить макет оформления - Без оформления, а в самой схеме прописать, что данное поле оформляется минимальной шириной = х, максимальной шириной = х, чтобы не было переносов, так же можно поиграть со шрифтами
Прикрепленные файлы:
21. vasilev2015 2723 25.10.16 09:20 Сейчас в теме
20. Alien_job 190 25.10.16 07:44 Сейчас в теме
Как бы проблема поиска нужного отчета не решилась - все равно надо все отчеты перебирать пока подходящий не найдется
22. vasilev2015 2723 25.10.16 09:23 Сейчас в теме
(20) Alien_job, Такой заголовок сделает отчет понятнее пользователю. Количество вопросов уменьшится.
23. starik-2005 3088 25.10.16 11:40 Сейчас в теме
Вообще, в заголовке отчетов как минимум нужно указать название отчета, период, дату и время формирования, имя пользователя, который формировал отчет, отборы и параметры, которые использовались при его формировании. :Все это помогает решать массу вопросов даже по скриншоту.
Лучше период указывать отдельными полями, чтобы можно было его скопировать, например, в другой отчет (открыли отчет из письма, например, в Excel или ООо). Также и с некоторыми другими полями отбора - контрагент, склад, подразделение. Если каждый раз придется выдирать дату, контрагента или иной полезный параметр данных из центра строки, то это увеличит количество кликов, а количество кликов надо сокращать.
vasilev2015; +1 Ответить
24. Agapov_Stas 1 26.10.16 14:00 Сейчас в теме
(23) starik-2005, Это все можно запихнуть в стандартный "Заголовок отчета" - который находится на последней закладке в отчете
делается это все в процедуре "При компановке результата" - кода одна строка.
зачем изобретать велосипед ?
25. vasilev2015 2723 26.10.16 14:29 Сейчас в теме
(24) Agapov_Stas,
Использовать вычисляемое поле проще, чем кодировать процедуру "При компоновке результата".
Кроме этого, можно управлять размером шрифта и прочим оформлением, положением заголовка относительно отчета или его частей.
26. starik-2005 3088 27.10.16 14:13 Сейчас в теме
(24) в стандартный заголовок можно, но муторно. Если дети-программисты пилят отчет и тащат туда две даты (для начала периода и его окончания, а потом пилят КОНЕЦПЕРИОДА(ДатаКонца, День) ) - это одно, тут две даты в двух полях. А если это уже подростки, то они вполне способны вместо двух дат стандартный период юзать - и тут уже одна строка с двумя датами и до кучи временем, что совсем не гут при копировании - приходится выдирать. Ну и отборы в одну строку все падают, а хотелось бы в разные ячейки, чтобы проще выбрать и найти что-либо при анализе отчета. Это уже предполагает, что заголовок будет нарисован.

(25) по поводу "проще", то я бы лично так не сказал. Процедура в модуле создается одним кликом. Но изменить макет можно только после выполнения компоновки. Т.е. "стандартнаяОбработка = ложь; сформировать(); ...работать с макетом..." Этот момент уже не даст пользователю возможности помимо отчета делать что-то еще, ибо тут асинхронности формирования отчета не получается.
27. Vlad_2008 16 27.10.16 15:09 Сейчас в теме
Ой, не удержался ... добавлю "5 копеек" и от себя:

1) "элемент новизны"

Делал так, еще в 8.1, когда изучал компоновку. Отказался от такого способа, т.к. у него много недостатков: лишняя группировка, лишние заголовки, бестолковые пробелы и т.д.

Попробуйте сделать отчет с группировкой "Таблица", у которой 31 колонка и 1500 строк, думаю этот способ Вам быстро разонравится.

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

2) "велосипед"

Думаю да, особенно в этом примере, когда заголовок это одна строка. Ее надо "пихать" в родной заголовок программно или передавать в параметрах. А если кажется, что "Использовать вычисляемое поле проще", то это только кажется, т.к. параметры Вы же все равно устанавливаете ... гыы ... найдите два отличия:

- &Процент = 60 -> УстПар("Процент", Процент)
- &ЗаголовокПроцент = "Срок годности менее 60%" -> УстПар("ЗаголовокПроцент", "Срок ..." + Процент + "%")

Т.е. в данном примере, все можно было сделать через параметры, т.е. (еще раз) максимально универсально и не ползая каждый раз в конфигуратор, чтобы поменять текст и чтобы " ... можно управлять размером шрифта и прочим оформлением ... ". А оформление надо использовать "условное", опять-таки можно через параметры, и, опять-таки (еще раз блин) универсально.

Велосипед и потому, как указали выше, что Параметр, на то и параметр, чтобы видеть именно его, а не лирическое повествование в виде предложения Л.Н. Толстого.

3) как делаю я

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

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

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

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

На картинках вариант со стандартным оформлением от самой компоновки, и вариант с переделанными макетами полей и с добавлением оформления.

Видно, что из двух строк в шапке отчета, одну я занял под "свой" заголовок и могу с ним делать все что угодно, ни строчки кода, вот так!





smilemanrus; CratosX; PowerBoy; +3 Ответить
28. vasilev2015 2723 28.10.16 11:46 Сейчас в теме
(27) Vlad_2008,
Макеты - это стандартно, красиво.
Это лучший выбор, когда есть время.
29. starik-2005 3088 28.10.16 13:06 Сейчас в теме
(28) если нет времени на макет, но есть время на инфорстарт, то кто-то что-то делает не так.
30. МимохожийОднако 142 03.05.18 06:37 Сейчас в теме
Комментарии впечатлили больше, чем статья, сработавшая катализатором.
Оставьте свое сообщение