SQLPlus



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

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

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

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

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

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

49 Comments

  1. PowerBoy

    Обновил версию до 1.1

    Добавил просмотр объектов конфигурации.

    Исправил найденные ошибки и сделал др. доработки.

    Reply
  2. PowerBoy

    Обновил версию до 1.2

    Добавил:

    1.IntelleSense.

    2.Шаблоны.

    3.Исправил найденные ошибки.

    Reply
  3. Снусмумрик

    а как добыть незакрытый паролем модуль ?

    Reply
  4. PowerBoy

    Пока программа находится в активной стадии разработки,

    считаю преждевременным открывать исходный код.

    Reply
  5. PowerBoy

    Обновил версию до 1.3

    +Оптимизировал парсинг скрипта

    +Оптимизировал загрузку в таб.значений

    +Замер скорости до сотых секунд

    Reply
  6. support

    + за обновление

    Reply
  7. ceos

    спасибо за модуль всё-таки очень охота взглянуть на исходный код , я бы думаю помог дополнить по строителем SQL — скрипта для PostgreSQL если интересно напишите (вышлите ) dzadzen@gmail.com

    Reply
  8. hotey

    При попытке запуска выдала такие вот ошибки:

    {Обработка.SQLPlus}: Слишком много фактических параметров (ПолучитьСтруктуруХраненияБазыДанных)

    {Обработка.SQLPlus}: Процедура или функция с указанным именем не определена (ПолучитьСтруктуруХраненияБазыДанных)

    1С:Предприятие 8.1 (8.1.7.37) + MSSQL 2005

    Reply
  9. PowerBoy

    (8)Не может быть.Функция «ПолучитьСтруктуруХраненияБазыДанных» это системная функция платформы.У меня работает версия 1С 8.1.8.76

    Reply
  10. PowerBoy

    Обновил версию до 1.4

    +Добавил просмотр имен объектов конфигурации в терминах СУБД.

    Reply
  11. aput

    При переходе на закладку Конфигурация выдается сообщение «Конфигурация не найдена».

    Сможете помочь?

    Reply
  12. PowerBoy

    (11) Это сообщение выдается если не было подключения к базе данных.

    Reply
  13. PowerBoy

    (11) Обновил версию до 1.5.

    Исправил найденные ошибки.

    Reply
  14. tarasoff

    При преобразовании запроса 1С в T-SQL пишет {ВнешняяОбработка.SQLPlus(1465)}: Метод объекта не обнаружен (УникальныйИдентификатор)

    Reply
  15. PowerBoy

    (14) Ошибка на тип параметра, а какого он у вас типа? И как выглядит весь запрос?

    Reply
  16. tarasoff

    Вот весь запрос:

    ВЫБРАТЬ

    Задача.БизнесПроцесс.Номер КАК Номер,

    Задача.БизнесПроцесс.Дата КАК Дата,

    Задача.БизнесПроцесс.Инициатор.Наименование КАК Инициатор,

    Задача.БизнесПроцесс.Исполнитель.Наименование КАК Исполнитель,

    Задача.БизнесПроцесс.Исполнитель.КодTFlex КАК ИсполнительКодTFlex,

    Задача.БизнесПроцесс.КлассификаторОшибки.Родитель.Код КАК ОбъектОшибкиКод,

    Задача.БизнесПроцесс.КлассификаторОшибки.Родитель.Наименование КАК ОбъектОшибкиНаименование,

    Задача.БизнесПроцесс.КлассификаторОшибки.Код КАК КлассификаторОшибкиКод,

    Задача.БизнесПроцесс.КлассификаторОшибки.Наименование КАК КлассификаторОшибкиНаименование,

    Задача.БизнесПроцесс.КомментарииИнициатора КАК КомментарииИнициатора,

    Задача.БизнесПроцесс.Примечание КАК Примечание,

    Задача.БизнесПроцесс.Изделие.НомерЧертежа КАК ИзделиеНомерЧертежа,

    Задача.БизнесПроцесс.Изделие.Наименование КАК ИзделиеНаименование,

    Задача.БизнесПроцесс.Номенклатура.НомерЧертежа КАК НоменклатураНомерЧертежа,

    Задача.БизнесПроцесс.Номенклатура.Наименование КАК НоменклатураНаименование,

    Задача.БизнесПроцесс.Материал.Наименование КАК МатериалНаименование,

    Задача.БизнесПроцесс.Материал.КодTFlex_ОМ КАК МатериалКодTFlex_ОМ,

    Задача.БизнесПроцесс.Материал.КодTFlex_ВМ КАК МатериалКодTFlex_ВМ,

    Задача.БизнесПроцесс.Тех_операция КАК Тех_операция,

    Задача.БизнесПроцесс.Оборудование.Код КАК ОборудованиеКод,

    Задача.БизнесПроцесс.Оборудование.Наименование КАК ОборудованиеНаименование,

    Задача.БизнесПроцесс.Подразделение.Код КАК ПодразделениеКод,

    Задача.БизнесПроцесс.Подразделение.Наименование КАК ПодразделениеНаименование,

    Задача.БизнесПроцесс.Идентификатор КАК ИдентификаторТехпроцесса,

    Задача.БизнесПроцесс.Идентификатор.KodTFlex_DocId КАК KodTFlex_DocIdТехпроцесса

    ИЗ

    Задача.Задача КАК Задача

    ГДЕ

    Задача.Выполнена = ЛОЖЬ

    И Задача.ТочкаМаршрута.Ссылка = &ТочкаМаршрута

    УПОРЯДОЧИТЬ ПО

    Номер

    При преобразование в T-SQL вылетает системное сообщение:

    Объект конфигурации не найден:<БизнесПроцесс.Номер>

    Потом вылетает модальное окно с сообщением: {ВнешняяОбработка.SQLPlus(1465)}: Метод объекта не обнаружен (УникальныйИдентификатор)

    Reply
  17. tarasoff

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

    Но ошибка с Уникальным идентификатором осталась.

    Reply
  18. PowerBoy

    (17) Текущая версия не поддерживает тип параметра «ТочкаМаршрута».

    Reply
  19. tarasoff

    В дальнейшем предвидится поддержка этого типа?

    Reply
  20. PowerBoy

    (19) В ближайшее время не обещаю, не сталкивался пока с бизнес-процессами.

    Reply
  21. PowerBoy

    Убрал пароль с модуля.

    Reply
  22. Valet

    Уточнить: «В ИЕРАРХИИ» также не поддерживается преобразование в T-SQL ?

    Я прав?

    Reply
  23. PowerBoy

    (22) Да.

    Reply
  24. PowerBoy

    Обновил до версии 1.6

    Исправил найденные ошибки.

    Reply
  25. maxp77
    Reply
  26. maxp77

    хотел раскраской кода воспользоваться…

    Если Поле.ИмяПоляХранения = «ID» ИЛИ Поле.ИмяПоляХранения = «ParentID» ИЛИ Поле.ИмяПоляХранения = «OwnerID» ИЛИ Поле.ИмяПоляХранения = «Recorder» ИЛИ Поле.ИмяПоляХранения = «AccountDt» ИЛИ Поле.ИмяПоляХранения = «AccountCt» ИЛИ Поле.ИмяПоляХранения = «Document» ИЛИ Поле.ИмяПоляХранения = «DimKind» ИЛИ ПолучитьСсылочныйРеквизит(Поле.Метаданные,Ложь).Количество() > 0 Тогда

    НовСтрПоля.ИмяПоляХранения = Поле.ИмяПоляХранения+»RRef»;

    Иначе

    НовСтрПоля.ИмяПоляХранения = Поле.ИмяПоляХранения;

    КонецЕсли;

    Reply
  27. step_mc

    Можно при помощи этого средства выполнить TRUNCATE TABLE?

    Reply
  28. PowerBoy

    (27) да

    Reply
  29. step_mc

    (28) Ок. Скачал.

    Пошагово делаю так:

    1. Запускаю как внешнюю обработку.

    2. Проверяю строку соедининения (на вкладке настройка). Соединение с источником данных установлено

    3. На вкладке Конфигурация вижу объекты метаданных

    4. На вкладке SQL+ пишу запрос

    TRUNCATE TABLE [dbo].[_Reference24931_VT24940]

    TRUNCATE TABLE [dbo].[_Reference24931]

    5. Жму кнопку F5.

    6. Проверяю справочник — пустой. Сработало!!!

    СПАСИБО!!!

    Reply
  30. UUUU4

    ❓ Объект конфигурации не найден:<РегистрБухгалтерии.Хозрасчетный.ДвиженияССубконто>

    Reply
  31. PowerBoy

    (30) Виртуальные таблицы не поддерживаются.

    Reply
  32. UUUU4

    А жаль, в профайлере они выглядят как #tt1 #tt2 b т.д. почему бы не перенять их создание из консоли запросов?

    Reply
  33. Kaperang

    Пишу запрос:

    «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 ;

    »

    По тексту запроса видно, что поле «Объект» таблицы «РегистрСведений.ДоступКСправочникам» обработка не смогла найти.

    Понятно, что что-то путаю с орфографией. А что конкретно путаю- непонятно.

    Reply
  34. tango

    (33) Объект там м.б. разных типов

    Reply
  35. Kaperang

    (34) И? Мне нужно выбрать записи содержащие в колонке конкретное значение и заменить другим, тоже конкретным, значением. И как это сделать? 🙁

    Reply
  36. Kaperang

    Работоспособный запрос на T-SQL выглядит так:

    » Update _InfoReg5578

    Set _Fld5581_RRRef = 0x00000000000000000000000000000000

    Where _Fld5581_RRRef = 0x9e3b00151774a22d11dfb4c28ee2dd95″

    Никак не могу вкурить, какой текст надо написать на SQLPlus, чтобы он транслировался в тот, что написан выше на T-SQL. 🙁

    Reply
  37. Brovashov

    Подключение к удаленной базе произошло успешно. Пробую «Select * From Sysobjects» — в результате ругается «Индекс находится за границами массива (1111)». Что ж делаю не так то?

    Reply
  38. wing

    (31) Честно говоря, не понимаю тогда, зачем может пригодиться обработка кроме как в качестве примера получения имен таблиц и полей.

    Первое, что потребовалось получить извне — это остатки. А для этого требуется обращение к ВТ.

    Также пришлось дорабатывать обработку для поддержки PostgreSQL … и пока не нашел способа получить имя БД — пока руками вписываю.

    Reply
  39. cool.vlad4

    (36) 😀 Ответ никак…Узнавайте ID сессии(где-то на мисте проскакивала тема), и через DBCC узнавайте последний исполненный запрос. Полного же конвертирования запросов 1С в T-SQL, без исполнения 1С запросов, я не знаю.

    ЗЫ В данной обработке, я так полагаю, идет простая замена подобных выражений «ВЫБРАТЬ»=»SELECT».

    ЗЫ 1С является прослойкой над БД, т.е. у них своя логика запросов, честно говоря не понимаю, как можно честно сконвертировать 1С запрос в sql не зная эту логику, не имея исходников. Можно правда предполагать как работает 1С.

    Reply
  40. Sergey_Murzinov

    Уникальность 1С в действии, ура

    Reply
  41. leksa18

    Использовал обработку для получения имен таблиц и полей — очень удобно. Спасибо

    Reply
  42. al2ko

    Интересная обработка. Недавно прочитал в Вопросах по лицензированию на сайте 1С:

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

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

    Поучается нельзя напрямую обращаться к SQL.

    Reply
  43. a_mironov

    Пишу запрос:

    «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 ;

    »

    По тексту запроса видно, что поле «Объект» таблицы «РегистрСведений.ДоступКСправочникам» обработка не смогла найти.

    Понятно, что что-то путаю с орфографией. А что конкретно путаю- непонятно.

    Reply
  44. H@N

    (42) al2ko, С точки зрения 1с конечно нельзя, а с точки зрения нас «несчастных пользователей» просто надо.

    Reply
  45. dev.evgen

    Очень качественный модуль, облегчающий написание прямых sql запросов. после долгих поисков наткнулся на данную обработку — очень доволен. Огромное спасибо авторам за проделанную работу.

    Reply
  46. Moll

    интересненько.. будем пробовать, при конвертации на 8.2 проблем же не возникнет?

    автору благодарности x]

    Reply
  47. Natalia

    Запрос с точками обрабатывается «как-то не так»

    Например,

    ВЫБРАТЬ

    Банки.Ссылка,

    Банки.Родитель.Город

    ИЗ

    Справочник.Банки КАК Банки

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

    Select

    Banki._IDRRef ,

    Banki.Roditelyy.Gorod

    From

    _Reference20 As Banki

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

    Reply
  48. PowerBoy

    (47) Все дополнительные навороты 1С над SQL не обрабатываются, т.е. разименование составных имен, виртуальные таблицы, иерархия, итоги, поля составных типов.

    Reply
  49. Natalia

    (48) Эх.. жаль )

    Сейчас все просто отлично

    А были бы разыменования составных имен — было бы просто волшебно )))

    Спасибо, работа отличная

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *