Любите СКД так, как люблю ее я

27.02.25

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

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

1. Комментарии и "разметка"

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

Будете ли Вы смотреть справку к отчету, комментарий к объекту метаданных, искать комментарии в модуле объекта/менеджера? Со 100% гарантией могу сказать, что нет! В чем можно быть уверенным наверняка - первое, что сделает любой разработчик 1С, получивший задачу на доработку любого отчета, - он откроет основную схему компоновки данных. Значит, наше "наследство для передачи потомкам" должно бросаться в глаза сразу после выполнения данного действия. И что тогда может быть лучше первой строчки запроса-источника?

 

 

Это решение позволяет спокойно редактировать запрос с помощью консоли запросов и не приводит к выборке лишних полей при формировании отчета - СКД об этом позаботится за нас.

Расширим немного функциональность данного приема. Как оставить необходимые комментарии по логике построения запроса в отчете? В модулях типовых конфигураций мы периодически находим описание пакетов в комментарии перед текстом запроса. Но комментарии в отчетах не дают использовать консоль запросов! Никаких гарантий, что их не затрут. Решим эту задачу так:

 

 

Особенно рекомендую этот прием, если у Вас есть стажеры, за которыми необходимо выполнять код-ревью, - сразу видно, осознает ли "юное дарование", что оно в запросе собирает, или стажер просто "методом тыка" пытается отчет сконструировать.

Хороший отчет должен быть емок и лаконичен. Он должен полностью помещаться на экран монитора и решать собой ровно ту задачу, которую он призван решать, а при печати вмещаться на один лист формата А4 и не содержать никаких лишних данных. Это - в идеале. Утопия. А вот убедить в этом пользователей - задача практически нереальная. Почему-то им в отчете нужна обязательно куча всевозможных показателей и аналитик, причем объяснить зачем - они толком не могут. Надо - и все, со времен динозавров так сложилось...

Иногда показателей и аналитик так много, что это начинает запутывать: какие данные уже выбраны в запросе, а какие нет? Что из выбранных полей - ресурсы, а что аналитические разрезы? Хочется в таком случае как-то структурировать текст запроса. Области, как в модулях, и комментарии в запросах-источниках недоступны. На помощь приходит, как ни странно, русский язык. Что мешает все ресурсы назвать по шаблону Ресурс%НаименованиеПоказателя%, а аналитики Аналитика%НаименованиеАналитики% (ну или как-то наподобии)? Очень выручает при настройке расчета итогов и при настройке структуры вариантов. 

 

 

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

 

 

2. Глобальный серверный модуль.

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

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

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

 

 

 

3. Отчет как "генератор запросов/данных".

Это совет скорее для начинающих специалистов. Осознание, что далеко не всегда нужно дотошно во всем разбираться приходит с опытом (а точнее c дефицитом рабочего времени, который растет вместе с опытом). Желание разобраться, как устроена система, как организовано хранение данных, написать с нуля сбор данных - весьма благородно и полезно. Но жизнь вносит свои коррективы - чаще всего времени разбираться просто нет.

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

Я, к примеру, постоянно им пользуюсь в задачах, связанных с зарплатно-кадровым функционалом, - зачем самостоятельно собирать в запросе список работающих сотрудников в тех или иных аналитических разрезах, если есть отчет по списочному составу, за корректность данных в котором несут ответственность разработчики типового решения и в котором есть практически вся необходимая информация?

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

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

 

 

 

4. Отчет как алгоритм - "черный ящик".

В чем огромное преимущество отчета на СКД по сравнению с алгоритмом, размещенным в общем модуле?

  • Во-первых, в визуализации с возможностью гибкой пользовательской настройки. Тестирование запроса в общем модуле, Вы, например, целиком на аналитика или пользователей скинуть не сможете. Как минимум, потребуется аналитику сценарии тестирования расписать. А вот тестирование отчета - легко.
  • Во-вторых, в возможности наложения "нежестких" условий с произвольными операциями сравнения. Сколько усилий уйдет на поддержку в запросе только для одного поля использования/неиспользования условий "=, <>, заполнено, не заполнено, содержит" и т.д.? В отчете же достаточно просто оставить указание компоновщику макета, в каком месте в текст запроса условие подставить.
  • В-третьих, в автоматической оптимизации текста запроса под состав требуемых данных. СКД отлично справляется с исключением из запроса невостребованных полей/таблиц.

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

