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 не будет опубликован. Обязательные поля помечены *