Быстрое формирование наборов данных Объект схемы СКД

Публикация № 1260285

Разработка - Практика программирования

СКД набор данных объект формирование

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

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

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

СКД легко позволит это сделать, набор данных Объект подходит великолепно. Только данные менеджера временных таблиц нужно сначала преобразовать в таблицы значений. Это сделать совсем несложно.

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

 
 Программный код

Достаточно скормить функции СоздатьСхемуКомпоновкиДанных() ваш менеджер временных таблиц, или структуру с таблицами значений, или просто таблицу или дерево значений, или текст запроса, или сам запрос – вы получите схему компоновки данных, содержащую описание наборов данных:

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

На рисунке показана схема, сформированная по запросу из процедуры заполнения квартальной РСВ в ЗУП 3.1, состоящая из 73! временных таблиц.

Отчет, прилагаемый к публикации, иллюстрирует приведенный пример наглядно – формирует и открывает в конструкторе сформированную схему.

Запускать в толстом клиенте. Тестировалось в ЗУП 3.1.14.55 на платформе 8.3.16.1063

За основу взята разработка из публикации Пример универсальной функции для создания схемы компоновки данных (автор dbachinsky).

Для «облагораживания» заголовков формируемых полей в наборах данных использована чуть модифицированная (и не без костылей) функция из публикации Функция Синоним для наименования (автор nick-max).

Скачать файлы

Наименование Файл Версия Размер
Быстрое формирование наборов данных Объект схемы СКД:

.erf 25,63Kb
04.07.20
4
.erf 25,63Kb 4 Скачать

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. kirill_sh 06.07.20 12:26 Сейчас в теме
2. the1 585 06.07.20 21:27 Сейчас в теме
Я перешел на использование менеджера временных таблиц в СКД вместо Объекта, гораздо удобнее получается
sapervodichka; +1 1 Ответить
3. Yashazz 3301 07.07.20 06:53 Сейчас в теме
(2) Далеко не у всех 17-й релиз

А вообще я такое десять лет назад уже активно юзал. Ничего нового под Луной)
5. Алексей Воробьев 84 07.07.20 07:10 Сейчас в теме
(3) Вопрос не в новизне решения :-)
Я взял за основу достаточно старую публикацию, несложное решение из которой использовал не раз, за что благодарен ее автору. Он помог сэкономить мне время.
Я добавил, по сути, к этой публикации несколько строчек. И тоже не только своих.
Если эта моя публикация поможет еще кому-то сэкономить понемногу времени, то буду считать, что цели своей добился...
Fox-trot; +1 Ответить
6. Yashazz 3301 07.07.20 08:24 Сейчас в теме
(5) Тогда будьте любезны указать ссылку на "достаточно старую публикацию", а то слегка так плагиатом попахивает...
8. Алексей Воробьев 84 07.07.20 09:01 Сейчас в теме
(6) Возможно, вы не заметили, но ссылки на использованные публикации, приведены в конце моей с указанием ссылок на профили авторов.
9. Yashazz 3301 07.07.20 09:06 Сейчас в теме
(8) Опаньки. Виноват, и правда проскроллилось как-то. Вопрос снят, извиняюсь.
4. Алексей Воробьев 84 07.07.20 06:58 Сейчас в теме
(2) То, о чем вы говорите, немного "из другой оперы". Временные таблицы из менеджера сейчас (с 8.3.17) можно использовать в запросах наборов данных СКД "без лишних объяснений". Такое использование предполагает дополнительную обработку таблиц в запросах наборов данных.

Чтобы, имея уже готовую таблицу значений, использовать ее в СКД с помощью этой новой возможности, нужно в отдельном запросе перегонять ее во временную таблицу, а потом использовать ее уже в запросе набора данных. "Напрямую" в виде набора данных ее использовать не получится.
Здесь же речь о возможности быстро сформировать наборы данных СКД на основании готовых таблиц. Или, в случае использования менеджера временных таблиц, дополнительная обработка которых не требуется, выгрузить эти таблицы в таблицы значений и опять таки использовать их непосредственно в виде наборов данных СКД.
11. the1 585 07.07.20 12:47 Сейчас в теме
(4)
в отдельном запросе перегонять ее во временную таблицу, а потом использовать ее уже в запросе набора данных. "Напрямую" в виде набора данных ее использовать не получится

Ну, Вы прям жути нагнали)) Фактически все действия займут 4 строки кода:
Запрос = Новый Запрос("ВЫБРАТЬ * ИЗ &ТЗ КАК Т");
Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
Запрос.УстановитьПараметр("ТЗ", ТЗ);
Запрос.Выполнить();

Всё, можно использовать "в виде набора данных".
12. Алексей Воробьев 84 07.07.20 12:57 Сейчас в теме
(11) Вопрос не в перегонке, тут действительно все тривиально. А в последующем использовании в наборе: временная таблица есть в МВТ, а описания ее полей в наборе нет.
Нужно в наборе-запросе рисовать запрос к таблице МВТ, расписывая "звездочку" во все нужные поля и автозаполнять поля набора. Или воспользоваться методом из публикации, чтобы заполнить поля из ТЗ, не делая промежуточных движений с МВТ...
15. the1 585 07.07.20 14:43 Сейчас в теме
14. Yashazz 3301 07.07.20 14:25 Сейчас в теме
(11) Нифига. Надо ещё проверить типизацию колонок и содержимое, а то многим из наполняющего таблицу значений МВТ подавиться может, а кое-что может исказить.
Алексей Воробьев; +1 Ответить
16. Алексей Воробьев 84 07.07.20 15:06 Сейчас в теме
(14) Согласен, не учел такие доп. расходы времени. Просто расписать "звездочку" действительно мало...
7. Yashazz 3301 07.07.20 08:27 Сейчас в теме
Ну и нафига все эти ФОМСы, непонятно, кому оно надо... Делаете репост, так хоть выкиньте неуниверсальное. А то как дипломник, скачавший чужой диплом и выдающий его за свой, и даже не озаботившийся убрать совсем посторонние фрагменты.

...и не стыдно людям такое выкладывать, вот ё-моё...

А мой код 10-летней давности вот: https://infostart.ru/public/1133780/ - как ни странно, актуален и полезен по сей день.
10. Алексей Воробьев 84 07.07.20 09:21 Сейчас в теме
(7) Это не "неуниверсальное". Этот код - костыли, про которые я упоминаю в конце публикации. И эти костыли нужны в рамках рассмотренного мной примера в файле публикации. И нужны в опубликованном коде, для понимания того, что именно за "костыли" я упомнянул.
Я не позиционировал это решение как однозначно универсальное :-) Только, возможно, за это и стыдно - что не нашел универсального решения без "костылей".

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

Я однозначно рад актуальности вашего кода 10-летней давности. Меня, более того, это восхищает.
Особенно в рамках того печального соображения, что имея опыт разработки только в 1С более 15 лет (с 7.7 еще) я все еще часто хочу и иногда переписываю свой код всего лишь годовалой давности просто потому, что случайно на него напоролся и он мне перестал нравится. Ну, это когда времени хватает...

В приведенной вами вашей же публикации с актуальным и полезным кодом отдельного внимания заслуживают некоторые комментарии. И ваши ответы на них тоже. Весьма экставагантные подходы к критике "универсального" кода.
Но, в любом случае, пред вашим вкладом в развитие сообщества - снимаю шляпу...
13. Yashazz 3301 07.07.20 14:23 Сейчас в теме
(10)
я все еще часто хочу и иногда переписываю свой код всего лишь годовалой давности просто потому, что случайно на него напоролся и он мне перестал нравится. Ну, это когда времени хватает...
о да, это и у меня любимое занятие, но именно когда сил и времени хватает. Знакомое явление. Я даже как-то свой код, вытащенный с 7.5 на 7.7, писанный ещё году в 98-м, заманьячился на таблицы значений переводить)
Оставьте свое сообщение

См. также

Вам нравятся запросы в 1С? Промо

Практика программирования Разработка v8 v8::Запросы 1cv8.cf Абонемент ($m)

Речь не только о том, что простейший запрос с "легальным" оформлением растянется на пол-экрана, речь еще обо всем, что нужно написать "в нагрузку" к тексту запроса. Все эти "Новый Запрос", "УстановитьПараметр" и последующие пляски с обработкой результата... Пора с этим заканчивать!

1 стартмани

03.07.2019    18578    4    m-rv    86    

