Определение размера базы данных 1С с разбивкой по объектам метаданных (обычная и управляемая форма)





Обработка для определения размера таблиц базы данных 1С. Адаптирована для конфигураций на обычных и управляемых формах 8.2 — 8.3!

Описание

Адаптация популярной обработки Определение размера базы данных 1С с разбивкой по объектам метаданных для управляемых форм.

Отличием от оригинала является портирование всех методов из обычной формы в управляемую форму, а также разработана версия для конфигураций с режимом совместимости выше 8.3.5. Также добавлена справка по настройкам строки соединения.

Режим использования модальности: Не использовать.

Режим использования синхронных вызовов расширений платформы и внешних компонент: Не использовать.

В версии для 8.3.6:

Процедура "Найти", заменена на "СтрНайти", т.к. считается устаревшей!

Весь функционал проиллюстрирован в скриншотах!

Ограничения

1. Есть ПК, на котором запускаются клиенты 1С. 
2. Есть ПК, на котором запускается агент сервера 1С. 
3. Есть ПК, на котором запускается SQL база. 

Первое ограничение работа с СУБД MS SQL. 
Второе ограничение работа по технологии COM. Данную технологию разработали для семейства ОС Windows, насколько знаю только ей и поддерживается. 

Вывод: 
1. Если у вас СУБД не MS SQL, то данная обработка не сработает! 
2. Если ПК, на котором запускается агент сервера 1С не на ОС Windows, то часть функционала будет неработоспособна. 
3. Если ПК, на котором запускаются клиенты 1С не на ОС Windows, то часть функционала будет неработоспособна. 
4. Если ПК клиента и сервера 1С не на ОС Windows, то данная обработка не сработает! 

Обновление от 09.06.2024
— Добавлена команда с гарантированным получением результата, но в управляемых формах значительно страдает производительность.
— Дополнена справочная информация.

Важно! Обработка не тестировалась на конфигурациях с расширениями, которые изменяют метаданные. Т.к. они изменяют структуру БД.

P.S. Если материал вам помог, поблагодарите автора, поставив звездочку!

