Модификация запросов по схеме запроса типовыми возможностями УТ 11.5, о которых вы не знали

09.10.25

Разработка - Механизмы типовых конфигураций

Предлагается обзор работы с объектной моделью запроса по схемам запросов типовым функционалом УТ 11.5.

Предисловие 

Доброго всем времени! Поскольку я сейчас в большей степени занимаюсь работой в конфигурации 1С:Управление торговлей 8 (11.5), хотел бы вам сделать один обзор на совершенно типовой функционал этой конфигурации, а именно - работе с запросами по "схемам запросов".

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

Я почти уверен, что многие из вас не используют данные возможности, а они будут вам очень полезны при разработке новых и доработке существующих листингов запросов. Отмечу, что похожий модуль так же доступен и в других типовых - например, в БП 3.0 (однако, он там содержит несколько другие методы).

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

В своем обзоре я буду приводить примеры используя конфигурацию 1С:Управление торговлей 11.5.22.92 (длительной поддержки) на Платформе 1С 8.3.27.1688

Если статья вам "зайдет" - сделаю обзор по методам работы со схемами запросов в БП 3.0... а так же можно далее детально рассмотреть "чистый код" работы по схемам запросов.

Я уверен, что данный материал заинтересует всех желающих - от пользователей до "матерых" кодеров. Перехожу к описанию функционала нескольких методов:

 

Описание функционала

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

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

 

// ==== основной подготовленный запрос для изменений =======
Запрос = "ВЫБРАТЬ
	               |	Контрагенты.Ссылка КАК Ссылка,
	               |	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	               |	Контрагенты.ИНН КАК ИНН,
	               |	Контрагенты.КПП КАК КПП,
	               |	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо
	               |ИЗ
	               |	Справочник.Контрагенты КАК Контрагенты";

 

 

1. Использование функций добавление в поля выборки ДобавитьПолеВыборкиВЗапрос:

 
 Добавить поле выборки

 

// ===== Добавить поле новой выборки в запрос
ПолеВыборки1 		= "Контрагенты.НаименованиеПолное";
НовыйТекстЗапроса 	= СхемыЗапросов.ДобавитьПолеВыборкиВЗапрос(Запрос,ПолеВыборки1,"НаименованиеПолное");

//Результат, автоматом добавляем поле "НаименованиеПолное":
ВЫБРАТЬ
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты

 

 

2. Выборка первых записей

 
 Выбрать ПЕРВЫЕ

 

// ===== Количество записей ПЕРВЫЕ 5 ===
НовыйТекстЗапроса1 = СхемыЗапросов.УстановитьКоличествоПолучаемыхЗаписей(НовыйТекстЗапроса,5);

// Результат - добавит ключевое слово ПЕРВЫЕ с параметром 5:
ВЫБРАТЬ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты

 

 

3. Выборка разрешенных записей

 
 Выбрать РАЗРЕШЕННЫЕ

 

// ==== Установить разрешенные в ВЫБРАТЬ ===
	
НовыйТекстЗапроса2 = СхемыЗапросов.УстановитьВыборкуРазрешенныхЗаписей(НовыйТекстЗапроса1,ИСТИНА);

//Результат (Если ЛОЖЬ - РАЗРЕШЕННЫЕ удалит):
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты

 

 

4. Помещение запроса во временную таблицу

 
 Подготовка текста создания временной таблицы с индексированием и без индексирования

 

// ==== Поместить во временную таблицу ===
НовыйТекстЗапроса3 = СхемыЗапросов.УстановитьПомещениеВоВременнуюТаблицу(НовыйТекстЗапроса2,"ВТ_Контрагенты");


//Результат - создал временную таблицу:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ПОМЕСТИТЬ ВТ_Контрагенты
ИЗ
	Справочник.Контрагенты КАК Контрагенты



// ==== Индексировать ===
НовыйТекстЗапроса4 = СхемыЗапросов.УстановитьИндексациюПолейЗапроса(НовыйТекстЗапроса3,"ИНН,КПП");


//Результат - а затем, проиндексировал ее по двум полям:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ПОМЕСТИТЬ ВТ_Контрагенты
ИЗ
	Справочник.Контрагенты КАК Контрагенты

ИНДЕКСИРОВАТЬ ПО
	ИНН,
	КПП

 

 

5. Упорядочение по полям запроса

 
 Устанавливаем порядок

 

