Имя: Пароль:
1C
 
ПолучитьСтруктураХраненияБазыДанных()
0 lEvGl
 
гуру
14.08.24
13:38
Доброго, откуда эта функция берет информацию?

Эксперимент: 2 базы, одна - копия другой. Добавляем в копию (база2) новый объект, смотрим ПолучитьСтруктураХраненияБазыДанных(), получаем верную структуру. Копируем средствами скл строку DBNames из Params базы1 в базу2, значения равны, но ПолучитьСтруктураХраненияБазыДанных() в базе2 все равно показывает верную структуру с новым именем добавленной таблицы. То есть в Params в строке с FileName = DBNames это не хранится

Вопрос: откуда ПолучитьСтруктураХраненияБазыДанных() берет структуру соответствия имен метаданных именам данных?
1 H A D G E H O G s
 
14.08.24
14:12
Странные вещи вы говорите.
Ну скорее всего в таблице Config
2 Garykom
 
гуру
14.08.24
14:13
(0) Это ты о чем?
Покажи на картинках, ничё не понял
3 H A D G E H O G s
 
14.08.24
14:13
И даже скорее всего не в Config, а размазано по таблицам
4 Garykom
 
гуру
14.08.24
14:16
5 lEvGl
 
гуру
14.08.24
14:27
(2) да на картинках еще не понятнее, тут же все двоичное в шестнадцатиричном виде

есть вот эта функция ПолучитьСтруктуру(), она возвращает соответствие имен метаданных (спр, док, регистры) именам таблиц в скл в виде ТаблицыЗначений. Вопрос где эта информация хранится первично? Вероятнее всего в скл, но где именно, в отдельной какой то таблице или еще какие то варианты

(3) как так размазано, в каждой таблице скл есть имя объекта метаданных?

где то кто то когда то сказал, что это лежит в таблице Params базы, вот эксперимент показал, что нет
6 Garykom
 
гуру
14.08.24
14:28
(5) читай (4) с п.7 и далее
7 Garykom
 
гуру
14.08.24
14:30
Или ты DBNames копировал но ПолучитьСтруктураХраненияБазыДанных() возвращает старое?

Ну дык пресловутый серверный кэш
8 lEvGl
 
гуру
14.08.24
14:35
(6) написано по теме, спасибо, но странно что после замены строки целиком в этой таблице, как написал в (0), эта функция не стала отображать старый вариант хранения
(7) гммм ну кэш вряд ли, изменения до этой замены были видны сразу
9 Garykom
 
гуру
14.08.24
14:37
(8) Так рестарт сервера 1С сделай
Логично же что оно кэширует СтруктураХраненияБазыДанных а не дергает каждый раз из таблицы Params базы
10 lEvGl
 
гуру
14.08.24
14:39
база1 = база2, один в один
в база2 добавляем новый объект, ПолучитьСтруктуру() все правильно показывает, что теперь в базе2 есть новый и имя его скл таблицы, все ок. Идем на скл и делаем апдейт этой строки в таблице Params для базы2 на основе данных этой же таблицы базы1, то есть подменяем на изначальный вариант, который был до добавления нового объекта, типа как его теперь в ПолучитьСтруктуру() быть не должно, но он есть
11 lEvGl
 
гуру
14.08.24
14:43
(11) думаешь?... попробовать можно, но ведь добавление нового объекта он сразу увидел..
ну да, добавление штатное, а такая подмена нет, может быть и так, да, попробую
13 Волшебник
 
15.08.24
07:51
(10) Это нарушает лицензионное соглашение 1С
14 Garykom
 
гуру
15.08.24
12:43
(13) Средствами 1С тоже?
Например извратом через ВИД
15 Волшебник
 
15.08.24
13:12
(14) Тоже
17 lEvGl
 
гуру
15.08.24
13:26
(16) не хватает правов, разворачивать свой скл надо
в общем да, в params лежат ид объектов и названия таблиц скл, но связки имя метаданных и ид объекта там нет, думается в schemadb это лежит, если это заменить, то ПолучитьСтруктуру() отрабатывает соответствующим образом + 11 не сработало для получитьструктуру()
18 vis
 
15.08.24
13:50