Построение графика в диапазоне изменений без точек

Практика программирования v8::СКД 1cv8.cf Россия Абонемент ($m)

График изменений каких-либо величин во всем диапазоне и в области изменения, без точек.

1 стартмани

30.05.2020    894    1    yc_2011    4    

Метод восстановления битых ссылок в настройках СКД при консольно-конфигураторной разработке отчетов

Практика программирования Прочие инструменты разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

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

1 стартмани

30.04.2020    2507    0    zaxarovsky    4    

Получение курса валюты за период с помощью СКД

Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

04.02.2020    2214    0    KawaNoNeko    2    

Преобразование объекта Отбор компоновки данных в Запрос

Практика программирования Прочие инструменты разработчика v8::УФ v8::Запросы v8::СКД 1cv8.cf Абонемент ($m)

Преобразует объект Отбор компоновки данных в объект Запрос (с заполнением текста и параметров).

1 стартмани

20.12.2019    3045    3    okon-teh    2    

Проверка несуществующих полей в настройках СКД

Практика программирования Работа с интерфейсом Разработка v8 v8::СКД ERP2 УТ11 КА2 Абонемент ($m)

Обработка находит все поля настроек СКД, которые утратили свою актуальность Подходит для УТ 11, ERP, КА 2.

1 стартмани

20.06.2019    4106    3    MuI_I_Ika    2    

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

Инструментарий разработчика Практика программирования v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Разрабатывалась на 1С:Зарплата и управление персоналом в кредитных организациях, редакция 3.1 (3.1.5.407), поэтому использует типовой отчет Состояние штатного расписания, но технология работает для любой конфигурации. Пример внешней обработки с вызовом типового отчета на СКД "Состояние штатного расписания" и передачей ему настроек, изменения имен колонок после выполнения на имена указанные в "Пользовательских полях" или "заголовках" и вывода результата в таблицу значений.

1 стартмани

21.03.2019    5457    11    pavel_pss    0    

ВСТАВИТЬ В Справочник.Номенклатура (Код, Наименование) ЗНАЧЕНИЯ ("001", "Новый товар") Промо

Практика программирования v8 v8::Запросы 1cv8.cf Абонемент ($m)

Вас не обманывают ваши глаза, это запрос на изменение данных! И это работает без прямого доступа к БД, регистрации и смс.

1 стартмани

01.06.2018    28877    86    m-rv    57    

Вывод характеристик и их значений в динамический список

Практика программирования Разработка v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Если в запросе динамического списка используется конструкция {ХАРАКТЕРИСТИКИ ...}, то как вывести на форму колонки с характеристиками?

1 стартмани

22.02.2019    5249    2    kasper076    3    

Модуль, реализующий хранение настроек отчетов СКД в типовом регистре "Сохраненные настройки"

Практика программирования v8 v8::СКД КА1 БП2.0 ЗУП2.5 УТ10 БП1.6 Абонемент ($m)

Модуль, обеспечивающий хранение настроек отчетов на СКД в типовом регистре "Сохраненные настройки", присутствующем в конфигурациях УПП 1.2, 1.3, УТ 10.3, БП 2.0 и т.д.

1 стартмани

12.01.2019    5672    0    lunjio    0    

Передача набора данных типа Объект в отчет СКД

Практика программирования v8 v8::УФ v8::СКД 1cv8.cf Россия Абонемент ($m)

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

1 стартмани

12.11.2018    24633    5    evgen7938    4    

Работа с публикациями "Инфостарт"

Практика программирования О сообществе WEB v8 УУ Абонемент ($m)

Работа с рублевыми публикациями на сайте "Инфостарт": ведение клиентов, заказов, обновление файлов публикации, рассылка обновлений.

1 стартмани

13.09.2018    20180    13    RocKeR_13    16    

Позиционирование в помещении с помощью нейросети по сигналу Wi-Fi. Интерактивная карта склада в 1С с показом позиции

Инструментарий разработчика Практика программирования v8 Абонемент ($m)

Данная публикация содержит в себе редактор и интерактивную карту склада или иного помещения, на которой в реальном времени отображается позиция устройства, координаты которого вычисляются по уровням сигнала нескольких роутеров Wi-Fi. В статье и приложенным к ней разработкам предлагаются инструменты и методика для реализации вычисления точной геопозиции внутри помещений с помощью нейронной сети. Конфигурация написана на релизе 1С:Предприятие 8.3.12.1412, клиентское приложение имеет минимальный уровень совместимости SDK -16.

5 стартмани

09.08.2018    26221    26    informa1555    26    

Работа с данными выбора

Практика программирования Работа с интерфейсом v8 Россия Абонемент ($m)

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

1 стартмани

17.07.2018    42211    17    kalyaka    16    

Заполняем по шаблону (по умолчанию) Промо

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

08.02.2018    26618    19    mvxyz    17    

Полезные примеры составления схемы компоновки данных #2

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Еще один набор примеров как решить частные задачи в СКД

1 стартмани

22.05.2018    28342    11    SITR-utyos    13    

Условное оформление дерева значений на управляемой форме

Практика программирования Работа с интерфейсом v8::УФ v8::СКД 1cv8.cf Абонемент ($m)

Пример использования условного оформления дерева значений для создания красивого фильтра на форме.

1 стартмани

28.04.2018    14746    22    Kutuzov    0    

Пользовательские макеты для внешних печатных форм (обработок)

Практика программирования Универсальные печатные формы v8 v8::СКД 1cv8.cf Россия Абонемент ($m)

Расширение БСП по реализации механизма пользовательских макетов для обработок внешних печатных форм.

2 стартмани

05.03.2018    17166    13    simy4    13    

Альтернатива ОтборуСтрок() с возможностями условий отборов СКД

Практика программирования v8 v8::СКД 1cv8.cf Абонемент ($m)

Типовой ОтборСтрок() использует только условия на равенство. Для таблицы формы, источником которой является "ДеревоЗначений" возможность отбора вообще отсутствует. Но есть возможность использовать всю широту возможностей отборов СКД.

1 стартмани

04.02.2018    6428    1    mszsuz    5    

Печатная форма, сделанная как расширение конфигурации для БП 3.0. Новые возможности БСП

Практика программирования Универсальные печатные формы v8 БП3.0 Абонемент ($m)

Печатные формы на внешних обработках скоро канут в лету. На смену им приходят ПФ, реализованные в виде расширений конфигурации. Не нашел на сайте примеров таких расширений. Привожу пример подобного расширения для БП 3.0.

1 стартмани

06.12.2017    25535    49    kwazi    6    

Макет в СКД - пример всех возможных типовых вариантов

Практика программирования Инструментарий разработчика v8 v8::СКД 1cv8.cf Абонемент ($m)

Макет СКД: наглядное представление того, что, как и куда выводится при типовых настройках.

1 стартмани

09.11.2017    20450    76    freelancer    4    

Нечеткий поиск одним запросом Промо

Практика программирования v8 1cv8.cf Абонемент ($m)

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

1 стартмани

28.12.2015    26015    67    vasvl123    9    

Расширения конфигураций 1С: учимся перехватывать методы

Практика программирования v8 v8::УФ 1cv8.cf Абонемент ($m)

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

1 стартмани

30.05.2017    120274    13    signum2009    46    

1С: Предприятие + корпоративный чат, как наладить оперативные уведомления за 10 минут Промо

Практика программирования v8 Абонемент ($m)

Как сделать автоматические уведомления о разных событиях из 1С в корпоративный чат MyChat для сотрудников компании

1 стартмани

14.08.2016    46290    36    Demanoidos    60    

Быстрое определение интервалов в запросе Промо

Практика программирования v8 Абонемент ($m)

В статье описывается новый метод определения интервалов между данными различных записей в запросе. В отличие от общеизвестного метода, время работы предлагаемого метода зависит от объема данных ЛИНЕЙНО. Это обеспечивает ему значительный выигрыш по быстродействию на больших объемах данных. В качестве иллюстрации возможностей метода приведен отчет, показывающий гистограмму распределения времени между продажами.

1 стартмани

01.10.2015    49381    35    ildarovich    41    

Хранение файлов в томах на диске (для УПП 1.3) Промо

Практика программирования v8 УПП1 Абонемент ($m)

Доработка типовой УПП 1.3 в плане хранения присоединенных файлов вне базы данных

2 стартмани

05.06.2016    54467    7    wowik    32