// === Порядок ====
НовыйТекстЗапроса5 	= СхемыЗапросов.ДобавитьПоляУпорядочиванияВЗапрос(НовыйТекстЗапроса2,"ИНН,КПП");


//Результат - сортировка/ порядок по полям:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты

УПОРЯДОЧИТЬ ПО
	ИНН,
	КПП

 

 

6. Конструкции соединений в запросах

 
 Соединения в запросах

 

// === Левое соединение с таблицей контактная информация ====
	
ОписаниеТаблицы = СхемыЗапросов.ОписаниеТаблицы(
					Тип("ТаблицаСхемыЗапроса"),
					"Справочник.Контрагенты.КонтактнаяИнформация",
					"КонтрагентыКонтактнаяИнформация",
					"Ссылка");
				
ОписаниеСоединения = СхемыЗапросов.ОписаниеСоединения(
					ОписаниеТаблицы,
					"КонтрагентыКонтактнаяИнформация.Ссылка = &Ссылка",
					ТипСоединенияСхемыЗапроса.ЛевоеВнешнее);
				
ТекстЗапроса =  СхемыЗапросов.ДобавитьСоединениеВЗапрос(
					НовыйТекстЗапроса2,
					"Контрагенты",
					ОписаниеСоединения,
					0);

//Результат - "автоматом" собрал вот такое ЛЕВОЕ соединение:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты.КонтактнаяИнформация КАК КонтрагентыКонтактнаяИнформация
		ПО (КонтрагентыКонтактнаяИнформация.Ссылка = &Ссылка)

 

 

Далее, приведу разбор структур ОписаниеТаблицы:

 
 Описание таблиц

 

ОписаниеТаблицы = СхемыЗапросов.ОписаниеТаблицы(
					Тип("ТаблицаСхемыЗапроса"),
					"Справочник.Контрагенты.КонтактнаяИнформация",
					"КонтрагентыКонтактнаяИнформация",
					"Ссылка");


"Справочник.Контрагенты.КонтактнаяИнформация" - соединяемая таблица;

"КонтрагентыКонтактнаяИнформация" - псевдоним соединяемой таблицы;

"Ссылка" - Доступные поля;

 

и ОписаниеСоединения:

 
 Описание соединений

 

ОписаниеСоединения = СхемыЗапросов.ОписаниеСоединения(
					ОписаниеТаблицы,
					"КонтрагентыКонтактнаяИнформация.Ссылка = &Ссылка",
					ТипСоединенияСхемыЗапроса.ЛевоеВнешнее);

ОписаниеТаблицы - конструктор описания таблицы (см выше)

"КонтрагентыКонтактнаяИнформация.Ссылка = &Ссылка" - связь таблиц

ТипСоединенияСхемыЗапроса.ЛевоеВнешнее - тип соединения, где возможно

Внутреннее, ПолноеВнешнее, ЛевоеВнешнее и ПравоеВнешнее

 

7. Далее, привожу еще один метод, который меняет псевдоним поля в тексте запроса:

 
 Замена псевдонима поля

 

НовыйТекстЗапроса5 	= СхемыЗапросов.ИзменитьПсевдонимПоляВыборкиВЗапросе(НовыйТекстЗапроса2,"ЮридическоеФизическоеЛицо","юфЛицо1");

//Результат - переименовал псевдоним поля:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК юфЛицо1,
	Контрагенты.ИНН КАК ИНН,
	Контрагенты.КПП КАК КПП,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты

 

 

8. И еще один метод, удаление псевдонимов из запроса:

 
 Удаление псевдонимов из запроса

 

НовыйТекстЗапроса5 	= СхемыЗапросов.УдалитьПоляИзЗапроса(НовыйТекстЗапроса2, "ИНН,КПП");

//Результат - удалил "колонки" по наименованию ИНН, КПП:
ВЫБРАТЬ РАЗРЕШЕННЫЕ ПЕРВЫЕ 5
	Контрагенты.Ссылка КАК Ссылка,
	Контрагенты.ЮридическоеФизическоеЛицо КАК ЮридическоеФизическоеЛицо,
	Контрагенты.ЮрФизЛицо КАК ЮрФизЛицо,
	Контрагенты.НаименованиеПолное КАК НаименованиеПолное
ИЗ
	Справочник.Контрагенты КАК Контрагенты

 

 

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

 

Выводы