43 Comments

  1. japopov

    То, что это только для MS SQL, указать просто забыли…

    Reply
  2. Xershi

    (1) строчки такой нет, но из описания это сразу видно! А точнее в скриншотах!

    Reply
  3. Fox-trot

    такой инструмент каждый должен попробовать навоять 🙂

    Reply
  4. Xershi

    (3) причем и на клиенте и на сервере!

    Reply
  5. Fox-trot

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

    Reply
  6. Xershi

    (5) длительность работы алгоритма не от ком-объекта зависит, а от кода!

    Reply
  7. Fox-trot

    так а я про что

    помница еще была у мелких технология джет, но ее быстренько похоронили 🙂

    Reply
  8. Xershi

    (7) дискутировать тут не о чем. Разница межу сервером и клиентом примерно 1 к 1,5. А у вас наверно было 1 к 300 или более в зависимости от данных.

    Reply
  9. TrinitronOTV

    Для файловых баз такую обработку как-то можно использовать?

    Reply
  10. Xershi

    (9) это разработка не предназначена для файловых 1С! Т.к. она обращается к SQL серверу за данными. Для файловых есть специальная утилита или похожие разработки.

    Reply
  11. TrinitronOTV

    (10) спасибо, понятно

    Reply
  12. DenisCh

    (11) V8TableSizes от MMF

    Качал, вроде, отсюда. На файловой работает. (Да только на файловой и работает )

    Reply
  13. TrinitronOTV

    (12) нашел такую, но версия не совсем новая, спасибо за информацию

    Reply
  14. dmitry1975

    Спасибо, помогла обработка 🙂

    Reply
  15. Дмитрий74Чел

    Автор, в описании четко не увидел: в тонком клиенте работает ли? А то много аналогов — но только в толстом.

    Второй вопрос: учтена ли ошибка http://forum.infostart.ru/forum34/topic61223/message686024/#message686024

    Reply
  16. Xershi

    (15) УФ предполагают работу как в тонком клиенте так и в толстом.

    Т.к. данной ошибки не встречал, то гарантировать не могу.

    Reply
  17. Дмитрий74Чел

    (16) изменю формулировку: используется ли RS=cmd.Execute(); вместо RS.Open();

    Reply
  18. Xershi

    (17) наверное речь идет об этой строке кода:

    RS.Open(СтрЗаменить(ШаблонЗапроса, «%ИмяТаблицы%», Строка.ТаблицаSQL), Connect);
    Reply
  19. Xershi

    Переписал алгоритмы для гарантированного получения результата, но скорость при этом пострадала:

    RS.Open(СтрЗаменить(ШаблонЗапроса, «%ИмяТаблицы%», Строка.ТаблицаSQL), Connect);

    Данный код выполняется 5 290 раз 58,318323 секунд и занимает 78,18 % времени исполнения всего кода.

    А вот улучшенный вариант:

    RS = cmd.Execute();

    В разы медленнее из-за запроса на удаление таблиц и таймаута на ожидание блокировок, выполняется те же 5 290 раз, но уже за 943,982579 секунд и времени на все занимает уже 98,38 %!

    А если запускать все на клиенте будет еще в 1,5 — 2 раза медленнее!

    У вас конечно результаты будут другие, т.к. у каждого своя база, где-то меньше, а где-то и намного большего размера.

    Reply
  20. delta

    Добрый день! Интересная обработка.

    А пробовали сделать такое для PostgreSQL?

    Reply
  21. Xershi

    (20) добрый день. Нет опыта работы с такой СУБД.

    Reply
  22. Dream_kz

    (20) Сделал версию для PostgreSQL

    https://infostart.ru/public/978816/

    Reply
  23. Xershi

    (22) кроме установки драйвера код переписывали?

    Reply
  24. Dream_kz

    (23) Да, запрос абсолютно другой

    Reply
  25. Xershi

    (24) раз писали через ком, то работать будет только на клиенте. УФ на линуксе с сервера не запустите! Только ОФ в толстом клиенте, т.к. там все на клиенте.

    Reply
  26. Dream_kz

    (25) Сервер 1С может быть и на windows, тогда работать должно, и не важно где будет сервер субд.

    Reply
  27. Xershi

    (26) так я вам написал, что если сервер 1С будет на линуксе. На windows и так понятно!

    Reply
  28. delta

    (22) Как я понимаю, эта версия требует наличия Windows и его компонент. А если у компании Линукс и Постгрес на нём, то эта компонента на заработает?

    Reply
  29. Xershi

    (28) данная публикация работает через ком. Это технология винды. Если у вас толстый клиент обычное приложение на винде, либо режим запуска на клиенте, это уже у автора переделки надо уточнять, выше есть публикация, которая поддерживает другой тип базы данных, даже если сервер на линуксе. Иначе увы!

    Reply
  30. Dream_kz

    (28) Есть есть хоть один windows-клиент, то заработает. Если все исключительно (сервер 1С, клиенты 1С в т.ч.) на linux, то нет. На какой ОС находится сервер субд не важно.

    Reply
  31. Xershi

    (30) уточню более детально.

    1. Есть ПК, на котором запускаются клиенты 1С.

    2. Есть ПК, на котором запускается агент сервера 1С.

    3. Есть ПК, на котором запускается SQL база.

    Первое ограничение работа с СУБД MS SQL.

    Второе ограничение работа по технологии COM. Данную технологию разработали для семейства ОС Windows, насколько знаю только ей и поддерживается.

    Вывод:

    1. Если у вас СУБД не MS SQL, то данная обработка не сработает!

    2. Если ПК, на котором запускается агент сервера 1С не на ОС Windows, то часть функционала будет неработоспособна.

    3. Если ПК, на котором запускаются клиенты 1С не на ОС Windows, то часть функционала будет неработоспособна.

    4. Если ПК клиента и сервера 1С не на ОС Windows, то данная обработка не сработает!

    Думаю это будет исчерпывающий ответ!

    Дополнительно внес это в описание публикации, чтобы не нужно было перечитывать комментарии!

    Reply
  32. delta

    (30) Тут всё упирается именно в чистый Линукс, даже без следов windows.

    Reply
  33. Dream_kz

    (32) Коллега, предлагаю писать в профильной теме https://infostart.ru/public/978816/, а то ТС уже ругается, на восклицательные знаки перешел.

    Про чистый линукс я думал, для получения данных с сервера субд можно использовать внешние источники данных, в общем-то кроме odbc-драйвера ничего не понадобится, но нужна будет отдельная конфигурация, и идея простого способа (с помощью внешней универсальной обработки) получения информации одной кнопкой теряется, ибо надо получить данные с субд о размере таблиц, данные с нужной базы о структуре таблиц, и желательно целевую базу не модифицировать, то есть com-объектов не будет, и надо будет использовать http-сервисы. Много лишних телодвижений получается, но сделать можно.

    Reply
  34. Chelyapin

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

    Reply
  35. Xershi

    (34) добрый вечер, а почему вы не хотите поделиться опытом на форуме, вам ИС начислит стартмани и сможете скачать любую обработку?

    Reply
  36. Angealtor

    Доброго дня! Обработка вылетает с ошибкой «{ВнешняяОбработка.РазмерТаблицБазыДанных31.Форма.ФормаУправляемая.Форма(364)}: Значение не является значением объектного типа (State) Пока RS.State = 0 Цикл» . Как я понимаю зависает на документе из расширения, а затем появляется такая ошибка. Платформа 8.3.13.1690, УТ 11.4.6.207. MS SQL 2012

    Reply
  37. Xershi

    (36) добрый день! Обработка не тестировалась на конфигурациях с расширениями, которые изменяют метаданные. И пока такой возможности это проверить тоже нет.

    Reply
  38. Angealtor

    (37) Очень жаль. В самой публикации не указано, что обработка не работает с расширениями. Можете помочь, подсказать, в чем может проблема?

    Reply
  39. Xershi

    (38) спасибо за комментарий. Добавлю описание, что данные версии не тестировались с расширениями, которые меняют метаданные.

    Reply
  40. Angealtor

    (39) Xershi, по самой проблеме сможете проконсультировать? Обработку уже скачал. Попробую разобраться сам, так как данный функционал очень нужен: база сильно растет в последнее время и непонятно в чем причина, так как динамика объема ввода информации не менялась.

    Reply
  41. Xershi

    (40) раз ошибка в строке, которую указали, то проблема скорее всего в запросе к базе. Надо тестировать данные, чтобы понять в чем конкретно проблема.

    Скорее всего историю данных включили или версионирование. А также ТИИ стоит сделать.

    Reply
  42. Angealtor

    (41) Да, версионирование включено.

    Reply
  43. Xershi

    (42) запустите удаление старых версий затем ТИИ. Думаю размер на порядок уменьшится. Но и версий старых не будет.

    Reply

Leave a Comment

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