Я постоянно задумываюсь над вопросом, на самом ли деле нужна такая декомпозиция на мельчайшие "учетные единицы информации", как это реализовано в ЗУП 3.0, в котором сбор информации, относящийся к сбору информации о сотрудниках разнесен по множеству методов в общих модулях? Для примера, как часто нужны вам были стажи сотрудников в отрыве от списочного состава этих самых сотрудников? Или их паспортные данные? Насколько удобной оказалась такая декомпозиция с точки зрения сопровождения системы?

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

Использовать на практике такой отчет - "кирпичик" можно, например, для генерации временных таблиц.(Самое простое использование - забрать данные, как описано в пред. пункте, - уже не будем рассматривать). Причем можно управлять составом необходимых данных с помощью вариантов отчета (или программно собранных настроек). Например, можно результат формирования отчета забрать в менеджер временных таблиц.

 

 

Второй вариант использования - в отчетах, когда для построения одного отчета требуется вся информация, рассчитанная в другом. Берем и целиком подставляем текст запроса из одного макета в другой. Единственная сложность в применении - необходимо тщательно следить за наименованием выбираемых полей: общие поля для обоих отчетов должны иметь одинаковые наименования, а присущие только одному из отчетов - должны иметь уникальное наименование. Иначе некорректно будут работать отборы.

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

 

 

Архитектура же решения на отчетах-алгоритмах может выглядеть примерно так:

5. "Отчет в отчете"

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

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

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

 

 

Архитектурно это выглядит так: в новом отчете в качестве источника данных выступает набор - объединение источников-объектов. Каждому источнику-объекту соответствует отдельный отчет. Наименования выбираемых полей жестко соответствуют наименованиям полей исходного отчета.

 

 

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

 

 

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

Не смотря на то, что сбор данных не оптимальный, скорость формирования такового отчета получилась вполне приемлемая - 5-6 секунд.

 

 

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

 

 

На выходе у пользователей:

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

А у нас пример - как реализовать практически на одних отчетах целый блок доработок.

Надеюсь, Вам было интересно, и что-то окажется полезным для использования.

СКД Архитектурные заметки крупное сопровождение практические советы разработчикам/архитекторам на заметку пофилосовствуем?

См. также

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

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    176607    979    403    

939

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

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

24.12.2024    6442    Akcium    13    

42

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

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

15.05.2024    11712    implecs    6    

48

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

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

3 стартмани

05.02.2024    8418    62    obmailok    21    

81

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

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

1 стартмани

31.01.2024    3520    6    Yashazz    1    

34

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

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

2 стартмани

11.12.2023    12088    25    John_d    26    

128

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

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

05.12.2023    9603    PROSTO-1C    15    

69
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. mikukrnet 182 27.02.25 13:09 Сейчас в теме
С комментариями в тексте запроса отличная идея!
dsdred; user938650; t278; wonderboy; kser87; o.nikolaev; Созинов; Sergik_D; +8 Ответить
19. German 413 28.02.25 08:24 Сейчас в теме
(1) Вот только тащить это во временные таблицы, плохая идея да и размер выборки будет увеличен. Трафик с СУБД увеличим ради комментариев
Brawler; kuzev; +2 Ответить
33. mikukrnet 182 28.02.25 11:55 Сейчас в теме
(19) 😆

качество кода важнее пары лишних мегабайт в темпдб, один бестолковый кодер (ну или тот кто не понял что к чему) может умножить все ваши ресурсы на ноль
39. capitan 2609 28.02.25 13:43 Сейчас в теме
(19)
Трафик с СУБД увеличим ради комментариев

Вы удивитесь, но если поле не попадает в отчет, то СКД с вероятностью 99% его не включит в запрос к СУБД

За публикацию Светлане заслуженный плюс
2. amiralnar 9 27.02.25 14:20 Сейчас в теме
Лайк за оригинальность
3. Teplotrassamen 27.02.25 17:00 Сейчас в теме
По поводу ресурсов:
Ресурс%НаименованиеПоказателя%, а аналитики Аналитика%НаименованиеАналитики%

Их можно именовать через точку и тогда все ресурсы будут лежать в отдельной папке, что иногда может быть полезно.
С комментариями интересный ход.
triviumfan; +1 Ответить
4. o.nikolaev 216 27.02.25 18:24 Сейчас в теме
5. RustIG 1836 27.02.25 20:28 Сейчас в теме
не люблю СКД из-за его монструозности - сколько в нем интерактивных настроек для разработчика в режиме конфигуратора, прибавьте программное сопровождение компонент СКД, добавьте типовые механизмы БСП по использованию Вариантов отчетов... В итоге вариантов реализации и исполнения механизмов отчетов на СКД - тысяча и больше...Умножьте на специфику конфигураций, которые по своему используют механизмы СКД...
В целом, приходится решать много разных задач, и когда встречается задача по отчетам и по СКД - думаешь "ну вот опять..."
о чем вы написали - все это знакомо и понятно, но это "капля в море" в мире задач по СКД...сильно конечно ситуацию не улучшит... но читать было интересно. :)
NeLenin; DmitryKSL; bulpi; Brawler; SerVer1C; frkbvfnjh; maksa2005; John_Dow; unichkin; Evg-Lylyk; Cерый; +11 Ответить
6. aximo 2153 27.02.25 20:40 Сейчас в теме
(5) иногда можно месяцами не заходить в конфигуратор, а работать исключительно в консоли)
7. RustIG 1836 27.02.25 21:36 Сейчас в теме
(6) консоль запросов это сильно другое в отличие от СКД.
Насколько я понимаю, отчет на СКД только через конфигуратор модифицируется.
Консоль запросов я люблю, а вот СКД - нет.
Элементарно, чтобы наваять запрос для СКД в конфигураторе, сначала лучше открыть консоль запросов в режиме Предприятие - собрать данные, проверить, потом копипастом перенести в запрос СКД в конфигуратор...
Ну, возможно, вы говорите про консоль отчетов на СКД - тогда да, можно не заходить в конфигуратор. Но это чисто такая узкоспециализированная роль на проекте - не знаю, как называется, то ли Аналитик, то ли Экономист, но не как "программист 1С" :)
8. ovetgana 31 27.02.25 22:41 Сейчас в теме
(7) Если Вы запросы для СКД пишете в консоли запросов, то Вы скорее всего не понимаете, как правильно писать запросы для СКД и как ей пользоваться. Вся красота этого механизма как раз заключается в том, что благодаря правильно написанному запросу с директивами для компоновщика макета (а эти директивы консоль запросов не позволяет сделать) управлять исполняемым к БД запросом. Это же, по сути, машина, генерирующая запросы, для управления которой есть удобный графический редактор, который Вам не нравится.
И Вы не правильно прочитали заголовок к статье - он не вопросительный, он побудительный))
10. RustIG 1836 27.02.25 23:10 Сейчас в теме
(8)
Вы не правильно прочитали заголовок к статье - он не вопросительный, он побудительный))

пусть я буду первым, который побудительно скажет обратное :)
у меня нет консоли СКД - да, я не горжусь этим, поэтому как-то изворачиваюсь консолью запросов исключительно для анализа соединений таблиц. Вообще, как-то мимо меня прошло понимание, что пора обзавестись консолью СКД.
про директивы понимаю вас...проходил этот суровый урок жизни...
Думаю, еще 1000 1сников наберется, которая про консоль СКД "подзабыла" - на обычных формах эта консоль СКД на ИТС имелась, а для управляемых форм - нет ее, да и консоль запросов для управляемых форм "кривая".
Ну вот только сейчас я понимаю, что надо искать на ИС консоль СКД.
Единственное, не понял, можно ли программно управлять СКД в консоли СКД? или все же придется открыть конфигуратор? не подскажите?
16. webester 26 28.02.25 07:27 Сейчас в теме
(10)
на обычных формах эта консоль СКД на ИТС имелась, а для управляемых форм - нет ее, да и консоль запросов для управляемых форм "кривая".

Не совсем так. Штатная работает в толстом клиенте на управляемых формах https://its.1c.ru/db/metod8dev/content/3401/hdoc

Единственное, не понял, можно ли программно управлять СКД в консоли СКД? или все же придется открыть конфигуратор? не подскажите?