В данном материале я сделал небольшой обзор 8 методов на основные типовые возможности по доработке и сборке запросов, использовав конфигурацию 1С:УТ 11.5. Уверен, что кто-то узнал об этом впервые, а кто-то давно использует, но в любом случае - данная шпаргалка будет вам полезна. Хочу так же отметить, что в типовых почему-то не сильно используется данных подход, суда по "глобальному" поиску.

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

Более сложные примеры вы по этой теме и другие методы работы по схемам запросов вы можете найти на нашем персональном тг-канале. 

 

Дополнительные материалы

Если вам понравился материал автора, вы можете так же ознакомиться с рядом его интересных разработок для разных конфигураций. Ниже представлена лишь малая часть - по обмену данными, работе с торговым оборудованием на разных БПО и отчеты для типовых УТ 11, ЗУП 3.1 и БП 3.0:

 

Другие встроенные возможности УТ 11.5:

Печать документов и пречеков на ККМ в УТ 11.5

Редактирование колонки "Цена" в РМК УТ 11.5 [сентябрь 2025]

Типовая работа с табличными частями УТ 11.5, аналог которой программист каждый раз изобретает сам

 

Обмен данными:

Технический перенос "Номенклатуры" (с указанием новых ставок НДС) и "Контрагентов" из УТ 10.3 в УТ 11.5

Служебная выгрузка-загрузка номенклатуры, штрихкодов, остатков, видов цен из 1С:Розницы в 1С:Розницу

Простой и быстрый перенос справочника "Номенклатура" из УТ 11.4 в Розницу 2.3

 

Работа с торговым оборудованием:

Работа с эмулятором дисплея покупателя через БПО

Произвольная текстовая строка в кассовом чеке ККМ по стандарту БПО

 

Работа с типовыми ЗУП 3.1 и БП 3.0

Штатный программный функционал работы с сотрудниками организаций в ЗУП 3.1

Взаиморасчеты с сотрудниками - начислено, удержано и выплачено для ЗУП 3.1 [Май 2025]

Отработанное и оплаченное время сотрудников организации по видам начислений для ЗУП 3.1

Пересборка отчета по ОС - бухгалтерский учет

Доходы и расходы хозрасчетного плана счетов для 1С:БП 3.0 (2025 г.)

Начисления, НДФЛ и взносы за период для ЗУП 3.1 [Апрель 2025] 

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

схема запроса встроенный функционал примеры применения схем управление торговлей

См. также

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

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

15500 руб.

02.09.2020    218197    1194    413    

1055

Механизмы типовых конфигураций Программист 1С v8.3 Бесплатно (free)

Каждый, кто работал с кадровыми отчетами в ЗУП, ERP или УХ, сталкивался с механизмом представлений – странным кодом запроса, где поля отображаются пустыми ссылками, а в названии временной таблицы есть слово «Представление». В статье разберем, что такое представления и как ими пользоваться. Больше не нужно ломать голову над тем, откуда и как правильно получать данные. Механизм представлений сделает это за вас.

08.07.2025    5867    user2012581    48    

53

Инструментарий разработчика Запросы Программист 1С v8.3 Сложные периодические расчеты Запросы 1С:Зарплата и кадры государственного учреждения 3 1С:Зарплата и Управление Персоналом 3.x Абонемент ($m)

QueryConsole1C — расширение, включающее консоль запросов с поддержкой исполняемых представлений — аналогов виртуальных таблиц, основанных на методах программного интерфейса ЗУП. Оно позволяет выполнять запросы с учётом встроенной бизнес-логики, отлаживать алгоритмы получения данных и автоматически генерировать код на встроенном языке 1С.

1 стартмани

16.05.2025    6020    91    zup_dev    21    

70

Механизмы типовых конфигураций Программист 1С v8.3 1C:Бухгалтерия Бесплатно (free)

Расчет себестоимости в типовых конфигурациях 1С – для многих «черный ящик», работающий по жестко зашитым в него алгоритмам. Реализация этого «черного ящика» может меняться в зависимости от конкретной конфигурации – УПП, БП 3.0, ERP. Но принцип работы везде одинаковый. Расскажем о том, как устроен расчет себестоимости, как его дорабатывать, и какие методы могут быть эффективны и без доработок.

27.12.2024    20399    Begemoth80    33    

91

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    17510    sergey279    18    

72

Запросы Программист 1С v8.3 Запросы 1C:Бухгалтерия Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    12146    XilDen    38    

105

Механизмы типовых конфигураций Программист 1С v8.3 1C:ERP Бесплатно (free)

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

