Просмотр и анализ структуры базы данных (отчет на СКД)














Отчет для просмотра и анализа структуры базы данных с поддержкой файловых баз (ограниченный режим), а также баз на SQL Server и PostgreSQL.

Назначение и возможности

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

Основные возможности отчета:

  • Отображение таблиц базы данных, их полей и индексов с учетом связей между объектами базы данных и метаданными конфигурации.
  • Вычисление размера таблиц и индексов для объектов конфигурации, а также количества записей в них.
  • Отображение НЕплатформенных индексов в базе (те, что были добавлены вручную администратором или разработчиком).
  • Вывод дополнительных атрибутов СУБД для полей таблицы, индексов и их структуры (например, это возможность установки значения NULL, размер каждого отдельного индекса, проверка наличия платформенного индекса в базе данных, порядок полей в индексе и таблицах и др.).
  • Получение информации обо всех таблицах информационной базы, а не только тех, что доступны через "ПолучитьСтруктуруХраненияБазыДанных()". Например, отчет позволит посмотреть информацию о системных таблицах "V8USERS" и "PARAMS", а также отобразит таблицы другие служебные / системные таблицы.
  • Дополнительная классификация объектов и их частей. Например, добавлены поля "Вид объекта", "Тип объекта", доп. описание полей составных типов данных и др.
  • Расширенное отображение типа данных 1С для полей.
  • 10 предопределенных вариантов отчетов с различной детализацией.
  • Гибкая настройка отображения и компоновки данных с помощью штатных возможностей системы компоновки данных.
  • Поддержка подсистем БСП (варианты отчетов и дополнительные отчеты и обработки).

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

Необходимая версия платформы для работы отчета — 8.3.5 и выше. Внутри отчета используется кэширование данных, получение только необходимых данных в зависимости от настроек отчета и еще некоторые фичи.

 

 Но как же файловые базы…

Выше показаны настройки подключения к базе данных для получения дополнительной информации. Ниже, под спойлером, Вы найдете подробное описание каждой настройки.

 

 Настройки подключения

