gifts2017

SQLPlus

Опубликовал Александр Окулов (PowerBoy) в раздел Обработки - Универсальные обработки

Обработка SQLPlus предназначена для выполнения прямых запросов и команд к внешней базе данных.

Обработка SQLPlus предназначена для выполнения прямых запросов и команд к внешней базе данных.

Характеристики:
- Автоматическое преобразование имен прикладных объектов конфигурации в соответствующие имена структуры серверной базы данных.
- Возможность написания скрипта на русском языке с последующей транслитерацией к формату синтаксиса T-SQL.
- Вывод данных в таблицу значений с подстановкой русских наименований полей.
- Возможность вывода данных в объект типа Recordset.
- Использование параметров в SQL скрипте .
- Встроенная консоль запросов с возможностью замера времени исполнения скриптов.
- Поддержка серверных транзакций.
- Возможность подключения и работы с несколькими источниками данных.
- Выбор варианта вывода ссылок в таблице значений (ссылка, guid, массив).
- Просмотр структуры хранения данных.


Требования:
1С:Предприятие 8.1
MS SQL Server

Последняя версия 1.6

Новая версия смотри: http://infostart.ru/public/167865/

Скачать файлы

Наименование Файл Версия Размер
SQLPlus 1409
.1174459592 65,17Kb
16.01.13
1409
.1174459592 65,17Kb Скачать

См. также

PowerTools от 1 000
Подписаться Добавить вознаграждение

Комментарии

1. Александр Окулов (PowerBoy) 17.05.07 11:56
Обновил версию до 1.2
Добавил:
1.IntelleSense.
2.Шаблоны.
3.Исправил найденные ошибки.
2. Александр Окулов (PowerBoy) 10.04.07 09:20
Обновил версию до 1.1
Добавил просмотр объектов конфигурации.
Исправил найденные ошибки и сделал др. доработки.
3. Константин Ершов (Снусмумрик) 13.06.07 15:15
а как добыть незакрытый паролем модуль ?
4. Александр Окулов (PowerBoy) 14.06.07 06:06
Пока программа находится в активной стадии разработки,
считаю преждевременным открывать исходный код.
5. Александр Окулов (PowerBoy) 22.08.07 09:33
Обновил версию до 1.3
+Оптимизировал парсинг скрипта
+Оптимизировал загрузку в таб.значений
+Замер скорости до сотых секунд
6. Доржи Цыденов (support) 22.08.07 09:34
7. ceos (ceos) 27.09.07 12:19
спасибо за модуль всё-таки очень охота взглянуть на исходный код , я бы думаю помог дополнить по строителем SQL - скрипта для PostgreSQL если интересно напишите (вышлите ) dzadzen@gmail.com
8. Hotey (hotey) 30.10.07 04:01
При попытке запуска выдала такие вот ошибки:
{Обработка.SQLPlus}: Слишком много фактических параметров (ПолучитьСтруктуруХраненияБазыДанных)
{Обработка.SQLPlus}: Процедура или функция с указанным именем не определена (ПолучитьСтруктуруХраненияБазыДанных)
1С:Предприятие 8.1 (8.1.7.37) + MSSQL 2005
9. Александр Окулов (PowerBoy) 30.10.07 06:33
(8)Не может быть.Функция "ПолучитьСтруктуруХраненияБазыДанных" это системная функция платформы.У меня работает версия 1С 8.1.8.76
10. Александр Окулов (PowerBoy) 30.10.07 06:38
Обновил версию до 1.4
+Добавил просмотр имен объектов конфигурации в терминах СУБД.
11. aput (aput) 19.02.08 12:44
При переходе на закладку Конфигурация выдается сообщение "Конфигурация не найдена".
Сможете помочь?
12. Александр Окулов (PowerBoy) 20.02.08 13:08
(11) Это сообщение выдается если не было подключения к базе данных.
13. Александр Окулов (PowerBoy) 12.11.08 11:13
(11) Обновил версию до 1.5.
Исправил найденные ошибки.
14. Александр Тарасов (tarasoff) 18.11.08 18:56
При преобразовании запроса 1С в T-SQL пишет {ВнешняяОбработка.SQLPlus(1465)}: Метод объекта не обнаружен (УникальныйИдентификатор)
15. Александр Окулов (PowerBoy) 19.11.08 05:59
(14) Ошибка на тип параметра, а какого он у вас типа? И как выглядит весь запрос?
16. Александр Тарасов (tarasoff) 19.11.08 09:57
Вот весь запрос:
ВЫБРАТЬ
Задача.БизнесПроцесс.Номер КАК Номер,
Задача.БизнесПроцесс.Дата КАК Дата,
Задача.БизнесПроцесс.Инициатор.Наименование КАК Инициатор,
Задача.БизнесПроцесс.Исполнитель.Наименование КАК Исполнитель,
Задача.БизнесПроцесс.Исполнитель.КодTFlex КАК ИсполнительКодTFlex,
Задача.БизнесПроцесс.КлассификаторОшибки.Родитель.Код КАК ОбъектОшибкиКод,
Задача.БизнесПроцесс.КлассификаторОшибки.Родитель.Наименование КАК ОбъектОшибкиНаименование,
Задача.БизнесПроцесс.КлассификаторОшибки.Код КАК КлассификаторОшибкиКод,
Задача.БизнесПроцесс.КлассификаторОшибки.Наименование КАК КлассификаторОшибкиНаименование,
Задача.БизнесПроцесс.КомментарииИнициатора КАК КомментарииИнициатора,
Задача.БизнесПроцесс.Примечание КАК Примечание,
Задача.БизнесПроцесс.Изделие.НомерЧертежа КАК ИзделиеНомерЧертежа,
Задача.БизнесПроцесс.Изделие.Наименование КАК ИзделиеНаименование,
Задача.БизнесПроцесс.Номенклатура.НомерЧертежа КАК НоменклатураНомерЧертежа,
Задача.БизнесПроцесс.Номенклатура.Наименование КАК НоменклатураНаименование,
Задача.БизнесПроцесс.Материал.Наименование КАК МатериалНаименование,
Задача.БизнесПроцесс.Материал.КодTFlex_ОМ КАК МатериалКодTFlex_ОМ,
Задача.БизнесПроцесс.Материал.КодTFlex_ВМ КАК МатериалКодTFlex_ВМ,
Задача.БизнесПроцесс.Тех_операция КАК Тех_операция,
Задача.БизнесПроцесс.Оборудование.Код КАК ОборудованиеКод,
Задача.БизнесПроцесс.Оборудование.Наименование КАК ОборудованиеНаименование,
Задача.БизнесПроцесс.Подразделение.Код КАК ПодразделениеКод,
Задача.БизнесПроцесс.Подразделение.Наименование КАК ПодразделениеНаименование,
Задача.БизнесПроцесс.Идентификатор КАК ИдентификаторТехпроцесса,
Задача.БизнесПроцесс.Идентификатор.KodTFlex_DocId КАК KodTFlex_DocIdТехпроцесса
ИЗ
Задача.Задача КАК Задача
ГДЕ
Задача.Выполнена = ЛОЖЬ
И Задача.ТочкаМаршрута.Ссылка = &ТочкаМаршрута

УПОРЯДОЧИТЬ ПО
Номер

При преобразование в T-SQL вылетает системное сообщение:
Объект конфигурации не найден:<БизнесПроцесс.Номер>

