За идею взята обработка Определение размера базы данных 1С с разбивкой по объектам метаданных, и доработана для работы с субд PostgreSQL.
Порядок работы:
1) Устанавливаем ODBC-драйвер (https://www.postgresql.org/ftp/odbc/versions/msi/)
2) Заполняем строку соединения в обработке (в справке указан пример)
3) Жмем кнопку Заполнить структуру БД
Совместимость:
Управляемая форма будет работать с платформой 8.3.6+, протестирована на 8.3.11.3133 (PostgreSQL 9.6.7 x64). Синхронные вызовы не используются.
Обычная форма на 8.3.9.1818 (в режиме совместимости с 8.2.16) (PostgreSQL 9.4.2). Не гарантирована работа обычной формы на совместимости выше 8.3.6 (из-за функции Найти)
Windows-клиент должен быть в любом случае (так как используются com-объекты), сам сервер СУБД по идее может быть и на Linux, но проверить не смог, так как таких машин нет.
Возможные ошибки при подключении:
Ошибка: Не удается загрузить указанный драйвер из-за системной ошибки 126: Не найден указанный модуль
Решение: Установите последние библиотеки Microsoft Visual C++
Ошибка: Источник данных не найден и не указан драйвер, используемый по умолчанию
Решение: Драйвер не найден, проверьте правильность имени в строке соединения. Возможно потребуется удалить/установить драйвер заново, либо использовать другую редакцию (x64 вместо x86, либо наоборот).
А что случилось с «Найти» после 8.3.6?
(1) Заменена на СтрНайти. Не уверен что есть обратная совместимость, во всяком случае рекомендуется использовать новую функцию.
(2) Ну как минимум в 8.3.11 «Найти» для строки никуда не делась не смотря на новую «СтрНайти».
(3) У меня нет обычных форм в совместимости выше 8.2, поэтому не проверял, и решил подстраховаться.
(0) А что означает такая ошибка:
Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] Источник данных не найден и не указан драйвер, исп…. (дальше не вошло).
Строка соединения примерно такая:
Driver={PostgreSQL UNICODE(x64)};Server=192.168.1.170;Port=5432;Database=DBNAME;Uid=psqlUSER;Pwd=psqlPWD;STMT=stmt
Причем через системный DSN тест подключения проходит успешно.
(5)
Ошибка что и в описании, драйвер не определился. Попробуйте использовать х86, либо переустановить драйвер (удалить через Программы и компоненты, затем заново установить). У самого только после танцев запустилось
(6) Да, действительно, следующая ошибка — Ошибка при вызове метода контекста (Open): Произошла исключительная ситуация (Microsoft OLE DB Provider for ODBC Drivers): [Microsoft][Диспетчер драйверов ODBC] В указанном DSN архитектура драйвера и архитектура приложения не соответствуют друг другу.
Попробую установить драйвер с архитектурой х86.
(7) Увы, с установленным 32-битным драйвером, не удалось создать источник данных DSN, а если в строке соединения не указать источник данных, то происходит ошибка (5).
(8) Формы управляемые?
Версия windows?
Драйвер переустанавливать пробовали?
(9) Формы — обычные.
Windows 7 Pro x64.
Драйвер переустанавливал. Но если удалить 64-битный драйвер и установить 32-битный, не удается создать источник данных. 32-битного драйвера просто в списке нет.
(10) Источник данных создавать не обязательно. Отсутствие драйвера в списке тоже не будет влиять на работоспособность (на самом деле он есть).
(11) Действительно, удалил 64-битный драйвер и всё отработало. Спс.
Работает.
Проверено на платформе 8.3.13.1690;
Управление торговлей, редакция 11 (11.4.6.207)
PostgreSQL 10.5-11.1C
запустилась только после установки двух драйверов х86 (psqlodbc_11_00_0000-x86) / х64 (psqlodbc_11_00_0000-x64) и с параметрами
«Driver={PostgreSQL Unicode}…….»