Описание
Адаптация популярной обработки Определение размера базы данных 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. Если материал вам помог, поблагодарите автора, поставив звездочку!
То, что это только для MS SQL, указать просто забыли…
(1) строчки такой нет, но из описания это сразу видно! А точнее в скриншотах!
такой инструмент каждый должен попробовать навоять 🙂
(3) причем и на клиенте и на сервере!
я использовал адо, но по большому счету редька не слаще
(5) длительность работы алгоритма не от ком-объекта зависит, а от кода!
так а я про что
помница еще была у мелких технология джет, но ее быстренько похоронили 🙂
(7) дискутировать тут не о чем. Разница межу сервером и клиентом примерно 1 к 1,5. А у вас наверно было 1 к 300 или более в зависимости от данных.
Для файловых баз такую обработку как-то можно использовать?
(9) это разработка не предназначена для файловых 1С! Т.к. она обращается к SQL серверу за данными. Для файловых есть специальная утилита или похожие разработки.
(10) спасибо, понятно
(11) V8TableSizes от MMF
Качал, вроде, отсюда. На файловой работает. (Да только на файловой и работает )
(12) нашел такую, но версия не совсем новая, спасибо за информацию
Спасибо, помогла обработка 🙂
Автор, в описании четко не увидел: в тонком клиенте работает ли? А то много аналогов — но только в толстом.
Второй вопрос: учтена ли ошибкаhttp://forum.infostart.ru/forum34/topic61223/message686024/#message686024
(15) УФ предполагают работу как в тонком клиенте так и в толстом.
Т.к. данной ошибки не встречал, то гарантировать не могу.
(16) изменю формулировку: используется ли RS=cmd.Execute(); вместо RS.Open();
(17) наверное речь идет об этой строке кода:
Переписал алгоритмы для гарантированного получения результата, но скорость при этом пострадала:
Данный код выполняется 5 290 раз 58,318323 секунд и занимает 78,18 % времени исполнения всего кода.
А вот улучшенный вариант:
В разы медленнее из-за запроса на удаление таблиц и таймаута на ожидание блокировок, выполняется те же 5 290 раз, но уже за 943,982579 секунд и времени на все занимает уже 98,38 %!
А если запускать все на клиенте будет еще в 1,5 — 2 раза медленнее!
У вас конечно результаты будут другие, т.к. у каждого своя база, где-то меньше, а где-то и намного большего размера.
Добрый день! Интересная обработка.
А пробовали сделать такое для PostgreSQL?
(20) добрый день. Нет опыта работы с такой СУБД.
(20) Сделал версию для PostgreSQL
https://infostart.ru/public/978816/
(22) кроме установки драйвера код переписывали?
(23) Да, запрос абсолютно другой
(24) раз писали через ком, то работать будет только на клиенте. УФ на линуксе с сервера не запустите! Только ОФ в толстом клиенте, т.к. там все на клиенте.
(25) Сервер 1С может быть и на windows, тогда работать должно, и не важно где будет сервер субд.
(26) так я вам написал, что если сервер 1С будет на линуксе. На windows и так понятно!
(22) Как я понимаю, эта версия требует наличия Windows и его компонент. А если у компании Линукс и Постгрес на нём, то эта компонента на заработает?
(28) данная публикация работает через ком. Это технология винды. Если у вас толстый клиент обычное приложение на винде, либо режим запуска на клиенте, это уже у автора переделки надо уточнять, выше есть публикация, которая поддерживает другой тип базы данных, даже если сервер на линуксе. Иначе увы!
(28) Есть есть хоть один windows-клиент, то заработает. Если все исключительно (сервер 1С, клиенты 1С в т.ч.) на linux, то нет. На какой ОС находится сервер субд не важно.
(30) уточню более детально.
1. Есть ПК, на котором запускаются клиенты 1С.
2. Есть ПК, на котором запускается агент сервера 1С.
3. Есть ПК, на котором запускается SQL база.
Первое ограничение работа с СУБД MS SQL.
Второе ограничение работа по технологии COM. Данную технологию разработали для семейства ОС Windows, насколько знаю только ей и поддерживается.
Вывод:
1. Если у вас СУБД не MS SQL, то данная обработка не сработает!
2. Если ПК, на котором запускается агент сервера 1С не на ОС Windows, то часть функционала будет неработоспособна.
3. Если ПК, на котором запускаются клиенты 1С не на ОС Windows, то часть функционала будет неработоспособна.
4. Если ПК клиента и сервера 1С не на ОС Windows, то данная обработка не сработает!
Думаю это будет исчерпывающий ответ!
Дополнительно внес это в описание публикации, чтобы не нужно было перечитывать комментарии!
(30) Тут всё упирается именно в чистый Линукс, даже без следов windows.
(32) Коллега, предлагаю писать в профильной темеhttps://infostart.ru/public/978816/ , а то ТС уже ругается, на восклицательные знаки перешел.
Про чистый линукс я думал, для получения данных с сервера субд можно использовать внешние источники данных, в общем-то кроме odbc-драйвера ничего не понадобится, но нужна будет отдельная конфигурация, и идея простого способа (с помощью внешней универсальной обработки) получения информации одной кнопкой теряется, ибо надо получить данные с субд о размере таблиц, данные с нужной базы о структуре таблиц, и желательно целевую базу не модифицировать, то есть com-объектов не будет, и надо будет использовать http-сервисы. Много лишних телодвижений получается, но сделать можно.
Можете прислать мне обработку для управляемых форм, пожалуйста? Почта krasevE@yandex.ru
(34) добрый вечер, а почему вы не хотите поделиться опытом на форуме, вам ИС начислит стартмани и сможете скачать любую обработку?
Доброго дня! Обработка вылетает с ошибкой «{ВнешняяОбработка.РазмерТаблицБазыДанных31.Форма.ФормаУправляемая.Форма(364)}: Значение не является значением объектного типа (State) Пока RS.State = 0 Цикл» . Как я понимаю зависает на документе из расширения, а затем появляется такая ошибка. Платформа 8.3.13.1690, УТ 11.4.6.207. MS SQL 2012
(36) добрый день! Обработка не тестировалась на конфигурациях с расширениями, которые изменяют метаданные. И пока такой возможности это проверить тоже нет.
(37) Очень жаль. В самой публикации не указано, что обработка не работает с расширениями. Можете помочь, подсказать, в чем может проблема?
(38) спасибо за комментарий. Добавлю описание, что данные версии не тестировались с расширениями, которые меняют метаданные.
(39) Xershi, по самой проблеме сможете проконсультировать? Обработку уже скачал. Попробую разобраться сам, так как данный функционал очень нужен: база сильно растет в последнее время и непонятно в чем причина, так как динамика объема ввода информации не менялась.
(40) раз ошибка в строке, которую указали, то проблема скорее всего в запросе к базе. Надо тестировать данные, чтобы понять в чем конкретно проблема.
Скорее всего историю данных включили или версионирование. А также ТИИ стоит сделать.
(41) Да, версионирование включено.
(42) запустите удаление старых версий затем ТИИ. Думаю размер на порядок уменьшится. Но и версий старых не будет.