Работа с базами данных 1С в SQL Server Management Studio (Расширение для SSMS)






Расширение позволяет просматривать связи объектов метаданных и таблиц БД, сгруппированные данные (по группам метаданных) об используемом дисковом пространстве и выполнять трансляцию SQL текста запроса в термины 1С. И бонусом — при наведении курсора мыши на таблицу или поле показывает назначение объекта в терминах 1С.

При работе с более-менее крупными системами периодически возникают задачи, требующие взаимодействия с базой данных 1С напрямую. В круг таких задач входит расследование проблем производительности и это стало толчком к написанию объекта статьи.

Расширение создано для SSMS 18 версии, в более ранних версиях — не запустится. Тестировалось расширение на платформе 8.3.15.

С частями системы 1С расширение никак не взаимодействует, считывая структуру конфигурации напрямую из базы данных.

Более детально, возможности:

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

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

Всплывающие подсказки над названиями таблиц и колонок в терминах метаданных 1С.

Порядок работы:

При подключении к серверу, расширение анализирует все доступные базы данных и выделяет из них те, которые являются базами данных 1С (этот процесс происходит в фоновом режиме, прогресс операции показывается в статусбаре студии). Далее расширение считывает структуру конфигурации из каждой базы данных и формирует кеш соответствий DBMS имен и метаданных 1С. Все возможности расширения для базы данных будут доступны только тогда, когда для этой базы будет сформирован кеш. Команды для вывода структуры конфигурации и отчет доступны в контекстном меню базы данных. Всплывающие подсказки в обозревателе объектов будут заполнены после считывания структуры конфигурации из базы данных. Трансляция текста запроса доступна в контекстном меню окна для ввода текста запроса.

По найденным ошибкам и замечаниям пишите в комментариях, буду исправлять.

Установка:

Поместить папку "OneSToolsSsmsExtension" из архива в каталог "C:Program Files (x86)Microsoft SQL Server Management Studio 18Common7IDEExtensions"

Если в работе с расширением наблюдаются какие-то необъяснимые явления, очистите папку кеша расширения по пути %appdata%/OneSToolsSsmsExtension

Upd 27.11.2024: Исправил небольшую ошибку в релизе, приводящую к к новому циклу обновлению кеша баз при смене контекста сервера.

Upd 29.11.2024: Устранено некорректное поведение программы при удалении базы данных. Добавлено отображение названия и версии конфигурации в нижней части окна отображения структуры.

Upd 04.12.2024: Изменено оформление отчета об использованном дисковом пространстве (выравнивание текста в колонках и выделение групп цифр). Доработан код для возможности работы с расширением при ограниченных правах пользователя на сервере.