Есть разработки энтузиастов https://github.com/cpr1c/tools_ui_1c тут работает в тонком клиенте, я юзаю ИС тулкит, там тоже есть редактор СКД. Он платный но стоит своих денег.
15. webester 26 28.02.25 07:18 Сейчас в теме
(5) СКД одна из лучших вещей в платформе. Насколько все проще стало с его наличием по сравнению с временами 8.1 или 8.0(когда он там заехал, не помню уже), просто выдохнули с отчетами. Видишь работу с данными в которой нужна гибкость, даже если не нужен отчет, сразу думаешь - как бы сюда прикрутить СКД, с его гибкими источниками, полями, отборами, ресурсами и прочим.

(5)
В итоге вариантов реализации и исполнения механизмов отчетов на СКД - тысяча и больше...

Ну да. Инструмент гибкий, придется разобраться хотя бы разок.
flanchev; +1 Ответить
40. RustIG 1836 28.02.25 14:47 Сейчас в теме
(15) Роман, давайте фактами оперировать. ;)
Для простых задач СКД удобно и полезно. В целом, все 1сники сейчас до сих пор используют СКД, живем с этим, дружим.
СКД имеет свои ограничения, к примеру расчет итогов по группировкам и итоговым полям, и пусть это будет не Сумма, а что-нибудь среднее с процентами. Раньше СКД не умело это считать - был период, когда мы ждали доработок платформы. С выходом новых версий платформы 1С , СКД стала расцветать.... Но ждали мы долго....
Сейчас большинство рабочих ситуаций СКД рассчитывает корректно.
Но, остаются единичные ситуации-правила. в которых придется сильно заморочиться, и любое следующее изменение группировки полей пользователем приводит к непредсказуемым результатам. Вот вам и гибкость в интерактиве. К сожалению, не могу предоставить пример.
Другой пример предоставлю, недавно дорабатывал чужой нетиповой СКДшный от чет - в нем 8 показателей (Сальдо начальное, Приход, Расход, Сальдо конечное - по двум показателям). Автозаполнение полей запроса отключено.
Возведение галочки Автозаполнение затирает все поля, которые в исходном виде были прописаны вручную. Для сальдо нужно вручную прописывать группы и условия использования - так называемые Роли (https://its.1c.ru/db/metod8dev/content/3093/hdoc). Мне нужно было добавить по каждому показателю еще один "показатель минус НДС". То есть нужно было добавить в отчет 8 показателей, я уж не помню сколько много времени я на это потратил. Скажем так, вручную прописывал поля, тестил и немного досадовал, что гибкости в этом нет никакой. Сам отчет жестко структурирован изначально по ТЗ. То есть зачем прям использовать СКД - непонятно? То есть никто из пользователей отчета не меняет группировки и измерения с показателями (ресурсами). Только лишь отборы накладывают.
ПС. СКД это следующее поколение ПостроителяОтчета. В целом СКД нужно и полезно. И круто, наверное! В других средах разработки подобного нет, кажется.
Уф, написал :)
9. seperblunt 27.02.25 23:02 Сейчас в теме
п.3 хорошая штука, но много отчетов имеют еще какую то доп обработку "ПриКомпановкеРезультата". В таком случае не прокатит ведь?
38. seperblunt 28.02.25 13:23 Сейчас в теме
(9) товарищи, кто в теме. скажите, а есть все таки универсальный способ снять данные с скд отчета, в общем случает, т.к. и в таком, если он имеет доп. обработку "ПриКомпановкеРезультата"?
т.е. передаю ключ варианта и параметры, получаю ТаблицуЗначений
11. BackinSoda 28.02.25 00:54 Сейчас в теме
Любить скд до тех пор пока очередной отчет из серии "хочу как в экселе" не заставит задуматься, что проще это сделать на классическом табличном документе
12. quazare 3877 28.02.25 06:14 Сейчас в теме
Каких только заголовков непонапишут 1с-ники, прежде всего для того, чтобы убедить себя, что они гуру в том вопросе )))
13. quazare 3877 28.02.25 06:20 Сейчас в теме
Давно я статей что-то не писал, надо восполнить этот момент
14. maksa2005 556 28.02.25 06:45 Сейчас в теме
Спасибо . Прочитал. Скд не люблю от слова совсем. Вечно гемор и отлаживать надо в ИР. Полезное для себя подчеркнул как функция экспорта в выражении. Чить приятно, но скд...фу её
17. apic 15 28.02.25 07:44 Сейчас в теме
Из всего написанного понял только 1 и 2, и 1-й пункт действительно полезная фича, а 2-ой вообще не понимаю что здесь делает - кому надо, тот пользуется, навряд ли кто то не знает о возможности использования методов из общих модулей. Я бы во второй пункт добавил, что можно использовать общий модуль с галочкой повторного использования - тогда удается сильно ускорить формирование отчета, т.к. СКД вызывает ваш метод множество раз, не смотря на то что вы обратились к нему всего из одного поля, но СКД слишком сложная штука и ваш метод будет вызван не столько раз сколько у вас строк в отчета, а на порядок раз больше и использование модулей с повторным использованием сильно спасает. А все остальные пункты написаны слишком поверхностно и далеко не все их поймут, даже мало-мальски опытные разработчики, но это мое мнение.
RustIG; Brawler; webester; +3 Ответить
18. user938650 28.02.25 07:44 Сейчас в теме
Спасибо. Полезно. Но можно чуток изменить публикацию, чтоб картинки пошире открывались, прям не удобно.
20. RocKeR_13 1382 28.02.25 09:16 Сейчас в теме
Тоже очень люблю СКД во всех его проявлениях) Пункт 4 вообще стал основной для отдельного блока расчета премий в КА
21. alex_sayan 56 28.02.25 09:45 Сейчас в теме
Не надо запихивать в один отчёт всё что можно, и ещё ужа с ежом. Это плохая практика
22. RocKeR_13 1382 28.02.25 09:52 Сейчас в теме
(21) Осталось это донести клиентам) Есть одни клиенты, которым делали отчеты с проверкой различных действий в конце месяца. Готовы были на все, лишь бы это было в одном отчете.
24. alex_sayan 56 28.02.25 09:55 Сейчас в теме
(22) а зачем слепо идти на поводу хотелок клиентов? Надо быть профессионалом, умеющим говорить "нет". Ты же врачу не указываешь, как он должен тебя лечить
26. RocKeR_13 1382 28.02.25 10:14 Сейчас в теме
(24) Ну если работаете на себя, то может такое и прокатит. Когда во франче прилетает подобный заказ с хорошей стоимостью и никакие доводы клиента не могут переубедить отказаться от него, то вступает в действие принцип "клиент прав". Аналогия с врачами неверная, тут скорее подходит аналогия с пластическими хирургами: если клиент утверждает, что ему нужно что-то увеличить, то ему это что-то в итоге увеличат, невзирая на доводы хирурга, что так будет некрасиво или неудобно.
27. alex_sayan 56 28.02.25 10:41 Сейчас в теме
(26)
и никакие доводы клиента не могут переубедить отказаться от него