03.06.2024    12288    SergDobrodelov    40    

129
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. starik-2005 3197 09.10.25 11:04 Сейчас в теме
Хорошая наверное статья. Как-то пробовал добавить в запрос соединение с помощью схем, но получил ошибку, которую не смог урегулировать - сделал в итоге "по старинке", т.е. через стрзаменить. Поискал в интернетах, но не нашел ничего полезного, что указало бы, как в уже имеющиеся сложные запросы добавлять что-то еще. Может быть кто-то напишет действительно большую и красивую статью про это, а не просто "базу". ну или сам напишу, если найду время для того, чтобы "просто так взять и разобраться".
RustIG; link_l; +2 Ответить
3. RocKeR_13 1454 09.10.25 13:22 Сейчас в теме
(1) в прошлом году заявку подавал на IE по работе со схемой запроса, но не прошел. Наработки остались, но руки никак не дойдут дооформить)
4. RocKeR_13 1454 09.10.25 13:27 Сейчас в теме
(1) вот тут у меня есть несколько примеров из моей практики: https://infostart.ru/1c/articles/1753707/
5. starik-2005 3197 09.10.25 13:31 Сейчас в теме
(4) Там в комментах была сцыль сюда, но тащить обработку было нельзя. Я покрутил код и вроде бы те же слова писал, но никак не смог прикрутить таблицу слева - вываливалась какая-то ошибка. Так что забил. Думаю, что нужна статья, которая раскроет всяческие варианты, описывая каждый момент: добавление поля, соединение, объединение, агрегация, ...
9. RustIG 1918 09.10.25 13:50 Сейчас в теме
(5) обычно для уже известных полей в ограниченном пространстве выбора - просто крутим поля по-разному...
универсально для всех разных сценариев разных таблиц не получится...
6. starik-2005 3197 09.10.25 13:36 Сейчас в теме
(4) Кстати, даже вспомнил, что мне там было надо. Есть такая замечательная процедура в БСП "ПриОпределенииИсточниковДанныхПечати". Она служит для добавления полей в наборы данных СКД для печатных форм. Т.е. условно с помощью этого можно добавить в конструктор печатных форм для нужного объекта нужные поля. И мне нужно было добавить туда 6 соединений, чтобы вытащить все то, что хочет пользователь. Но у меня даже с одним не сработало. Уже не вспомню, что там писалось, но не работало и все тут.
11. RocKeR_13 1454 09.10.25 13:51 Сейчас в теме
(6) При добавлении источника данных в схему запроса есть "мааааленький нюанс", но очень вредительский: схема запроса ведет себя ровно так же как конструктор запроса, и при добавлении нового источника может зафигачить автоматом соединения) Возможно из-за этого возникла ошибка, если автосоединения конфликтовали с существующими. Уговорили: постараюсь привести свою статью в порядок и опубликовать) Пока она передается внутри отдела коллегам, если возникает у них необходимость поработать со схемой: говорят, очень помогает.
2. zhuravlev_as 490 09.10.25 12:33 Сейчас в теме
Возможно пригодится при программном изменении запросов в расширениях. Спасибо за материал.
svbel85; RustIG; +2 Ответить
8. RustIG 1918 09.10.25 13:48 Сейчас в теме
(2)
пригодится при программном изменении запросов

1) в расширениях
2) при связке Мобильное приложение - ЦБ на сервере
3) при внешних интеграциях, когда удаленно задаем условия и параметры запросов - то есть запрос динамически должен как кубик-Рубика формироваться
7. aximo 2470 09.10.25 13:42 Сейчас в теме
(5) тут нет на прямую создания схемы запроса... схемы запроса - это методы платформы
10. RustIG 1918 09.10.25 13:50 Сейчас в теме
спасибо за поднятие темы.
хоть и предоставлена только "база". но комменты расширили восприятие статьи и темы.
Сообщество Vs ИИ
12. milkers 2997 09.10.25 14:16 Сейчас в теме
Спасибо, не знал про общий модуль. Пригодится.
13. Matveev_VS 167 09.10.25 17:23 Сейчас в теме
На модуль СхемыЗапросов не обращал внимание. ➕
14. ovasiliev 7 13.10.25 20:08 Сейчас в теме
"в типовых почему-то не сильно используется данных подход, суда по "глобальному" поиску" - потому что проще и надёжнее "по старинке".
Для отправки сообщения требуется регистрация/авторизация