Классическим вариантом отчета, который повторяет функциональность большинства обработок схожего назначения на Инфостарт (примеры таких разработок смотрите в разделе "Другие ссылки" ниже. И спасибо их авторам за проделанную работу! Вы все потрясающие!является "Таблицы хранения (основная)". Ознакомьтесь со скриншотом под спойлером, ничего не напоминает?

 

 Скриншот под спойлером 🙂

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

Варианты отчетов

Изначально отчет содержит в себе 10 предопределенных вариантов. Почему 10? Я не знаю.

 

 Таблицы хранения (только структура)

 

 Таблицы хранения (основная)

 

 Таблицы хранения (с полями)

 

 Таблицы хранения (с полями, расширенный)

 

 Таблицы хранения (с индексами)

 

 Таблицы хранения (с индексами, расширенный)

 

 Использовано места по видам объектов

 

 Количество записей по видам объектов

 

 ТОП 10 объектов по размеру

 

 ТОП 10 объектов по количеству записей

Но не останавливайтесь на том, что есть! Импровизируйте, настраивайте, экспериментируйте! Создайте свой вариант с блэкджеком и кастомизацией!

Послесловие

Это еще не конец! Перед Вами первая и основная версия отчета, которую я использую для повседневных задач. В будущем, если появится интерес от сообщества, будет опубликована расширенная версия отчета, с помощью которой можно будет:

  • Получить еще более подробную классификацию таблиц и полей базы данных
  • Проанализировать файловые группы и секции (да, в мире 1С это возможно!)
  • Проанализировать состояние индексов и статистик
  • Получить рекомендации по отсутствующим индексам в базе данных (как для SQL Server, так и для всеми теперь обожаемого PostgreSQL!)
  • Ответить на вопрос "Какие индексы я создал два года назад, но они при этом ни разу не использовались?"

Отчет создавался человеком для человеков, поэтому человеческий фактор исключать нельзя 🙂 Прошу обо всех найденных ошибках, неточностях, предложениях писать в приватный чат (так будет проще уточнять детали) или в комментариях.

Да прибудет с Вами сила, творческая мощь, тяга к знаниям и просто хорошее настроение!

 

 История изменений отчета

Другие ссылки

25 Comments

  1. VmvLer

    по презентации, вроде, монтументально.

    конечно, главная практическая ценность скрыта в варианте послесловия.

    расширенная будет, вероятно, за звонкую монету и представленный вариант

    наверняка маркетинговое исследование для определения цены.

    Reply
  2. YPermitin

    (1) мне очень жаль, что я вызвал у вас такие мысли.

    То есть отчет бесполезен и не стоило тратить время на его реализацию?

    Reply
  3. sapervodichka

    крутая вещь, однозначно + у меня есть, но более народный взгляд ))) https://infostart.ru/public/1093355/ с возможностью базы сравнить между собой

    Reply
  4. Xershi

    (3) ну уже хоть что-то свое появилось) Или скрестили. Осталось написать под 8.3.15, там разработчики обещали платформенный механизм.

    Reply
  5. YPermitin

    (3) хороший инструмент. Я на него ссылку добавил в конце статьи 🙂

    Reply
  6. Aletar
    В будущем, если появится интерес от сообщества, будет опубликована расширенная версия отчета

    Интерес, определенно, есть.

    Reply
  7. YPermitin

    (6) это хорошо 🙂

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

    Из того что планирую добавить:

    — файловые группы и секции

    — Улучшить классификацию служебных таблиц и полей

    — Подробная информация об объектах статистики и индексах

    — Поиск избыточных индексов

    — Анализ недостающих индексов

    — Проблемы таблицы остатков

    — Поиск излишних таблиц, появившихся при неудачной реструктуризации

    — Подсчет количества строк и приблизительную оценку размера данных для файловых баз

    Часть из этого уже готова, только нужно привести в порядок. Вообщем, функционал будет, но не в ближайшее время.

    Reply
  8. Разумов

    Классный инструмент! Жаль, мани нет, с удовольствием бы поигрался со своей базой.

    Reply
  9. ligsht
    {ВнешнийОтчет.ПросмотрИАнализСтруктурыБазыДанных.Форма.ФормаОтчета.Форма(148)}: Ошибка при вызове метода контекста (Execute)

    РезультатБД = КомандаБД.Execute();

    по причине:

    Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимое имя столбца «is_memory_optimized».

    MS SQL 2008.

    Поправьте пожалуйста.

    Reply
  10. YPermitin

    (9) принято.

    Исправлю совместимость со старыми версиями SQL Server и обновлю публикацию.

    Чтобы повторно не скачивать — отправлю новую версию в сообщениях.

    Всем, кому актуальна работа со старыми версиями СУБД и кто уже скачал отчет — просто напишите в личных сообщениях.

    Reply
  11. parshin

    А если postgresql под linux, то не работает. Вот обидно.

    Reply
  12. YPermitin

    (11) у Вас только PostgreSQL под .nix или сервер 1С тоже?

    Вообще, обращение к БД идет с использованием ADO. Предполагал, что ADO может подключиться к pg под Linux, главное чтоб серер 1С / клиент 1С (в зависимости откуда запрос в настройках) были под Windows.

    Reply
  13. parshin

    (12) Сервер 1С тоже linux.

    Reply
  14. parshin

    (12) При запуске с клиента windows ошибка: «PostgreSQL: Ошибка установки соединения:

    {ВнешнийОтчет.ПросмотрИАнализСтруктурыБазыДанных.Форма.ФормаНастроекПодключения.Форма(190)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»

    Похоже надо ODBC настроить. Попробую разобраться.

    Reply
  15. YPermitin

    (14) хорошо, отпишитесь получится или нет.

    Тоже поэкспереметирую, опишу этот момент в инструкции к отчету.

    Варианты по работе с приложениями 1С под линукс возьму на «подумать».

    Reply
  16. parshin

    (15)

    Работает!

    1. Надо установить ODBC драйвер отсюда (я установил самый свежий): https://www.postgresql.org/ftp/odbc/versions/msi/

    2. В 1с в настройках подключения установить галку «Запросы с клиента»

    Reply
  17. YPermitin

    (16) Отлично!

    Reply
  18. YPermitin

    Публикация обновлена:

    1. Обновлен файл отчета. Исправлена совместимость со SQL Server 2008 / 2012 редакциями.

    2. Дополнена информация о настройках подключения, если сервер 1С установлен на *.nix системе.

    3. Добавлена история изменений в конце публикации.

    Всем, кто скачал отчет ранее и необходима совместимость с версиями SQL Server 2008 / 2012 — напишите мне в личные сообщения, предоставлю ссылку для скачивания.

    Reply
  19. user771565

    А кто нибудь знает как напрямую в postgre дернуть картинки из 1с ?

    Reply
  20. YPermitin

    (19) конечно к отчету это не относится, но не могли бы Вы уточнить суть задачи?

    Reply
  21. user771565

    извиняюсь вопрос снят

    Reply
  22. mairon

    На конфигурациях УПП и БП2 будет работать?

    Reply
  23. YPermitin

    (22) по идее привязки к конфигурациям нет, поэтому должно работать.

    Если что-то не так — пишите, разберемся.

    Reply
  24. user1135262

    SQLServer: Ошибка установки соединения:

    {ВнешнийОтчет.ПросмотрИАнализСтруктурыБазыДанных.Форма.ФормаНастроекПодключения.Форма(190)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): При входе в систему пользователя «xxx» произошла ошибка.

    Как-то можно обойти эту ошибку? MSSQL 2016

    Reply
  25. YPermitin

    (24)

    При входе в систему пользователя «xxx» произошла ошибка

    Подозреваю, что у Вас на сервере СУБД отключена аутентификация средствами SQL Server, только доменная аутентификация доступна.

    Reply

Leave a Comment

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