Консоль запросов SQL





Иногда возникает желание посмотреть, как информация 1С уложена в базе данных. Данная обработка позволяет показать структуру базы данных, а так же обычными SQL-запросами просмотреть содержимое таблиц MsSQL.

Обработка использует SQLOLEDB-провайдер от Microsoft. Обычно в системе этот провайдер уже установлен и называется SQLSERV32.DLL. Драйвер называется обычно просто «SQL Server». Просмотреть установленные драйвера можно вызвав:

c:windowssyswow64odbcad32.exe — для х86 версии сервера предприятия, или

c:windowssystem32odbcad32.exe — для х64 версии сервера предприятия.

Подключение выполняется следующим кодом:

 СтрокаПодключения =
"Provider=SQLOLEDB.1;
|User ID=" + Пользователь + ";
|Pwd=" + Пароль + ";
|Data Source=" + Сервер + ";
|Initial Catalog=" + База + ";
|MultipleActiveResultSets=True";//наша database

Если Соединение = Неопределено Тогда
Connection  = Новый COMОбъект("ADODB.Connection");
Иначе
Connection  = Соединение;
КонецЕсли;

Для того, что бы обработка заработала, необходимо установить параметры соединения с SQL-сервером по кнопке настройка. Естественно, нужно знать пользователя и пароль, которые имеют соответствующие разрешения на работу с СУБД.

А в остальном — пробуйте.

PS: И как я сразу не догадался такую штуку сделать. В форме запросов я добавил возможность показать сам объект при двойном щелчке на ссылку объекта. Там всё просто. Ссылка преобразуется в УИД, а потом тупо перебираются все возможные объекты метаданных. Есть идеи, как ускорить алгоритм, но меня производительность пока и так устраивает.

7 Comments

  1. Gilev.Vyacheslav

    количество строк при этом как то учитывается?

    Reply
  2. igel9780

    (1) Gilev.Vyacheslav, Штатно при двойном клике на таблице, генерируется запрос типа SELECT TOP 100 %FIELDLIST% FROM %TABLENAME%. Потому как можно и не дождаться, пока таблица выкачается. Опять же, ADO выдает COMSafeArray для всех идентификаторов. Его приходится переводить в строку, что тоже не добавляет быстродействия.

    Reply
  3. igel9780

    Добавил возможность по двойному щелчку на поле идентификатора открывать соответствующий объект базы данных.

    Reply
  4. LavinVadik

    почему не указано что под управляемые формы или не управляемый?

    под не управляемый не открывается под управляемые ругается!!!

    не рабочая.!!!

    прошу вернуть мне обратно мои 1 стартмани !!!

    Ошибка инициализации модуля: ВнешняяОбработка.КонсольSQL.Форма.Форма.Форма
    по причине:
    {ВнешняяОбработка.КонсольSQL.Форма.Форма.Форма(119,26)}: Переменная не определена (ЭтотОбъект)
    Для Каждого Реквизит Из <<?>>ЭтотОбъект.ПолучитьРеквизиты(«Объект») Цикл
    {ВнешняяОбработка.КонсольSQL.Форма.Форма.Форма(134,26)}: Переменная не определена (ЭтотОбъект)
    Для Каждого Реквизит Из <<?>>ЭтотОбъект.ПолучитьРеквизиты(«Объект») Цикл
    
    Reply
  5. Kaspirovsky

    в толстом клиенте пробовал?

    Reply
  6. Bukaska

    (4)ВЫ бы хоть смотрели когда скачивали, в конце 2016 года и платформа была другая. Конечно пытаться открыть на текущей платформе наработке двухгодовой давности, когда правило программирования на каждом релизе меняется и выдает очередные заморочки. Сочувствую.. Обратитесь в техподдержку. Впредь смотрите дату публикации

    Reply
  7. LavinVadik

    дата публикации тут ни при чем,

    разобрался, че к чему

    сделана под УФ

    на УФ тонком клиент на БП 30 и ЗУП 31 — работает

    на УПП в обычных формах не работает. пробывал открыть в УФ УПП тоже не взлетела.

    (4)

    Reply

Leave a Comment

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