Использование менеджера временных таблиц в СКД

27.06.24

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

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

Содержание

  1. Временная таблица в СКД
  2. Принцип работы и сбор данных

 

Временная таблица в СКД

Что я имею в виду под помещением в СКД временной таблицы? С некоторых пор мы можем в объекте СКД «Запрос» использовать временную таблицу прямо в тексте запроса, не передавая ее как параметр.

Пример текста запроса:

ВЫБРАТЬ
	ВТ_ВнешняяТаблица.Руководитель КАК Руководитель,
	ВТ_ВнешняяТаблица.Сотрудник КАК Сотрудник,
	ВТ_ВнешняяТаблица.ВидРуководителя КАК ВидРуководителя
ПОМЕСТИТЬ ВТ_ВсеПодчиненные
ИЗ
	ВТ_ВнешняяТаблица КАК ВТ_ВнешняяТаблица
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_КадровыеДанные КАК Представления_КадровыеДанныеСотрудников
		ПО ВТ_ВнешняяТаблица.Сотрудник = Представления_КадровыеДанныеСотрудников.Сотрудник
{ГДЕ
	ВТ_ВнешняяТаблица.Сотрудник КАК Подчиненный}

 

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

 

 

 

Принцип работы и сбор данных

Но как же это работает и откуда СКД берет данные? Для этого в инициализации процессора компоновки данных появился новый параметр: «менеджер временных таблиц».

ПроцессорКомпоновкиДанных (DataCompositionProcessor)

Инициализировать (Initialize)

Синтаксис: Инициализировать(<Макет>, <ВнешниеНаборыДанных>, <ДанныеРасшифровки>, <ВозможностьИспользованияВнешнихФункций>, <ОграничиватьПолучениеПолейПоСсылкамПоПравуПросмотр>, <МенеджерВременныхТаблиц>)

 

Используем его так:

МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
ЗаполнитьМенеджерВременныхТаблиц(ТаблицаИерархии, МенеджерВременныхТаблиц);

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина,, МенеджерВременныхТаблиц);

 

Процедура «ЗаполнитьМенеджерВременныхТаблиц» довольно простая:

Процедура ЗаполнитьМенеджерВременныхТаблиц(ТаблицаИерархии, МенеджерВременныхТаблиц)
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
	Запрос.Текст = 
	"ВЫБРАТЬ
	|	ТабИерархии.Руководитель КАК Руководитель,
	|	ТабИерархии.Сотрудник КАК Сотрудник,
	|	ТабИерархии.ВидРуководителя КАК ВидРуководителя
	|ПОМЕСТИТЬ ВТ_ВнешняяТаблица
	|ИЗ
	|	&ТабИерархии КАК ТабИерархии";
	
	Запрос.УстановитьПараметр("ТабИерархии", ТаблицаИерархии);
	Запрос.Выполнить();
	
КонецПроцедуры

 

В остальном код программного формирования СКД сохраняется.

 

Автор: Сергей Ж., ведущий разработчик 1С.

Вступайте в нашу телеграмм-группу Инфостарт

СКД менеджер временных таблиц в СКД

Вы можете заказать платную адаптацию этой статьи под ваши задачи на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

См. также

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

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

16500 руб.

02.09.2020    258589    1428    421    

1165

Инструментарий разработчика СКД Программист 1С 8.3 Бесплатно (free)

В этой статье представлен СКДБилдер — общий модуль-обёртка над объектной моделью СКД, который сокращает код в 3-4 раза и делает его читаемым.

29.01.2026    6806    353    shapa_pro    27    

69

СКД Программист 1С:Предприятие 8 Бесплатно (free)

