Назначение и возможности
Отчет предназначен для просмотра и анализа структуры информационных баз 1С. Может быть полезным инструментам для администраторов, специалистов по производительности и энтузиастов, изучающих работу платформы на уровне базы данных.
Основные возможности отчета:
- Отображение таблиц базы данных, их полей и индексов с учетом связей между объектами базы данных и метаданными конфигурации.
- Вычисление размера таблиц и индексов для объектов конфигурации, а также количества записей в них.
- Отображение НЕплатформенных индексов в базе (те, что были добавлены вручную администратором или разработчиком).
- Вывод дополнительных атрибутов СУБД для полей таблицы, индексов и их структуры (например, это возможность установки значения NULL, размер каждого отдельного индекса, проверка наличия платформенного индекса в базе данных, порядок полей в индексе и таблицах и др.).
- Получение информации обо всех таблицах информационной базы, а не только тех, что доступны через "ПолучитьСтруктуруХраненияБазыДанных()". Например, отчет позволит посмотреть информацию о системных таблицах "V8USERS" и "PARAMS", а также отобразит таблицы другие служебные / системные таблицы.
- Дополнительная классификация объектов и их частей. Например, добавлены поля "Вид объекта", "Тип объекта", доп. описание полей составных типов данных и др.
- Расширенное отображение типа данных 1С для полей.
- 10 предопределенных вариантов отчетов с различной детализацией.
- Гибкая настройка отображения и компоновки данных с помощью штатных возможностей системы компоновки данных.
- Поддержка подсистем БСП (варианты отчетов и дополнительные отчеты и обработки).
Отчет поддерживает работу в файловом варианте информационной базы, но в ограниченном режиме — доступен только просмотр структуры базы данных, полученный с помощью штатного метода "ПолучитьСтруктуруХраненияБазыДанных()". Весь расширенный функционал доступен только для клиент-серверного варианта работы платформы 1С в связке с такими СУБД как SQL Server и PostgreSQL.
Необходимая версия платформы для работы отчета — 8.3.5 и выше. Внутри отчета используется кэширование данных, получение только необходимых данных в зависимости от настроек отчета и еще некоторые фичи.
Конечно, есть пути получения дополнительной информации и из файловых баз. В том числе размеры таблиц, количество записей, даже размеры отдельных индексов!
НО!
Нужно ли? Если это действительно нужно — напишите в комментариях. Но ничего не обещаю 🙂
Выше показаны настройки подключения к базе данных для получения дополнительной информации. Ниже, под спойлером, Вы найдете подробное описание каждой настройки.
Настройки достаточно простые:
- Тип СУБД — какой тип СУБД используется для текущей информационной базы. Доступные варианты:
- Файловый — отчет получает только ту информацию, что доступна штатным методом платформы "ПолучитьСтруктуруХраненияБазыДанных()".
- SQLServer — отчет будет получать дополнительную информацию из базы данных на сервере СУБД SQL Server. Используйте этот вариант, если
- PostgreSQL — отчет также будет использовать базу данных на PG для получения доп. информации. Используйте ее, если база развернута на этой СУБД.
- Запросы с клиента — эта опция позволяет выполнять запросы для получения расширенных данных из СУБД со стороны клиентского приложения 1С:Предприятие. Зачем это нужно? Все просто! Обычно, сервер 1С запущен от учетной записи, которая не позволяет рабочим процессам получать доступ к базе напрямую (либо доменная учетная запись не имеет доступ к базе, либо доступ закрыт другими способами). Однако доступ может быть у разработчика / администратора с помощью доменной учетной записи, от которой и запущено клиентское приложение. С помощью этого флага такие ограничения можно безопасно и легально обойти. Конечно, получение данных из базы данных с помощью клиентского приложения 1С может работать медленнее, это стоит учитывать.
- Сервер — адрес сервера СУБД. Не забудьте если что указать имя инстанса, если оно отличается от стандартного (это для SQL Server).
- Имя базы данных — это имя базы данных (внезапно) на сервере СУБД.
- Аутентификация Windows — установите для использования аутентификации средствами NTLM (если у Вас доменная учетная запись и для нее есть доступ на СУБД, то идеальный вариант для подключения).
- Таймаут подключения (сек.) — время, которое соединение с сервером баз данных будет ожидать ответа. По умолчанию — 3 минуты. Если соединение медленное и отчет не успевает получить все данные, то можете увеличить время таймаута под себя.
- Имя пользователя — имя пользователя для доступа к СУБД. Если аутентификация Windows недоступна, то это единственный оставшийся вариант.
- Пароль — пароль пользователя для доступа к СУБД.
- Сохранять пароль — при включенной опции пароль от пользователя СУБД будет сохраняться в общих настройках. Не рекомендую этого делать, т.к. безопасность хранения пароля в таком виде = 0. Можно использовать на тестовом окружении, и то не всегда.
На форме также доступна команда "Проверить подключение". Не забывайте проверять работоспособность настроек после изменения.
Все просто, не правда ли?
Есть некоторые особенности при работе с *.nix системами. Поскольку отчет в текущей версии использует ADO для подключения к базе данных, то выполняться он может только на платформе Windows. Если же Вы счастливчик и сервер 1С установлен на Linux, то выход все же есть:
- Запустить клиентское приложение 1С:Предприятие на платформе Windows.
- В настройках подключения отчета установить опцию "Запросы с клиента"
- Убедиться, что на клиентском компьютере есть необходимые поставщики данных для подключения к базе:
- Все, отчет должен работать!
Да, пока есть привязка к Windows, возможно в будущем ситуация изменится. Сейчас же это значительно упрощает реализацию отчета.
Классическим вариантом отчета, который повторяет функциональность большинства обработок схожего назначения на Инфостарт (примеры таких разработок смотрите в разделе "Другие ссылки" ниже. И спасибо их авторам за проделанную работу! Вы все потрясающие!) является "Таблицы хранения (основная)". Ознакомьтесь со скриншотом под спойлером, ничего не напоминает?
Обратите внимание на системные таблицы и группировку по дополнительным полям классификации. Остальные варианты уже имеют значительные отличия и кратко будут рассмотрены далее.
Варианты отчетов
Изначально отчет содержит в себе 10 предопределенных вариантов. Почему 10? Я не знаю.
Таблицы хранения (только структура)
Идеальный вариант для файловых баз, т.к. не "подтягивает" никакой дополнительной информации из базы данных. Использует только штатные механизмы платформы.
Таблицы хранения (основная)
С этим вариантом Вы сталкивались в начале статьи. Классическое отображение списка объектов базы данных с доп. информацией о количестве записей, размером самих данных и индексов.
Таблицы хранения (с полями)
Это расширенный вариант предыдущего отчета. К таблицам хранения добавляются поля таблиц.
Таблицы хранения (с полями, расширенный)
Еще добавим дополнительной аналитики к предыдущему варианту и получим… расширенный вариант отчета, где для каждого поля получены доп. атрибуты из СУБД. Вариант отчета может потребовать дополнительного времени при формировании.
Таблицы хранения (с индексами)
Чем-то похож на вариант "Таблицы хранения (с полями)", только вместо полей таблиц здесь показаны индексы для каждой таблицы хранения и их поля.
Таблицы хранения (с индексами, расширенный)
Более продвинутый вариант на основе предыдущего. Выводятся доп. поля для каждого индекса.
Использовано места по видам объектов
Самый "радужный" вариант с круговой диаграммой. Показывает какой вид объекта занимает больше всего места (документы, справочники или что-то другое). Обычно бесполезен для анализа, зато красивый 🙂
Количество записей по видам объектов
Аналогичен предыдущему, но уже по количеству записей в таблицах.
ТОП 10 объектов по размеру
Если нужно узнать 10 самых "тяжелых" по размеру объектов конфигурации, то добро пожаловать!
ТОП 10 объектов по количеству записей
Ну а если есть интерес к самым большим объектам по количеству записей, то Вам сюда!
Но не останавливайтесь на том, что есть! Импровизируйте, настраивайте, экспериментируйте! Создайте свой вариант с блэкджеком и кастомизацией!
Послесловие
Это еще не конец! Перед Вами первая и основная версия отчета, которую я использую для повседневных задач. В будущем, если появится интерес от сообщества, будет опубликована расширенная версия отчета, с помощью которой можно будет:
- Получить еще более подробную классификацию таблиц и полей базы данных
- Проанализировать файловые группы и секции (да, в мире 1С это возможно!)
- Проанализировать состояние индексов и статистик
- Получить рекомендации по отсутствующим индексам в базе данных (как для SQL Server, так и для всеми теперь обожаемого PostgreSQL!)
- Ответить на вопрос "Какие индексы я создал два года назад, но они при этом ни разу не использовались?"
Отчет создавался человеком для человеков, поэтому человеческий фактор исключать нельзя 🙂 Прошу обо всех найденных ошибках, неточностях, предложениях писать в приватный чат (так будет проще уточнять детали) или в комментариях.
Да прибудет с Вами сила, творческая мощь, тяга к знаниям и просто хорошее настроение!
Опубликована первая версия отчета, основные возможности которого:
- Отображение таблиц базы данных, их полей и индексов с учетом связей между объектами базы данных и метаданными конфигурации.
- Вычисление размера таблиц и индексов для объектов конфигурации, а также количества записей в них.
- Отображение НЕплатформенных индексов в базе (те, что были добавлены вручную администратором или разработчиком).
- Вывод дополнительных атрибутов СУБД для полей таблицы, индексов и их структуры (например, это возможность установки значения NULL, размер каждого отдельного индекса, проверка наличия платформенного индекса в базе данных, порядок полей в индексе и таблицах и др.).
- Получение информации обо всех таблицах информационной базы, а не только тех, что доступны через "ПолучитьСтруктуруХраненияБазыДанных()". Например, отчет позволит посмотреть информацию о системных таблицах "V8USERS" и "PARAMS", а также отобразит таблицы другие служебные / системные таблицы.
- Дополнительная классификация объектов и их частей. Например, добавлены поля "Вид объекта", "Тип объекта", доп. описание полей составных типов данных и др.
- Расширенное отображение типа данных 1С для полей.
- 10 предопределенных вариантов отчетов с различной детализацией.
- Гибкая настройка отображения и компоновки данных с помощью штатных возможностей системы компоновки данных.
- Поддержка подсистем БСП (варианты отчетов и дополнительные отчеты и обработки).
Исправлены некоторые ошибки работы отчета со старыми редакциями SQL Server 2008 / 2012.
Работа над отчетом продолжается 🙂
Другие ссылки
по презентации, вроде, монтументально.
конечно, главная практическая ценность скрыта в варианте послесловия.
расширенная будет, вероятно, за звонкую монету и представленный вариант
наверняка маркетинговое исследование для определения цены.
(1) мне очень жаль, что я вызвал у вас такие мысли.
То есть отчет бесполезен и не стоило тратить время на его реализацию?
крутая вещь, однозначно + у меня есть, но более народный взгляд )))https://infostart.ru/public/1093355/ с возможностью базы сравнить между собой
(3) ну уже хоть что-то свое появилось) Или скрестили. Осталось написать под 8.3.15, там разработчики обещали платформенный механизм.
(3) хороший инструмент. Я на него ссылку добавил в конце статьи 🙂
Интерес, определенно, есть.
(6) это хорошо 🙂
Скорее всего новая версия будет уже в октябре или позже, т.к. нужно будет на нее выделить время.
Из того что планирую добавить:
— файловые группы и секции
— Улучшить классификацию служебных таблиц и полей
— Подробная информация об объектах статистики и индексах
— Поиск избыточных индексов
— Анализ недостающих индексов
— Проблемы таблицы остатков
— Поиск излишних таблиц, появившихся при неудачной реструктуризации
— Подсчет количества строк и приблизительную оценку размера данных для файловых баз
Часть из этого уже готова, только нужно привести в порядок. Вообщем, функционал будет, но не в ближайшее время.
Классный инструмент! Жаль, мани нет, с удовольствием бы поигрался со своей базой.
РезультатБД = КомандаБД.Execute();
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Недопустимое имя столбца «is_memory_optimized».
MS SQL 2008.
Поправьте пожалуйста.
(9) принято.
Исправлю совместимость со старыми версиями SQL Server и обновлю публикацию.
Чтобы повторно не скачивать — отправлю новую версию в сообщениях.
Всем, кому актуальна работа со старыми версиями СУБД и кто уже скачал отчет — просто напишите в личных сообщениях.
А если postgresql под linux, то не работает. Вот обидно.
(11) у Вас только PostgreSQL под .nix или сервер 1С тоже?
Вообще, обращение к БД идет с использованием ADO. Предполагал, что ADO может подключиться к pg под Linux, главное чтоб серер 1С / клиент 1С (в зависимости откуда запрос в настройках) были под Windows.
(12) Сервер 1С тоже linux.
(12) При запуске с клиента windows ошибка: «PostgreSQL: Ошибка установки соединения:
{ВнешнийОтчет.ПросмотрИАнализСтруктурыБазыДанных.Форма.ФормаНастроекПодключения.Форма(190)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, используемый по умолчанию»
Похоже надо ODBC настроить. Попробую разобраться.
(14) хорошо, отпишитесь получится или нет.
Тоже поэкспереметирую, опишу этот момент в инструкции к отчету.
Варианты по работе с приложениями 1С под линукс возьму на «подумать».
(15)
https://www.postgresql.org/ftp/odbc/versions/msi/
Работает!
1. Надо установить ODBC драйвер отсюда (я установил самый свежий):
2. В 1с в настройках подключения установить галку «Запросы с клиента»
(16) Отлично!
Публикация обновлена:
1. Обновлен файл отчета. Исправлена совместимость со SQL Server 2008 / 2012 редакциями.
2. Дополнена информация о настройках подключения, если сервер 1С установлен на *.nix системе.
3. Добавлена история изменений в конце публикации.
Всем, кто скачал отчет ранее и необходима совместимость с версиями SQL Server 2008 / 2012 — напишите мне в личные сообщения, предоставлю ссылку для скачивания.
А кто нибудь знает как напрямую в postgre дернуть картинки из 1с ?
(19) конечно к отчету это не относится, но не могли бы Вы уточнить суть задачи?
извиняюсь вопрос снят
На конфигурациях УПП и БП2 будет работать?
(22) по идее привязки к конфигурациям нет, поэтому должно работать.
Если что-то не так — пишите, разберемся.
SQLServer: Ошибка установки соединения:
{ВнешнийОтчет.ПросмотрИАнализСтруктурыБазыДанных.Форма.ФормаНастроекПодключения.Форма(190)}: Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): При входе в систему пользователя «xxx» произошла ошибка.
Как-то можно обойти эту ошибку? MSSQL 2016
(24)
Подозреваю, что у Вас на сервере СУБД отключена аутентификация средствами SQL Server, только доменная аутентификация доступна.