Показывает информацию о размерах таблиц базы данных на SQL (количество строк и занимаемое место в Кб) в связке с метаданными базы данных 1С в виде таблицы.
Позволяет анализировать базу данных на предмет «толстых мест».
Выводимые данные:
Зарезервировано, Кб
Данные, Кб
Индекс, Кб
Неиспользовано, Кб
КоличествоСтрок
Идея взята из публикации //infostart.ru/public/179281/. Изменен запрос (показываются верные данные о размерах таблиц).
Представление результата через схему компоновки данных, возможность менять представления через конструктро СКД.
Работает с платформой 8.2, 8.3 (обычное и управляемое приложение, толстый клиент, тонкий клиент), SQL 2005-2008.
Версия 1.1:
- формат внешней обработки замен на внешний отчет
- изменен порядок редактирование настроек СКД
- возможность использования вариантов отчета в управляемом приложении
Версия 1.2:
- исправлены итоги по группировкам;
Добрый день!
При формировании отчета появляется ошибка.
Конфигурация: Бухгалтерия предприятия, редакция 2.0 (2.0.58.6)
Платформа: 1С:Предприятие 8.3 (8.3.4.437)
Толстый клиент.
Подскажите что я сделал не так.
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
по причине:
{ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(151)}: Ошибка при вызове метода контекста (Инициализировать)
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Не найден внешний набор данных «ТаблицаДанныхИнформационнойБазы»
Upd. Вопрос снят. В поле Имя сервера надо было ввести имя sql-сервера, а не 1С сервера.
Да, ошибка возникает в случае неудачного подключения к SQL. В ближайшее время добавлю обработку ошибки подключения и представление ее с удобном виде
Чем отличается «Размер зарезервировано» от «Размер данные»?
Данные — это физический размер данных в базе. Зарезервировано — это размер, который «подготовлен» для хранения данных. Например данных в mdf файле 10гб, а сам файл mdf — 15гб (зарезервировано)
Очень странно считается ИТОГО для основного варианта отчета, вместо суммы — цифры из первой строки таблицы. И так для каждой колонки.
имя пользователя и пароль — это для доступа к серверу, а не к базе..
(5) Lumis, спасибо за замечание, проверю
(6) smit1c, это имя пользователя и пароль на sql (под этим пользователем будет выполнятся подключение к sql и выполняться запрос)
Укажите примеры заполнение ИмяБД…Сервера…пользователя…пароль…все что я указываю в Среда SQL Server Management Studio пишит ошибку:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
по причине:
{ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(151)}: Ошибка при вызове метода контекста (Инициализировать)
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, СтруктураВнешнихДанных,, Истина);
по причине:
Ошибка компоновки данных
по причине:
Ошибка инициализации
по причине:
Ошибка создания набора данных «НаборДанных1»
по причине:
Не найден внешний набор данных «ТаблицаДанныхИнформационнойБазы»
(1) it-on,
(2)
да … неплохо бы было бы юзабилити накрутить:
1. подсказки у полей ввода, а то приходится думать — «что за имя сервера, имя базы, пользователь и пароль».
2. контроль заполнения обязательных реквизитов отчета перед его формированием.
3. обработку исключительных ситуаций с внятными сообщениями о причинах ошибки.
(10)
ЗЫ
А вообще — клевый отчет!!!
Очень пригодился для выявления причин, почему бэкап базы распух в два раза.
Оказалось моя коллега учудила —
— решила в регистр остатков писать задним числом с периодом ‘02.01.0001’
;)))
Спасибо 🙂 Обработка очень пригодилась 🙂
Отличный отчет!
Спасибо автору.
Можете разъяснить по поводу колонок:
*Размер зарезервировано = 540 000
*Размер данные = 530 000
*Размер индекс = 9 700
*Размер не использовано = 300
*Количество строк = 250 000
На что обратить внимание? Как избавиться от такого размера если это регистр накоплений с 10-ком ресурсов. Что в большей степени влияет на размер таблицы?
(14) ya.Avoronov, поидее размер таблицы в 540мб сам по себе волновать не должен. Размер таблицы зависит от количества строк и количества измерений/ресурсов/реквизитов (чем больше информации храниться в каждой строке — тем больше «вес» этой строки).
Хотя если честно, есть подозрения в правильности архитектуры вашего решения. В регистре накопления обычно 1-2, максимум 3 ресурса. Но чтобы 10…
Спасибо, помогло!
В настройке отчета сгруппировал по типу метаданных, так вот итоги по группировке не правильно показываются.
(17) miniogn, большое спасибо за ваш комментарий. Исправил отображение итогов.
Добавьте поле таймаут, а то у меня вот УТ не успевает отработать 🙂
(9) maksa2005, возможно вы указали имя базы как она называется в 1С (с русскими буквами), необходимо же в администрировании серверов в свойствах подглядеть реальное имя базы (без русских букв) и тогда всё будет работать. У меня по крайней мере был именно в этом затык.
С Postgre не будет работать?
(21) blackjack666, будет, если переписать скрипт)
Параметры подключения пишу правильные, другой отчет по ним отрабатывает, тут нет:
Ошибка исполнения отчета
по причине:
Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’
по причине:
{ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(23)}: Ошибка при вызове метода контекста (Open)
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло
Спасибо, отчет полезный.
Удобнее, чем соединять вручную названия таблиц.
Однако, хочу отметить несколько моментов, которые можно доработать:
1.Для соединения с сервером SQL предусмотреть вариант соединения с использованием своей учетной записи. Если ты администратор сервера, имя/пароль вводить не нужно.
2.Неплохо бы сделать кнопку «Проверка соединения». Убедиться, что параметры сервера указаны верно до исполнения отчета
3.Если включить группировку по типу метаданных, можно заметить 2 вещи: пустые значения (сделайте например «Общие» по аналогии с веткой в конфигурации), и системные объекты, которые вероятнее всего не интересуют специалиста 1С. Отобрать можно по тем таблицам, которые выдает ПолучитьСтруктуруХраненияБазыДанных()
4.Не показывает имена табличных частей
(24) спасибо за ваши комментарии), в ближайшее время обновлю с учетом ваших предложений.
не могу подключиться к базе, объясните пожалуйста в какое поле что вбивать?
Разобрался, везде указываем данные SQL сервера, данные сервера 1с не важны и не нужны тут
спасибо! крутой отчет
Спасибо, полезная обработка!Для файловой использую этуhttp://infostart.ru/public/82178/
видимо автору не до обновления обработки 🙁
Спасибо большое автору, после нескольких часов мучений с аналогичными обработками скачанными тут же на инфостарте, данные из данной обработки были получены за 1 минуту.
Лайк.
{ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(23)}: Ошибка при вызове метода контекста (Open)
RecordSet.Open(ТекстЗапросаSQL, Connection, 1);
по причине:
Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло
в чём может быть дело?
Не работает на Бухгалтерии 3.0.40.38. «Не установлена схема компоновки данных»
(30)
(23)
Тоже столкнулся.
Попробуйте поиграться с параметрами объекта Connection в процедуре ПолучитьТаблицуДанныхИнформационнойБазы()
Я прописал
Connection.CommandTimeout = 500;
Помогло.
Добрый день!
Обработку скачал, оказалась полезной.
Не получается поставить «+» ((
…давно на ИС ничего не качал, видимо правила какие-то изменились…
Жму на оранжевую звёздочку, безрезультатно (
ЧЯДНТ?
(33)
Обработку скачал, оказалась полезной.
Не получается поставить «+» ((
…давно на ИС ничего не качал, видимо правила какие-то изменились…
Жму на оранжевую звёздочку, безрезультатно (
ЧЯДНТ?
Это нововведение, тоже не сразу сообразил как работает. Потом только понял, что теперь нажатие на звезду — автоматчиески добавляет в список избранного. Но только его надо выбрать сначала, этот самый список. Иначе не сработает
Ошибка «Не установлена схема компоновки данных»
Однако не запустился.
Сначала вываливался с ошибкой, что типа нехорошо использовать ADODB.Connection (платформа 8.3.11), но вместо кнопки подтвердить, вываливалась ошибка завершить/перезапустить. Ладно, это можно победить вынеся этот кусок модуля куда нибудь на форму, и запустив его отдельно до выполнения отчета.
Теперь вываливается ошибка на методе Open. Превышено время ожидания. И что с этим делать? Стоит SQL 2014.
(36) К сожалению не подскажу. На скуль 2014 не тестировался. Может есть какая особенность в подключении. Может порт скуля закрыт или что-то не дает достучаться..
P.S. кстати вечером отчет нормально выполнился. Видимо сервак был прилично нагружен днем, и запрос выполнялся долго.
Хотя, чисто логически, должно же время таймаута как то устанавливатся, или оно всегда по дефолту.
Ругается, не установлена схема компоновки данных. УФ БП 3.0
МОжете прислать мне обработку для управляемых форм, пожалуйста? Почта krasevE@yandex.ru
(40) ее можно скачать по ссылке вверху, она и для обычных и для управляемых
(31) У пользователя 1С должна быть отключена галочка Защита от опасных действий.
Данный параметр не позволяет инициализировать ComОбъекты.
(39) У пользователя 1С должна быть отключена галочка Защита от опасных действий.
Данный параметр не позволяет инициализировать ComОбъекты.
Не работает. ERP
При выборе настроек:
ВызватьИсключение НСтр(«ru = ‘Не передан служебный параметр «»НастройкиОтчета»».'»);
есть по-новее отчетик данных SQLhttps://infostart.ru/public/1093355/
К сожалению не на всех предприятиях где работают программисты доступны логины и пароли на SQL сервера. Было бы не плохо, если бы была возможность как то получать всю информацию с сервера 1С.
Думаю такая обработка на больших базах данных одна из «mush have», т.к. можно найти где дали штангу с оптимизацией пространства