0. YPermitin 8323 18.09.19 22:30 Сейчас в теме

СКД не только для отчетов

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

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. leosoft 145 18.09.19 23:21 Сейчас в теме
Спасибо, очень полезная информация! Пишите еще :)
maxopik2; +1 Ответить
2. Жолтокнижниг 250 19.09.19 00:27 Сейчас в теме
(0) Идея описанная в статье правильная.

Но пример так себе
1. Использование СКД при часто выполняемых операция - просадка производительности
2. Предоставление пользователю очень гибкого инструмента - потеря контроля, неожиданное поведение и опять же вероятная просадка производительности.
Drivingblind; frkbvfnjh; ДимокШ; alexeyvs77; bulpi; zqzq; Irwin; YPermitin; +8 Ответить
6. VmvLer 19.09.19 09:26 Сейчас в теме
(2) согласен и с 1 и с 2.
YPermitin; +1 Ответить
8. YPermitin 8323 19.09.19 10:12 Сейчас в теме
(6) со всем согласен. Об этом даже в статье отметил. Подходить нужно разумно.
3. rpgshnik 2156 19.09.19 03:03 Сейчас в теме
Ещё можно концепты печатных форм мутить :) мне лично быстрее печатную форму накидать в СКД чем макет выравнивать, да она формироваться может подольше, но когда идёт внедрение удобно пока их оставить в таком состояние и позже сделать нормальную форму, которая к тому времени уже при терпит ряд множество. Именно для этих целей сделал макет - https://infostart.ru/public/1021869/ :)
molodoi1sneg; AllexSoft; FesenkoA; YPermitin; acanta; +5 Ответить
4. feva 396 19.09.19 07:43 Сейчас в теме
Идея не свежа, но материал представлен хорошо!
YPermitin; +1 Ответить
5. Darklight 22 19.09.19 09:06 Сейчас в теме
Конечно же СКД можно применять не только для отчетов и прочих интерфейсных выводов - вот только очень неудобно - в силу плохой проработки у СКД программного API и очень ограниченных возможностей "повторного использования кода". Ну, и тяжёлый движок плохо подходит там, где нужна высокая производительность - хотя тут есть разные способы выкрутиться - но все они через одно место.

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

Единственное - чего очень не хватает - это поддержки составных группировок (из нескольких полей) - вот это действительно большой недостаток. Ну и отборы тоже несколько менее гибкие (нет групп условий и условий "НЕ" и "ИЛИ"; нет вида сравнения "Заполнено"/Незаполнено очень удобного для полей составных типов).

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

А для программного использования - лично я считаю, что нужно вообще принципиально иную схему выборки данных развивать - я её называю "Реквест концепт", может как-нибудь изложу в статье. Основная суть - это 4 этапа подготовки и 6 этапов обработки:
1. Описание комплексных источников данных - первичных таблиц для выборки (когда они отличны от таблиц метаданных)
2. Сбор реквестов - требований выборки - что, от куда и в каком виде нужно получить
3. Сбор блокировок - описаний условий наложения блокировок
4. Регистрация получаителей (обработчиков) - алгоритмов, которые будут построчно обрабатывать связанные с ними выборки из комбинации реквестов - требоания обработчиков (тут же указывается и конечный формат получения данных)

4. Комбинирование источников и реквестов (таблиц, условий и полей) - с формированием оптимальных запросов выборки данных и выборка данных (при этом, по возможности, все данные стараются выбираться в СУБД и храниться там во временных таблицах).
6. Осуществление выборки данных (в т.ч., по возможности, параллельной)
5. Наложение блокировок (могут быть отложены и выполнены после частичной выборки - когда зависят от данных выборки)
7. Инициализация обработчиков получателей
8. Построчная передача результатов выборок зарегистрированным получателям (в соответствии с их требованиями)
9. Финализация получателей

