Размер таблиц информационной базы 1С 8.2 — 8.3 на SQL сервере



Показывает информацию о размерах таблиц базы данных на SQL (количество строк и занимаемое место в Кб) в связке с метаданными базы данных 1С в виде таблицы.

Показывает информацию о размерах таблиц базы данных на SQL (количество строк и занимаемое место в Кб) в связке с метаданными базы данных 1С в виде таблицы.

Позволяет анализировать базу данных на предмет «толстых мест».

Выводимые данные:

        Зарезервировано, Кб
        Данные, Кб
        Индекс, Кб
        Неиспользовано, Кб
        КоличествоСтрок

Идея взята из публикации //infostart.ru/public/179281/. Изменен запрос (показываются верные данные о размерах таблиц).

Представление результата через схему компоновки данных, возможность менять представления через конструктро СКД.

Работает с платформой 8.2, 8.3 (обычное и управляемое приложение, толстый клиент, тонкий клиент), SQL 2005-2008.

 

Версия 1.1:

  • формат внешней обработки замен на внешний отчет
  • изменен порядок редактирование настроек СКД
  • возможность использования вариантов отчета в управляемом приложении

Версия 1.2:

  • исправлены итоги по группировкам;

47 Comments

  1. it-on

    Добрый день!

    При формировании отчета появляется ошибка.

    Конфигурация: Бухгалтерия предприятия, редакция 2.0 (2.0.58.6)

    Платформа: 1С:Предприятие 8.3 (8.3.4.437)

    Толстый клиент.

    Подскажите что я сделал не так.

    Ошибка исполнения отчета

    по причине:

    Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’

    по причине:

    {ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(151)}: Ошибка при вызове метода контекста (Инициализировать)

    по причине:

    Ошибка компоновки данных

    по причине:

    Ошибка инициализации

    по причине:

    Ошибка создания набора данных «НаборДанных1»

    по причине:

    Не найден внешний набор данных «ТаблицаДанныхИнформационнойБазы»

    Upd. Вопрос снят. В поле Имя сервера надо было ввести имя sql-сервера, а не 1С сервера.

    Reply
  2. spezc

    Да, ошибка возникает в случае неудачного подключения к SQL. В ближайшее время добавлю обработку ошибки подключения и представление ее с удобном виде

    Reply
  3. WellMaster

    Чем отличается «Размер зарезервировано» от «Размер данные»?

    Reply
  4. spezc

    Данные — это физический размер данных в базе. Зарезервировано — это размер, который «подготовлен» для хранения данных. Например данных в mdf файле 10гб, а сам файл mdf — 15гб (зарезервировано)

    Reply
  5. Lumis

    Очень странно считается ИТОГО для основного варианта отчета, вместо суммы — цифры из первой строки таблицы. И так для каждой колонки.

    Reply
  6. smit1c

    имя пользователя и пароль — это для доступа к серверу, а не к базе..

    Reply
  7. spezc

    (5) Lumis, спасибо за замечание, проверю

    Reply
  8. spezc

    (6) smit1c, это имя пользователя и пароль на sql (под этим пользователем будет выполнятся подключение к sql и выполняться запрос)

    Reply
  9. maksa2005

    Укажите примеры заполнение ИмяБД…Сервера…пользователя…пароль…все что я указываю в Среда SQL Server Management Studio пишит ошибку:

    Ошибка исполнения отчета

    по причине:

    Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’

    по причине:

    {ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(151)}: Ошибка при вызове метода контекста (Инициализировать)

    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных, СтруктураВнешнихДанных,, Истина);

    по причине:

    Ошибка компоновки данных

    по причине:

    Ошибка инициализации

    по причине:

    Ошибка создания набора данных «НаборДанных1»

    по причине:

    Не найден внешний набор данных «ТаблицаДанныхИнформационнойБазы»

    Reply
  10. yuraos

    (1) it-on,

    (2)

    да … неплохо бы было бы юзабилити накрутить:

    1. подсказки у полей ввода, а то приходится думать — «что за имя сервера, имя базы, пользователь и пароль».

    2. контроль заполнения обязательных реквизитов отчета перед его формированием.

    3. обработку исключительных ситуаций с внятными сообщениями о причинах ошибки.

    Reply
  11. yuraos

    (10)

    ЗЫ

    А вообще — клевый отчет!!!

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

    Оказалось моя коллега учудила —

    — решила в регистр остатков писать задним числом с периодом ‘02.01.0001’

    ;)))

    Reply
  12. TODD22

    Спасибо 🙂 Обработка очень пригодилась 🙂

    Reply
  13. Andrey34rus

    Отличный отчет!

    Reply
  14. ya.Avoronov

    Спасибо автору.

    Можете разъяснить по поводу колонок:

    *Размер зарезервировано = 540 000

    *Размер данные = 530 000

    *Размер индекс = 9 700

    *Размер не использовано = 300

    *Количество строк = 250 000

    На что обратить внимание? Как избавиться от такого размера если это регистр накоплений с 10-ком ресурсов. Что в большей степени влияет на размер таблицы?

    Reply
  15. spezc

    (14) ya.Avoronov, поидее размер таблицы в 540мб сам по себе волновать не должен. Размер таблицы зависит от количества строк и количества измерений/ресурсов/реквизитов (чем больше информации храниться в каждой строке — тем больше «вес» этой строки).

    Хотя если честно, есть подозрения в правильности архитектуры вашего решения. В регистре накопления обычно 1-2, максимум 3 ресурса. Но чтобы 10…

    Reply
  16. alexey_kurdyukov

    Спасибо, помогло!

    Reply
  17. miniogn

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

    Reply
  18. spezc

    (17) miniogn, большое спасибо за ваш комментарий. Исправил отображение итогов.

    Reply
  19. SunSun1979

    Добавьте поле таймаут, а то у меня вот УТ не успевает отработать 🙂

    Reply
  20. klinval

    (9) maksa2005, возможно вы указали имя базы как она называется в 1С (с русскими буквами), необходимо же в администрировании серверов в свойствах подглядеть реальное имя базы (без русских букв) и тогда всё будет работать. У меня по крайней мере был именно в этом затык.

    Reply
  21. blackjack666

    С Postgre не будет работать?

    Reply
  22. spezc

    (21) blackjack666, будет, если переписать скрипт)

    Reply
  23. Yackov

    Параметры подключения пишу правильные, другой отчет по ним отрабатывает, тут нет:

    Ошибка исполнения отчета

    по причине:

    Ошибка при выполнении обработчика — ‘ПриКомпоновкеРезультата’

    по причине:

    {ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(23)}: Ошибка при вызове метода контекста (Open)

    по причине:

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

    Reply
  24. polyplastic

    Спасибо, отчет полезный.

    Удобнее, чем соединять вручную названия таблиц.

    Однако, хочу отметить несколько моментов, которые можно доработать:

    1.Для соединения с сервером SQL предусмотреть вариант соединения с использованием своей учетной записи. Если ты администратор сервера, имя/пароль вводить не нужно.

    2.Неплохо бы сделать кнопку «Проверка соединения». Убедиться, что параметры сервера указаны верно до исполнения отчета

    3.Если включить группировку по типу метаданных, можно заметить 2 вещи: пустые значения (сделайте например «Общие» по аналогии с веткой в конфигурации), и системные объекты, которые вероятнее всего не интересуют специалиста 1С. Отобрать можно по тем таблицам, которые выдает ПолучитьСтруктуруХраненияБазыДанных()

    4.Не показывает имена табличных частей

    Reply
  25. spezc

    (24) спасибо за ваши комментарии), в ближайшее время обновлю с учетом ваших предложений.

    Reply
  26. Cool_vsi

    не могу подключиться к базе, объясните пожалуйста в какое поле что вбивать?

    Разобрался, везде указываем данные SQL сервера, данные сервера 1с не важны и не нужны тут

    спасибо! крутой отчет

    Reply
  27. kn

    Спасибо, полезная обработка!Для файловой использую эту http://infostart.ru/public/82178/

    Reply
  28. rasswet

    видимо автору не до обновления обработки 🙁

    Reply
  29. baracuda

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

    Лайк.

    Reply
  30. evn-zorin

    {ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(23)}: Ошибка при вызове метода контекста (Open)

    RecordSet.Open(ТекстЗапросаSQL, Connection, 1);

    по причине:

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

    в чём может быть дело?

    Reply
  31. Stas_Gromov

    Не работает на Бухгалтерии 3.0.40.38. «Не установлена схема компоновки данных»

    Reply
  32. Linx-p

    (30)

    (23)

    Тоже столкнулся.

    Попробуйте поиграться с параметрами объекта Connection в процедуре ПолучитьТаблицуДанныхИнформационнойБазы()

    Я прописал

    Connection.CommandTimeout = 500;

    Помогло.

    Reply
  33. Mortal

    Добрый день!

    Обработку скачал, оказалась полезной.

    Не получается поставить «+» ((

    …давно на ИС ничего не качал, видимо правила какие-то изменились…

    Жму на оранжевую звёздочку, безрезультатно (

    ЧЯДНТ?

    Reply
  34. spezc

    (33)

    Добрый день!

    Обработку скачал, оказалась полезной.

    Не получается поставить «+» ((

    …давно на ИС ничего не качал, видимо правила какие-то изменились…

    Жму на оранжевую звёздочку, безрезультатно (

    ЧЯДНТ?

    Это нововведение, тоже не сразу сообразил как работает. Потом только понял, что теперь нажатие на звезду — автоматчиески добавляет в список избранного. Но только его надо выбрать сначала, этот самый список. Иначе не сработает

    Reply
  35. maksimov-y-v

    Ошибка «Не установлена схема компоновки данных»

    Reply
  36. RomanVolgograd

    Однако не запустился.

    Сначала вываливался с ошибкой, что типа нехорошо использовать ADODB.Connection (платформа 8.3.11), но вместо кнопки подтвердить, вываливалась ошибка завершить/перезапустить. Ладно, это можно победить вынеся этот кусок модуля куда нибудь на форму, и запустив его отдельно до выполнения отчета.

    Теперь вываливается ошибка на методе Open. Превышено время ожидания. И что с этим делать? Стоит SQL 2014.

    {ВнешнийОтчет.РазмерТаблицБазыДанных.МодульОбъекта(23)}: Ошибка при вызове метода контекста (Open)
    RecordSet.Open(ТекстЗапросаSQL, Connection, 1);
    по причине:
    Произошла исключительная ситуация (Microsoft OLE DB Provider for SQL Server): Время ожидания запроса истекло
    Reply
  37. spezc

    (36) К сожалению не подскажу. На скуль 2014 не тестировался. Может есть какая особенность в подключении. Может порт скуля закрыт или что-то не дает достучаться..

    Reply
  38. RomanVolgograd

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

    Хотя, чисто логически, должно же время таймаута как то устанавливатся, или оно всегда по дефолту.

    Reply
  39. katochimoto

    Ругается, не установлена схема компоновки данных. УФ БП 3.0

    Reply
  40. Chelyapin

    МОжете прислать мне обработку для управляемых форм, пожалуйста? Почта krasevE@yandex.ru

    Reply
  41. spezc

    (40) ее можно скачать по ссылке вверху, она и для обычных и для управляемых

    Reply
  42. a1x

    (31) У пользователя 1С должна быть отключена галочка Защита от опасных действий.

    Данный параметр не позволяет инициализировать ComОбъекты.

    Reply
  43. a1x

    (39) У пользователя 1С должна быть отключена галочка Защита от опасных действий.

    Данный параметр не позволяет инициализировать ComОбъекты.

    Reply
  44. gigansk

    Не работает. ERP

    При выборе настроек:

    {ОбщаяФорма.ФормаНастроекОтчета.Форма(34)}: Не передан служебный параметр «НастройкиОтчета».

    ВызватьИсключение НСтр(«ru = ‘Не передан служебный параметр «»НастройкиОтчета»».'»);
    Reply
  45. sapervodichka

    есть по-новее отчетик данных SQL https://infostart.ru/public/1093355/

    Reply
  46. vpaoli

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

    Reply
  47. dblade

    Думаю такая обработка на больших базах данных одна из «mush have», т.к. можно найти где дали штангу с оптимизацией пространства

    Reply

Leave a Comment

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