Расширение объекта Запрос

13.04.20

Разработка - Запросы

Упрощение / ускорение работы с объектом Запрос в программном коде для программистов.

Скачать исходный код

Наименование Файл Версия Размер
Расширение объекта Запрос для программиста
.epf 5,07Kb
0
.epf 5,07Kb Скачать

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

И вот родилась такая обработка.

Создано на платформе 8.3.13, но думаю будет работать на любой платформе 8.2+.

Просто скачать обработку (пытливые пользователи сами по предоставленному тексту смогут создать обработку)
и включить в конфигурацию, либо использовать через Расширение.

Примеры использования с ней описано в Секции "Использование".

//////////////////////////////////////////////////////////////////////
//
// Обработка расширения объекта Запрос
//
/////////////////////////////////////////////////////////////////////
//
// Использование:
//
// Запрос = Обработки.Запрос.Создать();
//
// Можно так:
//
// Запрос
//	 .Текст("Выбрать 1 КАК Номенклатура Где 2=&Два")
//	 .МенеджерВременныхТаблиц()
//	 .УстановитьПараметры(Новый Структура("Два", 2))
//	 .УстановитьПараметр("Один", 1)
//	 .Пустой();
//	
// Можно и так:
//
// Запрос.Текст = "Выбрать 1 КАК Номенклатура Где 2=&Два";
// Запрос.Параметры.Вставить("Два", 3);
//
// Возврат результатов:
//
// ТаблицаЗначений = Запрос.ВыполнитьИВыгрузить();
// Выборка = Запрос.ВыполнитьИВыбрать();
// МассивРезультатов = Запрос.ВыполнитьПакет();
// Булево = Запрос.Пустой();

#Область ПрограммныйИнтерейс

#Область УстановкаПараметров
	
Функция МенеджерВременныхТаблиц(МенеджерВременныхТаблиц = Неопределено) Экспорт

	Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;

	Возврат ЭтотОбъект;
	
КонецФункции

Функция Текст(ТекстЗапроса = Неопределено) Экспорт

	Текст = ТекстЗапроса;
	
	Возврат ЭтотОбъект;
	
КонецФункции

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

	Параметры.Вставить(Имя, Значение);
	
	Возврат ЭтотОбъект;

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

Функция УстановитьПараметры(ПараметрыЗапроса = Неопределено) Экспорт

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

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

Функция Выполнить() Экспорт

        ПодготовитьЗапрос();
	
	Возврат ЭтотОбъект;

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

Функция Очистить() Экспорт

	Конструктор();
	
	Возврат ЭтотОбъект;

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

#КонецОбласти

#Область РезультатЗапроса

Функция ВыполнитьИВыбрать(ТипОбхода = Неопределено) Экспорт
	
	ПодготовитьЗапрос();
	
	Возврат ЭтотОбъект.Результат.Выбрать(ТипОбхода);

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

Функция ВыполнитьИВыгрузить(ТипОбхода = Неопределено) Экспорт
	
	ПодготовитьЗапрос();
	
	Возврат ЭтотОбъект.Результат.Выгрузить(ТипОбхода);

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

Функция ВыполнитьПакет(ТипОбхода = Неопределено) Экспорт
	
	ПакетныйЗапрос = Истина;
	ПодготовитьЗапрос(ПакетныйЗапрос);
	
	Возврат ЭтотОбъект.Результат;

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

Функция Пустой() Экспорт
	
	ПодготовитьЗапрос();
	
	Возврат ЭтотОбъект.Результат.Пустой();

КонецФункции
	
#КонецОбласти

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

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

#КонецОбласти

#Область Конструктор
	
Процедура Конструктор()

	Запрос = Новый Запрос;
	Параметры = Новый Структура;
	Результат = Неопределено;
	
КонецПроцедуры

Конструктор();

#КонецОбласти

 

Обработка интересное ООП

См. также

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

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

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

10000 руб.

02.09.2020    129503    700    390    

749

Как посмотреть итоговый запрос в отчете СКД

Запросы СКД Система компоновки данных Россия Бесплатно (free)

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

15.05.2024    2486    implecs_team    4    

32

Пропорциональное распределение в запросе с использованием АвтоНомерЗаписи()

Запросы Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    2604    andrey_sag    10    

32

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    6292    KawaNoNeko    23    

26

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2281    2    Yashazz    0    

31

Запрос 1С copilot

Инструментарий разработчика Запросы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Бесплатно (free)

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

15.01.2024    7092    39    mkalimulin    32    

53

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    2013    vandalsvq    7    

29

Консоль запросов УФ 8.3.2.24.12 (мод от Dr.Zombi)

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

Работа с запросом и СКД, Полная поддержка пакетных запросов, временных таблиц. Главное скорость отладки запроса и данных, а красота вторична.

1 стартмани

07.12.2023    3474    52    DrZombi    54    

21
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. ixijixi 1810 13.04.20 12:33 Сейчас в теме
Не вижу упрощения или удобств, ровно такой же набор методов, только контекстная подсказка работать не будет. Я делаю так:
Результат = ОбщийМодуль.НовыйЗапрос(Текст, МенеджерВременныхТаблиц, ПараметрыСтруктура, ТипВозращаемогоРезультата)
2. serferian 26 13.04.20 16:30 Сейчас в теме
1. Вы работаете в коде аналогично Объекту Запрос, т.е. заменив "Новый Запрос" на "Обработка....Создать()" Ваша программа продолжит работать.
с ОбщимМодулем так не получиться, придется серьезно перерабатывать программу (мда сейчас подумал- что надо бы добавить метод "Выполнить" - добавил в тексте публикации))
2. Упрощение
- за счет добавления новых методов: УстановитьПараметры, ВыполнитьИ.....,
- "Параметры" доступны для записи.
- "Результат" остается доступен всегда.
- не надо писать в каждой строке слово Запрос.
- Ваш код более скомпонован в 1 конструкцию - правда ведь бесит когда от создания до Выполнения несколько сотен строк кода... да еще и параметры могут разнести по куче блоков, да еще и текст сливается из кучи процедур...
- в продолжение к предыдущему - дисциплинирует на подготовку данных(текста и параметров) в отдельных скомпонованных блоках кода! ну и упрощает чтение кода с данным запросом
3. да КонтекстнаяПодсказка - не заморачивался на описание функций "Аля синтаксис" - но подсказка по всем поля и методам доступна.
Оставьте свое сообщение