Размер таблиц информационной базы 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 не будет опубликован. Обязательные поля помечены *