38 Comments

  1. bulpi

    У меня версия SSMS 10.50.1600.1 . Какая именно группа цифр должна быть не ниже 18 ?

    Reply
  2. akpaevj

    (1) Первая группа. С 18 версии студия является отдельным приложением, не входящим в пакет MSSQL Server. Можете смело ставить бесплатную версию с сайта Microsoft и пользоваться ей. Ссылка для скачивания — https://docs.microsoft.com/ru-ru/sql/ssms/download-sql-server-management-studio-ssms?view=sql-server-ver15

    Reply
  3. YPermitin

    (0) Очень интересное решение. Надо как-нибудь потестить.

    Reply
  4. killermss

    Добрый день, а исходники данной публикации иметься или там только скомпилированный файл

    Reply
  5. akpaevj

    (4) Исходный код расширения закрыт.

    Reply
  6. killermss

    (5) а есть возможность получения исходника? более детально можно в личке

    Reply
  7. akpaevj

    (6) Пока я не готов его открыть. Это было бы неуважением по отношению к тем людям, которые покупают расширение.

    Reply
  8. Virikus

    (7) но и использовать расширение без понимания насколько оно безопасно никто не будет.

    Reply
  9. killermss

    (7) а можешь в публикацию кинуть и исходники? и поставь скажем 15sm

    Reply
  10. akpaevj

    (8) С точки зрения работы с данными БД — ни одного, какого-либо insert запроса в расширении нет. С точки зрения простого недоверия автору — Вы на самом деле у каждого проприетарного ПО требуете исходный код?

    Reply
  11. Virikus

    (10) а Вы лично на рабочее пространство себе ставите все без проверки безопасности?

    Кредита доверия ваше расширение пока не наработало и поэтому вопрос об исходниках звучит нормально, их же никто не просит бесплатно. Не надо так негативно реагировать.

    Если у вас на предприятие политика безопасности позволяет ставить любое ПО без согласования, это не значит что у всех такое состояние дел.

    Reply
  12. akpaevj

    (11) К сожалению интонацию не передать, я в очень дружелюбной манере общаюсь. И Вас прекрасно понимаю, но это не повод для открытия исходников. Я работал над ними 2 месяца не просто так, что-бы продать за 3 копейки. Единственное, что могу Вам предложить — поставьте сниффер и проверьте исходящий трафик от приложения, от там отсутствует вовсе.

    Reply
  13. akpaevj

    (9) Ответ на вопрос дал выше, уважаемому Virikus. Какая часть исходников Вас конкретно интересует? Приложение состоит из нескольких составляющих, основные из которых — модуль парсинга внутренних структур 1С и собственно само расширение, добавляющее пункты меню и осуществляющее взаимодействие с GUI студии.

    Reply
  14. akpaevj

    (9) По поводу модуля парсинга — его не выложу. Пакет расширения для SSMS сам по себе очень интересен, так как информация о его написании практически отсутствует в интернете, на этот счет могу написать отдельную статью.

    Reply
  15. akpaevj

    (11) В моей компании все тестируется на серверах разработки и только потом попадает в рабочую среду.

    Reply
  16. Virikus

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

    Reply
  17. akpaevj

    (16) Это уже конструктивный разговор, я подготовлю статью и дам развернутый ответ на Ваши вопросы.

    Reply
  18. w.r.

    (14) ну как бы это не правда. 4я ссылка в гугле https://www.codeproject.com/Articles/1243356/Create-Your-Own-SQL-Server-Management-Studio-SSMS

    Reply
  19. akpaevj

    (18) Создание пакета аналогично обычному созданию VSPackage (для 18 версии ssms). Разговор шёл не об этом, а о работе с объектами SSMS изнутри пакета.

    Reply
  20. w.r.

    (19)

    Автор статьи в конце даёт ссылки на исходные коды проектов. Если поразбираться, то там можно все найти

    Reply
  21. dmitrydemenew

    (20)на просторах интернета можно найти тучи рекомендаций, описаний, инструкций и т. п., но далеко не у всех есть время и терпение придумать, спроектировать и собрать что-то необычное и полезное. Автору — плюс.

    Reply
  22. akpaevj

    (20) Именно поэтому я и написал что практически отсутствует. Эти несколько проектов и есть те крупицы информации что удалось найти на просторах. Я не считаю пару-тройку проектов, написанных методом тыка, нормальной документацией. Большая часть времени разработки — это тыканье носом и дебаг

    Reply
  23. akpaevj

    (20) Отсутствие нормальных, официальных гайдов серьёзно усложняет и тормозит процесс, приходится многое реверсить.

    Reply
  24. ByNiko1984

    (0) А есть какая-нибудь бесплатная демоверсия с ограниченным функционалом? Просто попробовать?

    Reply
  25. akpaevj

    (24) Не предусмотрено

    Reply
  26. ByNiko1984

    (25) понимаю.

    Тогда буду копить золото :)))

    Reply
  27. akpaevj

    (26) И древесину) А некоторые и кодами пытаются воспользоваться)

    Reply
  28. ByNiko1984

    (27) недостаточно материалов для строительства :))))

    Reply
  29. user830227

    Подскажите где кэш расширения чистить, пожалуйста. Удалили базу и теперь обновление кэша на ней зависает.

    Reply
  30. user830227

    (29) Нашел, спасибо. %AppData%RoamingOneSToolsSsmsExtension

    Reply
  31. akpaevj

    (30) Все правильно, там. Спасибо за кейс, исправлю неправильное поведение и залью новую версию. Не учел такое развитие событий)

    Reply
  32. user830227

    А добавленные в расширении объекты никак не распознать? Сейчас эти таблицы отображаются как «СистемнаяТаблица».

    Reply
  33. akpaevj

    (32) На базах с расширением не проверял работу, исправлю некорректное поведение и обновлю статью.

    Reply
  34. user830227

    Есть пожелание. В «Использовании дисковой памяти таблицами (1С)» сделайте, пожалуйста, выравнивание цифр по правому краю и с разделителями разрядов.

    Reply
  35. akpaevj

    (34) Сделаю, не проблема

    Reply
  36. user830227

    Все сломалось.

    Обнаружил, что в последней версии файлов меньше, чем у меня в C:Program Files (x86)Microsoft SQL Server Management Studio 18Common7IDEExtensionsOneSToolsSsmsExtension. Все удалил, чтобы не искать несоответствия. Скопировал заново все файлы из архива и теперь мне SSMS выдает ошибку. Прикрепил к сообщению.

    Кеш чистил.

    Reply
  37. user830227

    (36) Вернул предыдущую версию и обновил только изменившиеся файлы. Заработало.

    Reply
  38. akpaevj

    (37) Шальная какая-то ошибка, надо логи смотреть, подобного не замечал.

    Reply

Leave a Comment

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