Потом вылетает модальное окно с сообщением: {ВнешняяОбработка.SQLPlus(1465)}: Метод объекта не обнаружен (УникальныйИдентификатор)
17. Александр Тарасов (tarasoff) 19.11.08 11:21
С системным сообщением разобрался Объект конфигурации не найден:<БизнесПроцесс.Номер> - перезаписал запрос и исправил параметры запроса.
Но ошибка с Уникальным идентификатором осталась.
18. Александр Окулов (PowerBoy) 19.11.08 12:10
(17) Текущая версия не поддерживает тип параметра "ТочкаМаршрута".
19. Александр Тарасов (tarasoff) 19.11.08 13:16
В дальнейшем предвидится поддержка этого типа?
20. Александр Окулов (PowerBoy) 19.11.08 14:50
(19) В ближайшее время не обещаю, не сталкивался пока с бизнес-процессами.
21. Александр Окулов (PowerBoy) 09.12.08 07:48
Убрал пароль с модуля.
tormozit; LelikOFF; SirYozha; krv2k; vladimirduv; Evg-Lylyk; +6 Ответить
22. Валентин Терёхин (Valet) 18.03.09 13:44
Уточнить: "В ИЕРАРХИИ" также не поддерживается преобразование в T-SQL ?
Я прав?
23. Александр Окулов (PowerBoy) 18.03.09 13:58
24. Александр Окулов (PowerBoy) 24.07.09 07:58
Обновил до версии 1.6
Исправил найденные ошибки.
25. maxp77 (maxp77) 25.07.09 14:28
(24) в процедуре СоздатьСтруктурыЗапросов() при заполнении таблицы ИменаПолей постфикс "RRef" необходимо также добавлять и для ПоляХранения "OwnerID"; т.е.
условие должно выглядеть так:

<HT ML><HEAD></HEAD>
<BODY>
<P style="COLOR: blue; FONT-FAMILY: courier new,courier; TEXT-ALIGN: left">                    <FONT color=red>Если </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"ID" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"ParentID" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"OwnerID" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"Recorder" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"AccountDt" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"AccountCt" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"Document" </FONT><FONT color=red>ИЛИ </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT><FONT color=black>"DimKind" </FONT><FONT color=red>ИЛИ </FONT>ПолучитьСсылочныйРеквизит<FONT color=red>(</FONT>Поле<FONT color=red>.</FONT>Метаданные<FONT color=red>,</FONT>Ложь<FONT color=red>).</FONT>Количество<FONT color=red>() > </FONT><FONT color=black>0  </FONT><FONT color=red>Тогда
                        </FONT>НовСтрПоля<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения<FONT color=red>+</FONT><FONT color=black>"RRef"</FONT><FONT color=red>;
                    Иначе
                        </FONT>НовСтрПоля<FONT color=red>.</FONT>ИмяПоляХранения <FONT color=red>= </FONT>Поле<FONT color=red>.</FONT>ИмяПоляХранения<FONT color=red>;
                    КонецЕсли;

</FONT></P></BODY></HTML>
26. maxp77 (maxp77) 25.07.09 14:30
хотел раскраской кода воспользоваться...

Если Поле.ИмяПоляХранения = "ID" ИЛИ Поле.ИмяПоляХранения = "ParentID" ИЛИ Поле.ИмяПоляХранения = "OwnerID" ИЛИ Поле.ИмяПоляХранения = "Recorder" ИЛИ Поле.ИмяПоляХранения = "AccountDt" ИЛИ Поле.ИмяПоляХранения = "AccountCt" ИЛИ Поле.ИмяПоляХранения = "Document" ИЛИ Поле.ИмяПоляХранения = "DimKind" ИЛИ ПолучитьСсылочныйРеквизит(Поле.Метаданные,Ложь).Количество() > 0 Тогда
НовСтрПоля.ИмяПоляХранения = Поле.ИмяПоляХранения+"RRef";
Иначе
НовСтрПоля.ИмяПоляХранения = Поле.ИмяПоляХранения;
КонецЕсли;
27. Step (step_mc) 20.04.10 07:56
Можно при помощи этого средства выполнить TRUNCATE TABLE?
28. Александр Окулов (PowerBoy) 20.04.10 08:28
29. Step (step_mc) 20.04.10 09:14
(28) Ок. Скачал.
Пошагово делаю так:
1. Запускаю как внешнюю обработку.
2. Проверяю строку соедининения (на вкладке настройка). Соединение с источником данных установлено
3. На вкладке Конфигурация вижу объекты метаданных
4. На вкладке SQL+ пишу запрос
TRUNCATE TABLE [dbo].[_Reference24931_VT24940]
TRUNCATE TABLE [dbo].[_Reference24931]
5. Жму кнопку F5.
6. Проверяю справочник - пустой. Сработало!!!