Значит доводы слабые. А скорее всего никто и не пытался отговаривать клиента. Это непрофессионально
28. RocKeR_13 1382 28.02.25 11:10 Сейчас в теме
(27) Непрофессионально делать выводы заочно, будучи вообще не в курсе ситуации.
poor_developer; +1 Ответить
29. alex_sayan 56 28.02.25 11:19 Сейчас в теме
(28) так ты сам рассказал ситуацию.
Готовы были на все, лишь бы это было в одном отчете
30. RocKeR_13 1382 28.02.25 11:26 Сейчас в теме
(29) И вы из этого сделали вывод, что

"скорее всего никто и не пытался отговаривать клиента"

и
"доводы слабые"


Супер, вы, видимо, владеете какими-то сверхспособностями)
31. alex_sayan 56 28.02.25 11:38 Сейчас в теме
(30) ну так сделали, значит плохо отговаривали. Если пластический хирург пришил клиенту енг на лбу, значит клиент прогнул его на это. Очевидно же
А про "скорее всего и не пытались отговорить" я тоже не на ровном месте написал. В 9 из 10 случаев так и происходит. Некоторые вообще готовы любую дичь сотворить, лишь бы деньги заплатили, а дальше хоть трава не расти
34. RocKeR_13 1382 28.02.25 12:05 Сейчас в теме
(31) тем не менее вы всё же не в курсе, как происходило общение и какие доводы приводились. Принципиальность, повторюсь, вы можете проявлять в своей собственной компании. У нас же в стране, нравится это кому-то или нет, капитализм со всеми вытекающими. Хотят отчеты, несмотря на предупреждения о потенциальных проблемах с производительностью (а они были даже продемонстрированы) - ну можете пойти на конфликт с руководством и проявить принципиальность, отказавшись от задачи. По мне так - главное в этом случае для самого себя продолжать не считать ту или иную реализацию нормой. Далеко не все коммерческие организации разделяют такую принципиальность, которая прямо ведет к потере выручки или постоянного клиента.