На первых 3-ъх этапах ещё могут быть заданы взаимные зависимости - когда одни источники/реквесты/получатели будут зависить от отработки других - и не могут быть получены независимо - приоритезация последовательности выполнения
dvsidelnikov; YPermitin; +2 Ответить
7. karpik666 2845 19.09.19 09:30 Сейчас в теме
Как туториал по скд, может быть, однако реализация задачи ужасна, что мешает завести флажок в группе номенклатуры «вести историю изменения», и проверять родителя по нему и убрать вообще запрос «в иерархии»?
9. YPermitin 8323 19.09.19 10:14 Сейчас в теме
(7) за пример не бить, он примитивный. Все самое интересное в типовых. Объем публикации ограничен)
davdykin; +1 Ответить
10. Поручик 4395 19.09.19 13:34 Сейчас в теме
В нашей конфигурации программная генерация и выполнение СКД сплошь и рядом.
YPermitin; +1 Ответить
11. lmnlmn 58 19.09.19 14:21 Сейчас в теме
Освоив программную работу с СКД стал активно ее использовать вместо запросов для выборок данных. Вплоть до того что получаю через СКД данные в таблицу значений, обрабатываю и подсовываю в другую СКД для компоновки отчета. Надо бы обертки какие-то написать под типовые задачи типа установки параметров и отбров, но руки не доходят.
YPermitin; +1 Ответить
12. ids79 5381 19.09.19 19:00 Сейчас в теме
Спасибо, Юрий. Интересная тема. Можно также реализовать проверку реквизитов при записи документов используя СКД, да кучу всего.

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

Отдельное спасибо за ссылки на мои статьи )).
YPermitin; +1 Ответить
13. Prince_1 4 20.09.19 11:01 Сейчас в теме
Интересная статья!
YPermitin; +1 Ответить
14. Nefilimus 67 20.09.19 15:31 Сейчас в теме
Спасибо за интересную статью. Зачерпал некоторую новую информацию =) Спасибо
YPermitin; +1 Ответить
15. igo1 227 20.09.19 20:22 Сейчас в теме
Доброго
тоже хотел написать статью с таким же смыслом, применил СКД для работы с билингом, 1 отчет, а проверки по все БД.
-проверка сумм
-вывод в отче
-проверка количества
-проверка сроков
-проверка расходов .....
YPermitin; +1 Ответить
17. YPermitin 8323 20.09.19 20:56 Сейчас в теме
(15) я думаю, что в любом случае можно статью написать.
ИС от этого только выйграет.
16. triviumfan 16 20.09.19 20:34 Сейчас в теме
Очередной баян, жаль нету баянометра. А сколько благодарностей ...я в шоке.
Yashazz; Alexx48; YPermitin; +3 Ответить
18. YPermitin 8323 20.09.19 20:56 Сейчас в теме
19. bulpi 173 20.09.19 22:57 Сейчас в теме
Как и все, что связано с СКД, очень сложно. Гора родит мышь - без использования СКД все получается гораздо проще.
YPermitin; +1 Ответить
20. DedMoroz1983 23.09.19 09:18 Сейчас в теме
Это вариант, будем пробовать.
YPermitin; +1 Ответить
21. Alexx48 23.09.19 09:46 Сейчас в теме
Почему бы в константу просто не добавить группу "Группа - 1" и не городить с СКД?
YPermitin; +1 Ответить
23. YPermitin 8323 23.09.19 17:53 Сейчас в теме
(21) посыл был в том, что условия могут меняться. А в простых случаях конечно можно и константой.
22. Yashazz 3199 23.09.19 17:50 Сейчас в теме
Идея, конечно, чудовищный баян и давно очевидна, но статья хороша - проста и понятна, для новичков, наверное, самое то. Времена сейчас такие на ИС - множество неофитов радостно плюсует очевидности и баяны, т.к. для них это всё откровение свыше)

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

Инициализация СКД действительно провальный момент с точки зрения производительности, хоть как её делай. Приходится кэшировать.
YPermitin; +1 Ответить
24. YPermitin 8323 23.09.19 18:10 Сейчас в теме
(22) думаю, что нужно порадоваться за тех, кто узнал что-то новое в статье :) Все мы когда-то были новичками, главное об этом не забывать.