СПАСИБО!!!
30. name surname (UUUU4) 21.04.10 22:43
:?: Объект конфигурации не найден:<РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто>
31. Александр Окулов (PowerBoy) 22.04.10 06:09
(30) Виртуальные таблицы не поддерживаются.
32. name surname (UUUU4) 24.04.10 13:23
А жаль, в профайлере они выглядят как #tt1 #tt2 b т.д. почему бы не перенять их создание из консоли запросов?
33. Леонид Мельников (Kaperang) 31.08.10 11:58
Пишу запрос:
"UPDATE РегистрСведений.ДоступКСправочникам
SET РегистрСведений.ДоступКСправочникам.Объект=&НовоеЗначение
WHERE РегистрСведений.ДоступКСправочникам.Объект=&СтароеЗначение ;"
Обработка переводит:
" UPDATE _InfoReg5578
SET _InfoReg5578 = &NovoeZnachjenie
WHERE _InfoReg5578 = &StaroeZnachjenie ;"
Видимо, не смогла отработать третью часть имени поля "РегистрСведений.ДоступКСправочникам.Объект"

Пишу запрос:
"
UPDATE РегистрСведений.ДоступКСправочникам AS _Table1
SET _Table1.Объект=&НовоеЗначение
WHERE _Table1.Объект=&СтароеЗначение ;
"
Переводит на T-SQL:
"
UPDATE _InfoReg5578 AS _Table1
SET _Table1.Objjekt = &NovoeZnachjenie
WHERE _Table1.Objjekt = &StaroeZnachjenie ;
"

