Упрощение работы с SQL запросами и встроенная консоль

18.03.24

Разработка - Инструментарий разработчика

Просто надоело писать много букв (постоянно описывать коннекторы и объекты). Была создана обработка для минимизации кода и помогает Ctrl+пробел.

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Запрос SQL и консоль:
.epf 54,88Kb ver:3.240318
21 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Платформа минимум 8.3.6.1977 будет работать на платформах 8.2 если заменить функцию СтрРазделить на свою.

Обработка тестировалась на платформе 8.3.10.2580. 

Конфигурация не имеет значения.

 

Примеры использования обработки:

1. Инициализировали данные подключения и написали запрос.

ЗапросSQL = Обработки.ЗапросSQL.Создать();
ЗапросSQL.Сервер = "server";
ЗапросSQL.База = "base";
ЗапросSQL.Пользователь = "user";
ЗапросSQL.Пароль = "PSW";
ЗапросSQL.Текст = 
	"SELECT
 	|Контры.INN ИНН,
 	|COUNT(DISTINCT Контры.Firma) Организация,
 	|MAX(Контры.Date) Дата
 	|	FROM IS_Customers_MeetCredit2 Контры 
 	|GROUP BY Контры.INN";

2. А затем выполняем запрос и обрабатываем результаты.  

2.0  Реквизит обработки "Выполнено" является индикатором выполнения запроса. 

2.1 Результат в выборку - функция Выбрать() которая возвращает выборку по полям запроса.


ВыборкаSQL = ЗапросSQL.Выбрать(); //элемент выборки ВыборкаSQL
Пока ЗапросSQL.СледующийИзВыборки() Цикл 
	Сообщить("Результат: " + ВыборкаSQL.Дата + ВыборкаSQL.ИНН + " - " + ВыборкаSQL.Организация);
КонецЦикла;

//Функци выборки ВыборкаSQL = ЗапросSQL.Выбрать(); элемент выборки ВыборкаSQL
//ЗапросSQL.СледующийИзВыборки();
//ЗапросSQL.ВНачалоВыборки();
//ЗапросSQL.ВКонецВыборки();
//ЗапросSQL.ПреведущийИзВыборки();
//ЗапросSQL.УстановитьНаПазициюВВыборки(3);

2.2 Результат в таблицу - функция Выгрузить(ТаблицаКоторуюЗаполнитьРезультатом = Неопределено) которая возвращает таблицу значений .

Если в параметр "ТаблицаКоторуюЗаполнитьРезультатом" передать таблицу значений, то она заполниться в соответствии, колонка т.з. - поле запроса.


Таблица = ЗапросSQL.Выгрузить();
Если ЗапросSQL.Выполнено Тогда  // Или Таблица <> Неопределено
	Таблица.ВыбратьСтроку();
КонецЕсли;	

Таблица = Новый ТаблицаЗначений;
Таблица.Колонки.Добавить("ИНН");
ЗапросSQL.Выгрузить(Таблица);
Таблица.ВыбратьСтроку();

2.3 Результат в запрос (самая полезная имхо) - функция ЗапросSQL.ВыгрузитьВЗапрос(ИмяВременнойТаблици,Запрос1с = Неопределено) которая возвращает запрос 1с и временную таблицу в нем.

Если передать в параметр  "Запрос1с" передать запрос 1с то временная таблица добавиться в этот запрос.

Запрос1С = ЗапросSQL.ВыгрузитьВЗапрос("ИмяВременнойТаблици");
//Подключаем другую базу
ЗапросSQL.Сервер = "server2";
ЗапросSQL.База = "est1s";
ЗапросSQL.Пользователь = "est1s";
ЗапросSQL.Пароль = "est1s";
ЗапросSQL.Текст = 
	"SELECT
	|	sdate.stend,
	|	sdate.state
	|FROM	sdate AS sdate";
ЗапросSQL.ВыгрузитьВЗапрос("ИмяВременнойТаблици2",Запрос1С);
Запрос1С.Текст = 
		"ВЫБРАТЬ
		|	Контрагенты.Ссылка,
		|	ИмяВременнойТаблици2.stend
		|ИЗ
		|	Справочник.Контрагенты КАК Контрагенты
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИмяВременнойТаблици КАК ИмяВременнойТаблици
		|		ПО (ИмяВременнойТаблици.ИНН = Контрагенты.ИНН)
		|		ВНУТРЕННЕЕ СОЕДИНЕНИЕ ИмяВременнойТаблици2 КАК ИмяВременнойТаблици2
		|		ПО (ИмяВременнойТаблици2.stend = ИмяВременнойТаблици.Организация)";
Выборка = Запрос1С.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
	Сообщить("Результат: " + Выборка.Ссылка + " : " + Выборка.stend);
КонецЦикла;

2.3 Классика жанра - функция Получить() 

Результат = ЗапросSQL.Получить();
Пока Не Результат.EOF Цикл 
	Сообщить("Результат: " + Результат.Fields.Item("ИНН").Value);
	Результат.MoveNext();