Можно, конечно, писать все время хардкорные статьи про производительность, индексы, кластеризацию, интеграцию с .NET, компоненты на C++, как прикрутить Assembler к 1С и т.д. Но иногда и это надоедает :)
dvsidelnikov; acanta; +2 Ответить
25. Yashazz 3199 23.09.19 18:12 Сейчас в теме
Когда я был новичком, не было ни ИС, ни подобных статей. И нам никто не помогал продираться через эти дебри. А теперь появляются "пионэры", которые пару таких статей прочитали, свет в глазах воссиял, и айда называть себя "программистами 1С" да требовать шестизначную зарплату... С одной стороны, это плохо, ибо роняет планку профессии ниже плинтуса, а с другой - хорошо, ибо за такими горе-спецами требуется починка и можно взять здорово дороже)
YPermitin; +1 Ответить
26. YPermitin 8323 23.09.19 18:36 Сейчас в теме
(25)
Когда я был новичком


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

Зато во времена без инструкций всегда был простор для экспериментов :) Хотя, если сейчас захотеть, то тоже можно.
narutouzumaki_13; AllexSoft; +2 Ответить
27. Yashazz 3199 23.09.19 18:39 Сейчас в теме
(26)
если сейчас захотеть, то тоже можно

Естественно, только вот вопрос времени. Когда всё разжёвано и в рот положено - время сэкономлено, а когда мы осваивали ХДТО безо всяких примеров и руководств - времени ушло масса, и мне его никто не вернёт...
acanta; AllexSoft; YPermitin; +3 Ответить
28. YPermitin 8323 23.09.19 18:45 Сейчас в теме
(27) согласен. Но и времени за статьи мне никто не вернет. Это просто хобби! Как и все программирование.
30. Fruit83 28 27.09.19 16:56 Сейчас в теме
(27) Да, этот факт оправдывает ваше старческое брюзжание :)
narutouzumaki_13; +1 Ответить
29. AllexSoft 24.09.19 13:47 Сейчас в теме
Из нестандартного делал такую задачу на СКД, нужно было написать механизм обмена с внешней базой (по COM), причем таким образом что бы пользователь сам делал сопоставление объектов с произвольными условиями. Если конкретнее то из БП некоторые данные (например по амортизации) загружаются в управленку где бюджетирование, и должна быть группировка по группам статей с условиями и статьи затрат в БП и УУ не совпадают, то есть нужны правила сопоставления. Вот условия сопоставления статей были написаны на СКД, на пользовательских полях (их можно вычислять с произвольным условием) - одно пользовательское поле = одна группа статей.
Nefilimus; YPermitin; +2 Ответить
31. YPermitin 8323 27.09.19 16:57 Сейчас в теме
32. duhin 26.03.20 04:59 Сейчас в теме
Вставлю свои 5 копеек по поводу возможности редактировать настройки СКД на стороне предприятия. Сначала это производит вау эффект, наблюдал его у многих, считая себя. А потом выясняется, что если пользователь изменил настройки, а мы изменили отчет, то мы получаем кучу ужасных и часто трудно диагностируемых багов. Отказались от сущестенного редактирования настроек на стороне предприятия. Отбор люди устанавливают конечно, но даже умолчательный отбор делается в конфигураторе. Программирование на стороне предприятия на неофита производит вауэффект, якобы бездны открываются. Но ценность околонулевая, конечно из мего опыта, не претендуя на абсолютную истину. Есть очень узкие ниши для кода на стороне предприятия, пожалуй только работа со сложными спецификациями изделий приходит в голову.
YPermitin; +1 Ответить
33. for_sale 856 26.03.20 06:43 Сейчас в теме
// Тут нужно на крайний случай использовать поиск по GUID
// TODO: НИКОГДА! НИКОГДА ТАК НЕ ДЕЛАЙТЕ!
	// Поиск по GUID - последнее дело при разработке :)
	
34. YPermitin 8323 26.03.20 06:55 Сейчас в теме
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Специалист линии консультаций 1С
Санкт-Петербург
Полный день

Специалист 1 категории (Методист-аналитик 1С)
Фрязино
зарплата от 100 000 руб.
Полный день

Главный архитектор 1С
Москва
зарплата от 200 000 руб. до 300 000 руб.
Полный день

Программист 1С
Новороссийск
зарплата от 70 000 руб.
Полный день

Ведущий программист 1С
Санкт-Петербург
зарплата от 130 000 руб.
Полный день