Статья написана по результатам проведенного внутреннего обучающего вебинара для разработчиков ГК «СофтБаланс». Если осилить 25 000 знаков - задача для вас непосильная, где-то на бескрайних просторах интернета видео есть (или будет). Но здесь информация точнее. Разберем, чем запрос для СКД принципиально отличается от обычного запроса и как модифицируется в зависимости от настроек. Изучим «базовый рецепт» написания запроса для СКД, сформируем чек-лист. Полезно будет всем – от стажеров до тех. лидов. Всем, кто не снимает галку «автозаполнение» и пишет запросы для отчетов в консоли запросов – читать (вдумчиво) обязательно.

29.10.2025    19727    ovetgana    112    

113

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

01.07.2025    11385    krasnoshchekovpavel    7    

68

СКД Программист Стажер 1С:Предприятие 8 Россия Бесплатно (free)

Несколько способов управления формами выбора параметров и отборов СКД.

10.04.2025    10914    Neti    0    

41

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

27.02.2025    16780    ovetgana    50    

93

СКД Программист 1С:Предприятие 8 Бесплатно (free)

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

24.12.2024    14465    Akcium    17    

46

СКД Механизмы типовых конфигураций Запросы Программист 1С:Предприятие 8 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Россия Бесплатно (free)

Работая с типовыми отчетами в конфигурациях «Зарплата и управление персоналом, редакция 3», «Зарплата и кадры государственного учреждения, редакция 3» и подобных, в схемах компоновки данных можно встретить конструкции запросов, которые обращаются к некоторым виртуальным таблицам.

20.08.2024    11391    AlexeyPROSTO_1C    1    

32
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1588 05.12.23 10:08 Сейчас в теме
Спасибо, отличная новость!

Но есть вопросы, дополнения

С некоторых пор мы можем в объекте СКД «Запрос» использовать временную таблицу прямо в тексте запроса, не передавая ее как параметр.


Добавьте, пожалуйста, в статью

1 расшифровку, с какой именно платформы появилась такая возможность.

2 ответ на вопрос - нужно ли устанавливать соответствующий режим совместимости или работает без учета режима совместимости?
NataliaZh; gaglo; ardn; AlexeyPROSTO_1C; +4 Ответить
2. AlexeyPROSTO_1C 2118 05.12.23 10:51 Сейчас в теме
(1) С 8.3.17.1032, вот ссылка https://dl04.1c.ru/content/Platform/8_3_23_1912/1cv8upd_8_3_23_1912.htm#19110485-11e0-11ea-8371-0050569f678a.

Про режим совместимости в документации нужно экспериментировать, пока затрудняемся ответить.
3. xoisim 10 05.12.23 11:20 Сейчас в теме
(1) С выпуском платформы 8.3.17 фирма 1С анонсировала возможность передачи в механизм системы компоновки данных менеджера временных таблиц. https://infostart.ru/1c/articles/1229680/
HystriX; 0x00; ixijixi; AlexeyPROSTO_1C; +4 Ответить
5. ixijixi 2148 05.12.23 14:38 Сейчас в теме
(1) Новость? Писал об этом более 3-х лет назад) https://infostart.ru/public/1229680/

Upd: В (3) уже указали на это
6. Xershi 1552 05.12.23 15:30 Сейчас в теме
(5) в мире 1с и 10 не срок, на клюшках ещё сидят+))
Мне на глаза только сейчас эта информация попала, так повторение..!
4. aximo 2686 05.12.23 11:25 Сейчас в теме
Спасибо за материал!
AlexeyPROSTO_1C; +1 1 Ответить
7. dim369 05.12.23 23:40 Сейчас в теме
А какой вообще практический смысл в этом? Чем плохо внешние данные передавать через параметр?
А про менеджер временных таблиц вроде была информация, что на некоторых наборах данных эта конструкция несколько тормозит
9. AlexeyPROSTO_1C 2118 06.12.23 08:01 Сейчас в теме
(7) Если мы правильно поняли, вопрос: «Чем хуже набор данных "объект", который передаем как второй параметр той же процедуры "Инициализировать"?».

Проблема набора данных "Объект", что его можно связать с другими таблицами только левым соединением. Временную таблицу можно связать как угодно, а также получить из нее другие временные таблицы, присоединяя к ней данные из базы, и использовать их в дальнейшем в запросе.
NoseMan; paybaseme; itmind; Рамзес; IgorS; user1559729; +6 Ответить
11. dim369 06.12.23 08:33 Сейчас в теме
(9) Ясно, спасибо!
AlexeyPROSTO_1C; +1 1 Ответить
13. binx 176 06.12.23 15:32 Сейчас в теме
(9)

Чтобы воспользоваться Объектом, нужно специально выгружать в таблицу значений и загружать в объект, а с менеджером, временную таблицу можно брать сразу из запроса.
8. FreeArcher 164 06.12.23 03:38 Сейчас в теме
(7) Например, в зуп много в программном интерфейсе есть готовых таблицы на все типовые случаи. Их можно легко использовать в отчетах. Может 1с теперь свою систему представлений перепишет на менеджеры.
AlexeyPROSTO_1C; +1 Ответить
10. dim369 06.12.23 08:31 Сейчас в теме
(8) Да, точно, есть такое, сразу и не вспомнил) Спасибо!
AlexeyPROSTO_1C; +1 Ответить
12. webester 26 06.12.23 10:19 Сейчас в теме
(7)
А какой вообще практический смысл в этом?

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

А чем хорошо?

(8) Зачем это делать? Сейчас сделано очень удобно. Ты пишешь таблицу и можешь использовать ее в к примеру в конструкторе. Сразу указываешь или видишь параметры построения. Если таблицы будут в менеджере, то вся эта красота простой пойдет лесом. Единственное чего не хватает представлениям из ЗУП, это документирования. Все остальное сделано хорошо и вполне себе красиво. За исключением редких моментов.
14. wokituk 17 21.08.24 18:47 Сейчас в теме
А как СКД поняла какой тип у "Подчиненный" (у Вас на картинке можно "+" нажать слева от "Подчиненный" в Настройке отбора)?
У Меня "+" не появляется даже если полю приписать Тип
Прикрепленные файлы:
15. daviels 13.11.24 15:58 Сейчас в теме
Добрый день.
Пробую воспользоваться данным методом. Не получается!

в процедуре ПриКомпоновкеРезультата

МВТ = Новый МенеджерВременныхТаблиц;

Запрос_2 = Новый Запрос;
Запрос_2.МенеджерВременныхТаблиц = МВТ;
Запрос_2.Текст = "ВЫБРАТЬ ОбщаяТаблицаМаршрутов.* ПОМЕСТИТЬ ВТ_ОбщаяТаблицаМаршрутов ИЗ &ОбщаяТаблицаМаршрутов КАК ОбщаяТаблицаМаршрутов";
Запрос_2.УстановитьПараметр("ОбщаяТаблицаМаршрутов", ОбщаяТаблицаМаршрутов);
Запрос_2.Выполнить();

//ОбщаяТаблицаМаршрутов - Таблица значений заполненная. Опустил код которым она заполняется

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.ПолучитьНастройки(), ДанныеРасшифровки,,,Ложь);

ВнешниеНаборыДанных = Новый Структура;


ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных,ВнешниеНаборыДанных,ДанныеРасшифровки,,,МВТ);


НО вот далее - обращаясь к временной таблице ВТ_ОбщаяТаблицаМаршрутов в запросе в СКД:
"ВЫБРАТЬ * ИЗ ВТ_ОбщаяТаблицаМаршрутов КАК ВТ_ОбщаяТаблицаМаршрутов"
Получаю ошибку :
1. Если просто добавлять в код такой текст , то на этапе сохранения запроса получаем ошибку что такой таблицы нет.
2. Если принудительно создаю такую таблицу , тогда текст запроса сохранить могу, НО при выполнении запроса получаю ошибку - Таблица не найдена
16. kassbar 159 17.04.25 13:15 Сейчас в теме
(15) СтандартнаяОбработка = Ложь;
Для отправки сообщения требуется регистрация/авторизация