КонецЦикла;	

3. И еще дополнительно можно:

//---------------------------- Файлы -------------------------------------------
ЗапросSQL.Текст = "INSERT INTO sdate (stend,state)	VALUES (1,?)" ;
ЗапросSQL.УстновитьФайлКакПараметр("D:\bender_iz_futuramy_1600x1200_4997.jpg");
ЗапросSQL.Получить();

Если ЗапросSQL.Выполнено Тогда
	ЗапросSQL.Текст = "SELECT TOP 1 state FROM sdate";
	ЗапросSQL.ВыгрузитьВФайл("state","D:\test.jpg");
КонецЕсли;	

//---------------------------- ActiveDirectory -------------------------------------------
ЗапросSQL.НастройкаКакActiveDirectoryProvider();
ЗапросSQL.Текст =  "SELECT Name,ADSPath,SAMAccountName  FROM 'LDAP://DC=domen,DC=ru' WHERE Name='*/*'";
ВыборкаSQL = ЗапросSQL.Выбрать();
Пока ЗапросSQL.СледующийИзВыборки() Цикл 
	Сообщить("Результат: " + ВыборкаSQL.Name + ВыборкаSQL.ADSPath + " - " + ВыборкаSQL.SAMAccountName);
КонецЦикла;

//---------------------------- Всякое - Работают только с Выгрузить(); Пост обработка таблицы. -------------------------------------------

ЗапросSQL.ФункцияЗамены.Вставить("ИНН","СтрЗаменить(&values&,""0"",""*"")"); 
ЗапросSQL.ФункцияЗамены.Вставить("Организация","&values& * -1"); 
ЗапросSQL.Выгрузить().ВыбратьСтроку();
ЗапросSQL.Квалификаторы.Вставить("ИНН",Новый ОписаниеТипов("Строка",,,,Новый КвалификаторыСтроки(2,ДопустимаяДлина.Фиксированная))); 
ЗапросSQL.Выгрузить().ВыбратьСтроку();
ЗапросSQL.ПредставлениеКолонки.Вставить("ИНН","Это ИНН"); 
ЗапросSQL.Выгрузить().ВыбратьСтроку();

p.s. Добавил кнопку создания на sql сервере БД соответствия данных 1с и sql. Связь object_id - ключ

Проверено на следующих конфигурациях и релизах:

  • 1С:Комплексная автоматизация 2, релизы 3.1.22.80

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

SQL

См. также

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

24900 руб.

20.08.2024    65195    344    169    

303

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

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

16500 руб.

02.09.2020    254755    1402    421    

1153

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

15250 руб.

25.08.2025    50697    101    29    

114

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

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22570 руб.

06.10.2023    37191    97    40    

117

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

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

17000 руб.

10.11.2023    24682    93    42    

101

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

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки. 1.3.11 Доработан механизм контекстной подсказки по метаданным

9500 руб.

17.05.2024    51884    181    63    

213

Мастера заполнения Поиск данных Инструментарий разработчика Подбор и обработка объектов 1С 8.3 1С 8.5 Платные (руб)

Infostart MagicInput улучшает подбор в полях ввода 1С: ищет по любой части названия и по нескольким ключевым фрагментам, распознаёт ввод в другой раскладке и показывает иконки/статусы объектов прямо в списке. Поддерживает вставку навигационной ссылки/представления документа для автоподбора; для разработчиков доступны поиск по GUID и полному имени предопределённого. Работает в управляемых формах и подключается в большинстве конфигураций 1С 8.3/8.5.

5000 руб.

25.02.2026    2981    11    1    

14
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. user700035_6550355 36 06.08.18 11:36 Сейчас в теме
В обычном приложении не работает?

{ВнешняяОбработка.ЗапросSQL.МодульОбъекта(430,12)}: Процедура или функция с указанным именем не определена (СтрРазделить)
Данные = <<?>>СтрРазделить(СтрокаТЗ.Метаданные,".");
3. SanyMaga 77 06.08.18 13:18 Сейчас в теме
Сори не учел. Минимум 8.3.6.1977(обычный и уф) будет работать на платформах 8.2 если заменить функцию СтрРазделить на свою.
Например здесь https://helpf.pro/faq/view/1815.html
4. SanyMaga 77 06.08.18 13:20 Сейчас в теме
Сори. Минимум 8.3.6.1977. Нужно заменить функцию СтрРазделить на свою.
6. kuzyara 2248 09.08.18 04:26 Сейчас в теме
(1) замени СтрРазделить на свою, т.к. есть только с 8.3.6.1977
2. SanyMaga 77 06.08.18 13:11 Сейчас в теме
минимум 8.3.6.1977 будет работать на платформах 8.2 если заменить функцию СтрРазделить на свою.
5. kuzyara 2248 09.08.18 04:25 Сейчас в теме
обработка работает минимум на 8.3.6.1977, на платформах 8.2 нужно заменить функцию СтрРазделить на свою.
Для отправки сообщения требуется регистрация/авторизация