Имя: Пароль:
1C
 
Нужно хранить кэш, зависящий от конфигурации БД (обновлять при ее изменении)
0 TormozIT
 
гуру
08.02.17
09:56
В универсальной обработке есть долгая процедура вычисления таблицы структур всех таблиц БД. На ERP 2 она длится заметное время (более 30 секунд). Поэтому пользоваться такой программой неудобно. Хотелось бы кэшировать вычисленную таблицу и сохранять ее в файловый кэш (это понятно как делать), а при изменении конфигурации БД обновлять.

Как определить факт изменения конфигурации?

Мне известны способы

    При наличии плана обмена РИБ можно создавать служебный узел и в выгрузке сообщения искать элемент с изменениями и потом удалять узел и создавать заново. Но не во всех конфигурациях есть такой план обмена.
    Использовать утилиту контроля целостности http://its.1c.ru/db/v837doc#bookmark:adm:TI000000510 , но для клиент-серверной базы она требует знать параметры подключения к СУБД, что не всегда возможно. Примеры объектов контроля

    клиент-сервер

    mssql://user:password@server:123/dbname?config

    файловая

    dbe://c:\DB\checked_db?config
1 TormozIT
 
гуру
08.02.17
10:10
Еще придумал такой способ - берем всю структуру хранения БД, сериализуем, вычисляем хеш и сохраняем его вместе с кэшем
ТЗ = ПолучитьСтруктуруХраненияБазыДанных();
ХМЛ = ирОбщий.СохранитьОбъектВВидеСтрокиXMLЛкс(ТЗ);
Хеширование = Новый ХешированиеДанных(ХешФункция.CRC32);
Хеширование.Добавить(ХМЛ);
Хеш = Хеширование.ХешСумма;
Есть два вида языков, одни постоянно ругают, а вторыми никто не пользуется.