З.Ы. Но это еще не самая дичь. Самая дичь от того же клиента - это автоматическая выгрузка согласованных заявок на списания с р/с в DirectBank. Лет 5 клиент периодически возвращается к этой задаче, но всё-таки здравый смысл не до конца его покинул: возможная прямая потеря денежных средств действует всё же лучше, чем потенциальные затраты вследствие зависшего сервера)
35. alex_sayan 56 28.02.25 12:52 Сейчас в теме
(34) ладно. Но в следующий раз чти принцип KISS (делай проще), и клиенту по лицу хлещи этим принципом
36. RocKeR_13 1382 28.02.25 12:59 Сейчас в теме
(35) рандомных клиентов, которые приходят с подобной дичью, обычно и посылаем другой дорогой) С давними абонентщиками приходится проявлять иногда гибкость. Чаще, конечно, удается дать встречное предложение, более оптимальное, и они даже "за" рациональный подход. Но иногда вот так.

З.Ы. Кстати, работает иногда вариант с затягиванием оценок и обсуждений дичи, но тогда им дичь делают другие, а тебе приходится это все сопровождать, так как с авторами дичи они не хотят больше работать))) Да простоят нас за уже оффтоп)
42. qwinter 684 28.02.25 15:49 Сейчас в теме
(21) Что это? Время = деньги. Сформировать 5 отчетов всегда дольше чем 1 (хотя бы потому что форма отчета будет 5 раз открываться). Другое дело, что вариант представленный в статье не стоит использовать, а программное формирование через вложенные схемы с помещением туда схем из других отчетов очень даже.
43. alex_sayan 56 28.02.25 16:07 Сейчас в теме
(42) программистское время не деньги? Автор нарисует отчет и уйдёт в закат, а последователям придётся тратить много часов на:
а) понять как так вообще всё устроено
б) протащить новую логику через все эти хитросплетения настроек
44. qwinter 684 28.02.25 19:10 Сейчас в теме
(43) Какие еще хитросплетения? Это элементарнейшее решение, быстрое и простое. Новую логику вообще не надо "протаскивать".
45. alex_sayan 56 28.02.25 19:29 Сейчас в теме
(44) быстрое и простое оно только для тебя как автора, когда отчет создается с чистого листа. Для другого разработчика уже нифига не простое. Ему придётся долго и больно раскуривать, чего и зачем ты накрутил в этом комбайне.

А как ты будешь дорабатывать этот отчёт без протаскивания в него новой логики? Завтра юзер возжелает новых полей, и придётся это всё протаскивать через наборы данных, вычисляемые поля, ресурсы, структуру... И это всё плохо ложится, приходится программно что-то хитрить. Посмотри, например, отчет по расчетным листкам в ЗУП. Там та ещё СКДшная содомия. Хотя всё можно было сделать гораздо проще
23. alex_sayan 56 28.02.25 09:52 Сейчас в теме
Эти преимущества приводят к идее - а почему бы не использовать отчеты, как основные "кирпичики" в построении нашей системы?

Ужасная идея. Отчёты базируются на примитивном 1сном SQL, адаптивность которого во много раз ниже, чем у кода на встроенном языке
25. quazare 3877 28.02.25 10:07 Сейчас в теме
ни разу не сказано о применении СКД как гибких-любых отборов... поднималась эта тема неоднократно https://infostart.ru/1c/tools/1877169/
32. Brawler 460 28.02.25 11:44 Сейчас в теме
Наверное мало кто задумывается над принципом "чем проще, тем лучше".

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

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

СКД хорошо, но то как его используют многие, соревнуясь видимо на некой олимпиаде, кто еще сильнее вывернется наизнанку ФУ
RustIG; DmitryKSL; alex_sayan; +3 Ответить
37. alex_sayan 56 28.02.25 13:08 Сейчас в теме
(32) особенно в ЗУПе нагородили монстров СКДшных
seperblunt; +1 Ответить
41. qwinter 684 28.02.25 15:11 Сейчас в теме
Таскать с собой целый общий модуль при том, что это легко выполняется силами СКД? Серьезно??? Неужели это так сложно потратить несколько часов на изучение всех агрегатных функций???

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

Да и вообще статья из разряда "вредные советы"...
Оставьте свое сообщение