Имя: Пароль:
1C
 
Кэш метаданных для базы, отсутствующей в списке баз (v8i) пользователя ОС
0 TormozIT
 
гуру
19.12.15
09:48
Путь к каталогу кэша метаданных для базы 1с формируется с участием ее идентификатора, который берется из списка баз (v8i) пользователя ОС.
Например в Windows7 он может быть таким
c:\Users\star\AppData\Local\1C\1Cv82\4129dbdb-b495-41cb-99ea-ef315060a03e, где 4129dbdb-b495-41cb-99ea-ef315060a03e - идентификатор базы из списка баз (v8i).

А как формируется этот путь, если базы нет в списке этом баз? Кэш вообще не используется?
1 ДенисЧ
 
19.12.15
09:57
А зачем нужен кеш для базы, которой нет?
2 TormozIT
 
гуру
19.12.15
10:02
Запускать приложения 1с для базы можно через ее строку соединения (параметр ConnectString). Например такое может быть удобно при использовании стороннего стартера, не завязанного на пользователя ОС.
3 hhhh
 
19.12.15
10:05
(2) а если 2 списка баз?
4 TormozIT
 
гуру
19.12.15
10:14
(3) Не понял.
5 Armando
 
19.12.15
10:30
6 TormozIT
 
гуру
19.12.15
10:32
(5) Спасибо. Я не смог найти эту статью там сам. Итак, ответ - в этом случае кэш метаданных не используется.
7 TormozIT
 
гуру
19.12.15
10:38
Теперь возникает следующие вопросы.
1. Как проще всего добавить базу в список баз программно?
2. Как убедиться, что при запуске через строку соединения она нашлась в списке баз и стал использовать кэш метаданных?
8 Armando
 
19.12.15
11:06
(7)
1. Формат списка баз известен, расположение тоже.
http://its.1c.ru/db/v8doc#content:26:1:issogl1_3.3..v8i
2. http://its.1c.ru/db/metod8dev#content:1591:hdoc
"В каталогах DBNameCache, ConfigSave, Config, SICache хранится множество файлов, кеширующих различные компоненты конфигурации. Эта информация является производной от конфигурации информационной базы, хранимой в базе данных, и служит для ускорения запуска клиентских приложений и повышения их производительности. Кеш конфигурации располагается в каталоге данных приложений текущего пользователя, например, C:/Documents and Settings/User/Local Settings/Application Data/1C/1cv82/7b0a6294-d6a3-41c5-a23e-dc9e5301ad22/DBNameCache."
То есть по наличию этих каталогов и файлах в них, возможно и по дате их изменения.
9 TormozIT
 
гуру
19.12.15
11:18
(8) Лобовой метод добавления базы в список (через v8i) понятен. Я надеялся что есть попроще способы. Например при создании базы ее можно добавить в этот список
CREATEINFOBASE <строка соединения> [/AddInList [<имя ИБ>]] /AddInList — параметр, показывающий, под каким именем добавлять базу в список, если не указан, база не будет добавлена в список.

Способ проверки использования кэша текущим приложением через проверку наличия каталога не подходит, т.к. сначала мне нужно узнать идентификатор базы ровно тем способом, которым его узнает платформа. А способ этот детально не описан. Плюс он довольно сложный в общем случае. К тому же дата изменения могла быть обновлена другим процессом, запустившим ту же базу через список баз, а не через строку соединения, по которой база в списке не нашлась.
10 TormozIT
 
гуру
19.12.15
11:34
Еще вопрос. Используется ли кэш метаданных в режиме внешнего соединения?
11 Armando
 
19.12.15
11:41
(10) по ссылке (5) написано "Влияет на пользователей толстого клиента и конфигуратор."
12 TormozIT
 
гуру
19.12.15
11:45
(11) Это еще не значит, что кэш метаданных в режиме внешнего соединения не используется. Данная статья родилась явно как ответ на чей то вопрос. Вполне возможно что про редко используемое внешнее соединение в очередной раз забыли. Логика подсказывает что в режиме внешнего соединения кэш также используется.
13 Bober
 
19.12.15
11:48
(12) хочешь найти причину по которой COM+ так тупит?
14 TormozIT
 
гуру
19.12.15
11:52
(13) COM+ тут не причем. Хочу разобраться во всех тонкостях работы кэша конфигурации на клиентской стороне, чтобы реализовать соотвествующий функционал для максимального контроля над ним в первую очередь с диагностической и исправительной точек зрения.
15 Bober
 
19.12.15
11:54
(14) о, это очень нужная вещь. а то все работы по проблемам с кэшом заканчивают его очисткой скриптом при входе пользователя.
16 Bober
 
19.12.15
11:56
(14) позже скину  очень прикольный баг в работе 1с со своим кэшом, при котором клиентская часть начинает тупить пока не очистишь кэш.
17 TormozIT
 
гуру
19.12.15
11:59
(11) Первые мои эксперименты показали, что кэш метаданных в режиме внешнего соединения не используется.
18 Bober
 
19.12.15
12:05
(17) на стороне сервера или даже на стороне клиента, у которого есть эта база в списке?
19 TormozIT
 
гуру
19.12.15
12:07
(18) На клиенте запустил с одинаковой строкой соединения сначала внешнее соединение, после чего каталог кэша не появился, потом запустил толстый клиент с параметром ConnectString с той же строкой соединения, после чего каталог кэша появился.
20 Bober
 
19.12.15
12:09
(19) а если после создания каталога снова попробовать подключиться внешним и посмотреть утилитой будет ли система запрашивать ресурсы  из этого каталога?
21 TormozIT
 
гуру
19.12.15
12:10
(20) =)
22 TormozIT
 
гуру
19.12.15
12:12
(17) Проверял пока только в файлом режиме (базы, к которой подключалось внешнее соединение).