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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

См. также

FormCodeGenerator Программная доработка форм. Часть 2 (Режим работы "Режим сравнения форм") на примере ERP 2.5 Промо

Практика программирования Адаптация типовых решений Прочие инструменты разработчика v8 1cv8.cf Абонемент ($m)

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

5 стартмани

21.12.2020    4676    19    huxuxuya    11    

Свойства общих модулей

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

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

1 стартмани

14.04.2021    859    1    kuzyara    3    

Отчет с настройкой роли поля СКД со свойством период

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

Отчёт демонстрирует правильную настройку роли СКД со свойством «Период», по которой рассчитывается остаток. Этот отчет тестировался на конфигурации Управление торговым предприятием для Казахстана, редакции 2.0.19.2. Может работать на любой конфигурации, если имеется регистр накопления «ТоварыНаСкладах».

1 стартмани

01.04.2021    916    0    softmaker    0    

Примеры использования функций СКД Массив (Array) и СоединитьСтроки (JoinStrings) в отчётах 1С 8

Практика программирования v8::СКД Платформа 1C v8.2 1cv8.cf Казахстан БУ Абонемент ($m)

Здесь приведено два отчёта, в которых использованы функции СКД Массив (Array) и СоединитьСтроки (JoinStrings). Отчет по ГТД и отчет по продаже номенклатуры, оба тестировались на конфигурации Управление торговым предприятием (УТП) для Казахстана, редакции 2.0.19.2. Также добавлена электронная книга, в которой собраны знания по основам СКД, которые я получил, во время работы и изучения системы компоновки данных.

1 стартмани

15.03.2021    1347    7    softmaker    0    

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

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

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

1 стартмани

03.07.2019    24228    6    m-rv    90    

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

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

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

1 стартмани

08.02.2021    1357    1    denmon88    1    

Простой пример отчета на СКД. Программное формирование, расшифровка, работа с параметрами и отборами

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

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

1 стартмани

15.10.2020    3372    6    Stivens    10    

Интерактивная справка по объектам 1С (подключаемое расширение)

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

База знаний, подключаемая к объектам основной базы. Пополняется интерактивно, формируется в виде статей прямо в 1С (текст, картинки, таблицы, ссылки). Есть возможность прикрепления файлов, привязки к объектам 1С, возможности рейтинга и комментирования пользователями.

3 стартмани

29.09.2020    10555    65    sapervodichka    43    

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

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

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

1 стартмани

30.05.2020    2507    3    yc_2011    4    

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

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

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

1 стартмани

30.04.2020    5765    0    zaxarovsky    4    

Задачка: Список всех документов за заданный период, используя СКД

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

Вывести все документы за заданный период, используя СКД.

2 стартмани

11.03.2020    3651    6    MaxxiMiliSan    9    

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

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

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

1 стартмани

01.06.2018    33446    89    m-rv    58    

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

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

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

1 стартмани

04.02.2020    3647    1    KawaNoNeko    2    

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

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

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

1 стартмани

20.12.2019    5046    6    okon-teh    2    

Конвейер проверки качества кода

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

Jenkinsfile для выполнения проверки качества кода. Собирает информацию с АПК, EDT и BSL-LS. Сопоставляет ошибки с гит-репозиторием, выгруженным ГитКонвертором. Отправляет в Сонар.

3 стартмани

04.09.2019    30837    27    Stepa86    46    

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

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

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

1 стартмани

20.06.2019    5848    3    MuI_I_Ika    2    

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

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

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

1 стартмани

21.03.2019    7562    15    pavel_pss    0    

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

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

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

1 стартмани

22.02.2019    7561    3    kasper076    3    

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

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

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

1 стартмани

08.02.2018    31446    20    mvxyz    17    

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

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

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

1 стартмани

12.01.2019    7440    0    lunjio    0    

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

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

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

1 стартмани

12.11.2018    34559    8    evgen7938    4    

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

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

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

1 стартмани

13.09.2018    24969    13    RocKeR_13    16    

HTTP Сервисы: Путь к своему сервису. Часть 3

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

Продолжение статьи «HTTP Сервисы: Путь к своему сервису. Часть 2». В предыдущих частях мы использовали только Get, в этой части поговорим о других методах и длительных операциях.

1 стартмани

27.08.2018    45809    64    dsdred    17    

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

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

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

1 стартмани

12.08.2018    7506    29    MaxCreator    0    

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

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

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

1 стартмани

28.12.2015    31074    72    vasvl123    9    

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

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

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

5 стартмани

09.08.2018    32034    28    informa1555    26    

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

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

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

1 стартмани

14.08.2016    51517    36    Demanoidos    60    

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

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

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

1 стартмани

17.07.2018    57874    22    kalyaka    16    

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

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

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

1 стартмани

01.10.2015    56379    35    ildarovich    41