По тексту запроса видно, что поле "Объект" таблицы "РегистрСведений.ДоступКСправочникам" обработка не смогла найти.
Понятно, что что-то путаю с орфографией. А что конкретно путаю- непонятно.
34. Михаил Ражиков (tango) 31.08.10 12:24
(33) Объект там м.б. разных типов
35. Леонид Мельников (Kaperang) 31.08.10 14:04
(34) И? Мне нужно выбрать записи содержащие в колонке конкретное значение и заменить другим, тоже конкретным, значением. И как это сделать? :(
36. Леонид Мельников (Kaperang) 31.08.10 14:45
Работоспособный запрос на T-SQL выглядит так:
" Update _InfoReg5578
Set _Fld5581_RRRef = 0x00000000000000000000000000000000
Where _Fld5581_RRRef = 0x9e3b00151774a22d11dfb4c28ee2dd95"

Никак не могу вкурить, какой текст надо написать на SQLPlus, чтобы он транслировался в тот, что написан выше на T-SQL. :(
37. Brovashov Ilya (Brovashov) 02.12.10 15:14
Подключение к удаленной базе произошло успешно. Пробую "Select * From Sysobjects" - в результате ругается "Индекс находится за границами массива (1111)". Что ж делаю не так то?
38. Dmitry The Wing (wing) 10.03.11 11:16
(31) Честно говоря, не понимаю тогда, зачем может пригодиться обработка кроме как в качестве примера получения имен таблиц и полей.
Первое, что потребовалось получить извне - это остатки. А для этого требуется обращение к ВТ.

Также пришлось дорабатывать обработку для поддержки PostgreSQL ... и пока не нашел способа получить имя БД - пока руками вписываю.
39. Ийон Тихий (cool.vlad4) 10.03.11 11:21
(36) :D Ответ никак...Узнавайте ID сессии(где-то на мисте проскакивала тема), и через DBCC узнавайте последний исполненный запрос. Полного же конвертирования запросов 1С в T-SQL, без исполнения 1С запросов, я не знаю.
ЗЫ В данной обработке, я так полагаю, идет простая замена подобных выражений "ВЫБРАТЬ"="SELECT".
ЗЫ 1С является прослойкой над БД, т.е. у них своя логика запросов, честно говоря не понимаю, как можно честно сконвертировать 1С запрос в sql не зная эту логику, не имея исходников. Можно правда предполагать как работает 1С.
40. Сергей Мурзинов (Sergey_Murzinov) 28.09.11 18:35
Уникальность 1С в действии, ура
41. Лена Ленина (leksa18) 19.10.11 20:41
Использовал обработку для получения имен таблиц и полей - очень удобно. Спасибо
42. Альберт АЙТАТ (al2ko) 24.11.11 09:29
Интересная обработка. Недавно прочитал в Вопросах по лицензированию на сайте 1С:

Лицензионное соглашение не позволяет использовать недокументированные фирмой "1С" средства для построения решений на платформе 1С:Предприятие. Это означает, что средства СУБД (или любые другие внесистемные средства) можно использовать только в том случае, если документация по продуктам линейки "1С:Предприятие" (включая ИТС) содержит явную рекомендацию использовать данное средство для решения данной задачи.

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

Поучается нельзя напрямую обращаться к SQL.
43. Алексей Миронов (a_mironov) 11.12.11 03:58
Пишу запрос:
"UPDATE РегистрСведений.ДоступКСправочникам
SET РегистрСведений.ДоступКСправочникам.Объект=&НовоеЗначение
WHERE РегистрСведений.ДоступКСправочникам.Объект=&СтароеЗначение ;"
Обработка переводит:
" UPDATE _InfoReg5578
SET _InfoReg5578 = &NovoeZnachjenie
WHERE _InfoReg5578 = &StaroeZnachjenie ;"
Видимо, не смогла отработать третью часть имени поля "РегистрСведений.ДоступКСправочникам.Объект"

Пишу запрос:
"
UPDATE РегистрСведений.ДоступКСправочникам AS _Table1
SET _Table1.Объект=&НовоеЗначение
WHERE _Table1.Объект=&СтароеЗначение ;
"
Переводит на T-SQL:
"
UPDATE _InfoReg5578 AS _Table1
SET _Table1.Objjekt = &NovoeZnachjenie
WHERE _Table1.Objjekt = &StaroeZnachjenie ;
"

По тексту запроса видно, что поле "Объект" таблицы "РегистрСведений.ДоступКСправочникам" обработка не смогла найти.
Понятно, что что-то путаю с орфографией. А что конкретно путаю- непонятно.
44. Иван Гардер (H@N) 19.01.12 18:14
(42) al2ko, С точки зрения 1с конечно нельзя, а с точки зрения нас "несчастных пользователей" просто надо.
45. Evgeniy Ivanov (dev.evgen) 17.02.12 12:02
Очень качественный модуль, облегчающий написание прямых sql запросов. после долгих поисков наткнулся на данную обработку - очень доволен. Огромное спасибо авторам за проделанную работу.
46. Ann Korableva (Moll) 11.10.12 06:55
интересненько.. будем пробовать, при конвертации на 8.2 проблем же не возникнет?

автору благодарности x]
47. Natalia Vasilchenko (Natalia) 12.02.16 17:45
Запрос с точками обрабатывается "как-то не так"

Например,

ВЫБРАТЬ
Банки.Ссылка,
Банки.Родитель.Город
ИЗ
Справочник.Банки КАК Банки

превращается

Select
Banki._IDRRef ,
Banki.Roditelyy.Gorod
From
_Reference20 As Banki

Ожидалось увидеть левые соединения )))


48. Александр Окулов (PowerBoy) 15.02.16 06:20
(47) Все дополнительные навороты 1С над SQL не обрабатываются, т.е. разименование составных имен, виртуальные таблицы, иерархия, итоги, поля составных типов.
49. Natalia Vasilchenko (Natalia) 16.02.16 17:05
(48) Эх.. жаль )
Сейчас все просто отлично
А были бы разыменования составных имен - было бы просто волшебно )))

Спасибо, работа отличная
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа