1С 8.3 Схема компоновки данных из запроса - Программист 1С Минск. Автоматизация бизнеса.

Перейти к контенту

1С 8.3 Схема компоновки данных из запроса

Данные > Примеры кода 1С > 1С 8.3 Схема компоновки данных (СКД)
Перейти в раздел примеры кода 1С 8.3:
Преимущества СКД из Запроса:
  • Гибкость: можно создавать сложные отчеты без изменения кода.
  • Универсальность: подходит для различных видов отчетов.
  • Интерактивность: пользователь может настраивать параметры и отборы.
СКД из Запроса в 1С 8.3:
// Схема компоновки данных из запроса.
// Источник: https://github.com/SeiOkami/CollectionMethodsOneS/issues/160
//
// Параметры:
//  ТекстЗапроса - Строка
//  ПараметрыЗапроса - Структура
//
// Возвращаемое значение:
//  СхемаКомпоновкиДанных
//
// Пример:
//  СКД = СхемаКомпоновкиДанныхИзЗапроса("ВЫБРАТЬ * ИЗ Справочник.Валюты");
//
Функция СхемаКомпоновкиДанныхИзЗапроса(ТекстЗапроса, ПараметрыЗапроса = Неопределено) Экспорт

  СхемаКомпоновкиДанных = Новый СхемаКомпоновкиДанных();

  ИсточникДанных = СхемаКомпоновкиДанных.ИсточникиДанных.Добавить();
  ИсточникДанных.Имя = "ЛокальнаяБаза";
  ИсточникДанных.СтрокаСоединения = "";
  ИсточникДанных.ТипИсточникаДанных = "Local";

  НаборДанных = СхемаКомпоновкиДанных.НаборыДанных.Добавить(Тип("НаборДанныхЗапросСхемыКомпоновкиДанных"));
  НаборДанных.АвтоЗаполнениеДоступныхПолей = Истина;
  НаборДанных.Запрос = ТекстЗапроса;
  НаборДанных.Имя = "Запрос";
  НаборДанных.ИсточникДанных = ИсточникДанных.Имя;

  Если ЗначениеЗаполнено(ПараметрыЗапроса) Тогда
      Для Каждого КлючИЗначение Из ПараметрыЗапроса Цикл
          ПараметрЗапроса = СхемаКомпоновкиДанных.Параметры.Добавить();
          ПараметрЗапроса.Имя = КлючИЗначение.Ключ;
          ПараметрЗапроса.Значение = КлючИЗначение.Значение;
          ПараметрЗапроса.ОграничениеИспользования = Истина;
      КонецЦикла;
  КонецЕсли;

  КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных();
  КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных));

  КоллекцияВыбранныхПолей = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Выбор.Элементы;
  Для Каждого ДоступноеПоле Из КомпоновщикНастроек.Настройки.ДоступныеПоляВыбора.Элементы Цикл
      Если НЕ ДоступноеПоле.Папка Тогда
          ВыбранноеПоле = КоллекцияВыбранныхПолей.Добавить(Тип("ВыбранноеПолеКомпоновкиДанных"));
          ЗаполнитьЗначенияСвойств(ВыбранноеПоле, ДоступноеПоле, "Поле,Заголовок");
      КонецЕсли;
  КонецЦикла;

  ДетальныеЗаписи = СхемаКомпоновкиДанных.НастройкиПоУмолчанию.Структура.Добавить(Тип("ГруппировкаКомпоновкиДанных"));
  ДетальныеЗаписи.Выбор.Элементы.Добавить(Тип("АвтоВыбранноеПолеКомпоновкиДанных"));

  Возврат СхемаКомпоновкиДанных;

КонецФункции

// MIT License
// Copyright (c) 2025 SeiOkami
//
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files
// (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify,
// merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:

// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
0
комментарии
____________________
Copyright©, «Программист 1С в г.Минске», 13.02.2025
Перепечатка текста и фотографий разрешена при наличии прямой ссылки на источник
Яндекс.Метрика
Защищенное соединение ssl
visa
mastercard
Maestro
Яндекс деньги
Назад к содержимому