--- title: "Интерфейс IUserDataStorage" type: interface api: [api7] tags: [interface, api7, iuserdatastorage] sources: - iuserdatastorage.html --- *API интерфейсов. Версия 7 > Документ  > Хранилища * ## Интерфейс IUserDataStorage Интерфейс пользовательского хранилища. Иерархия: IKompasAPIObject IUserDataStorage Описание: Хранилище представляет собой именованную «закладку» в коллекции. Для хранилища могут задаваться версии. Хранилище может быть защищено от изменений паролем. Парольная защита не препятствует просмотру содержания хранилища. Данные в хранилище представлены в виде таблицы, состоящей из двух столбцов – данных различных типов и комментария. Примечание: Интерфейс можно получить у коллекции хранилищ, используя свойство IUserDataStorages::Item. Интерфейс IUserDataStorages Интерфейс IUserDataStoragesMng ## AddObject - Добавить объект и комментарий в пользовательское хранилище Синтаксис Automation: ``` long AddObject( LPCTSTR pass, const VARIANT & object, LPCTSTR comment ); ``` Синтаксис COM: ``` HRESULT AddObject( [in] BSTR Pass, [in] VARIANT Object, [in] BSTR Comment, [out, retval] long* pVal); Входные параметры: Pass - пароль, Object - указатель на объект, comment - комментарий. Возвращаемое значение: - индекс объекта, ``` Примечание: 1. Объект может быть variant'ом с типом VT_INT, VT_I2, VT_I4, VT_R4, VT_R8, VT_DATE, VT_UI1, VT_UINT, VT_BOOL, VT_BSTR, VT_DISPATCH, а также VT_ARRAY с этими типами данных. Индекс массива начинается с нуля. 2. Если задан интерфейс VT_DISPATCH и массив объектов VT_ARRAY | VT_DISPATCH, то под объектом подразумевается указатель на IDispatch от объектов API. Они также будут сохранены вместе с документом и при следующем запросе найдены. 3. Индексация массивов должна начинаться с нуля. 4. Если хранилище защищено паролем от изменений, то метод будет выполнен только после указания правильного пароля. 5. Под объектом API следует понимать объекты: для 3D хранилища - наследник от IModelObject, для 2D хранилища - наследник от IDrawingObject (кроме ILayer). ## AddObjects - Добавить объекты пользовательского хранилища и комментарии к ним Синтаксис Automation: ``` BOOL AddObjects( BSTR Pass, VARIANT Objects, VARIANT Comments ); ``` Синтаксис COM: ``` HRESULT AddObjects( BSTR Pass, VARIANT Objects, VARIANT Comments, BOOL * Result ); Возвращаемое значение: TRUE - в случае успеха, FALSE - в случае неудачи. Входные параметры: Pass - пароль, Objects - список данных в виде массива VT_ARRAY VT_VARIANT, comments - список комментариев в виде массива VT_ARRAY VT_BSTR. Версия Компас v21 ``` ## Clear - Очистить хранилище, удалив все объекты Синтаксис Automation: ``` BOOL Clear ( LPCTSTR Pass ); ``` Синтаксис COM: ``` HRESULT Clear( [in] BSTR Pass, [out, retval] VARIANT_BOOL* Result); Входные параметры: Pass - пароль. Возвращаемое значение: TRUE - в случае успеха, FALSE - в случае неудачи. ``` Примечание: Если хранилище защищено паролем от изменений, то метод будет выполнен только после указания правильного пароля. ## Delete - Удалить объект, заданный по индексу или по комментарию Синтаксис Automation: ``` BOOL Delete( LPCTSTR pass, const VARIANT & index ); ``` Синтаксис COM: ``` HRESULT Delete( [in] BSTR Pass, [in] VARIANT Index, [out, retval] VARIANT_BOOL* PVal ); Входные параметры: Pass - пароль, Index - индекс объекта или комментарий. Возвращаемое значение: TRUE - в случае успеха, FALSE - в случае неудачи. ``` Примечание: 1. В качестве индекса можно задать число или комментарий к объекту. 2. Если хранилище защищено паролем от изменений, то метод будет выполнен только после указания правильного пароля. ## GetObject - Получить объект пользовательского хранилища и комментарий к нему по комментарию или индексу Синтаксис Automation: ``` BSTR GetObject( const VARIANT & index, VARIANT * object, long * numb ); ``` Синтаксис COM: ``` HRESULT GetObject( [in] VARIANT Index, [out] VARIANT * Object, [out] long* numb, [out, retval] BSTR * Comment ); Входные параметры: Index - индекс объекта или комментарий. Выходные параметры: Object - указатель на объект хранилища, numb - указатель на номер объекта. Возвращаемое значение: Comment (BSTR) - комментарий. ``` Примечание: 1. В качестве индекса можно задать число или комментарий к объекту. 2. Объект может быть variant'ом с типом VT_INT, VT_I2, VT_I4, VT_R4, VT_R8, VT_DATE, VT_UI1, VT_UINT, VT_BOOL, VT_BSTR, VT_DISPATCH, а также VT_ARRAY с этими типами данных. 3. Если задан интерфейс VT_DISPATCH и массив объектов VT_ARRAY | VT_DISPATCH, то под объектом подразумевается указатель на IDispatch от объектов API. Они также будут сохранены вместе с документом и при следующем запросе найдены. ## Name - Имя хранилища Синтаксис Automation: ``` Тип данных: LPSTR Name = StorageObj.Name(Pass) Получить свойство (* ) StorageObj.Name(Pass) = Name Установить свойство (* ) Name = StorageObj.GetName(Pass) Получить свойство (**) StorageObj.SetName (Name, Pass) Установить свойство (**) Входные параметры: Pass (LPSTR) - пароль хранилища. ``` Синтаксис COM: ``` Тип данных:BSTR. StorageObj>get_Name (Pass, &Name) Получить свойство StorageObj>put_Name (Pass, Name) Установить свойство Входные параметры: Pass (BSTR) - пароль хранилища. ``` Примечание: Если хранилище защищено паролем, то изменить свойство можно, только указав правильный пароль. ## SetObject - Установить объект пользовательского хранилища и комментарий к нему по комментарию или индексу Синтаксис Automation: ``` long SetObject( LPCTSTR pass, const VARIANT index, const VARIANT & object, LPCTSTR comment ); ``` Синтаксис COM: ``` HRESULT SetObject( [in] BSTR Pass, [in] VARIANT Index, [in] VARIANT Object, [in] BSTR Comment, [out, retval] long* pVal); Входные параметры: Pass - пароль, Index - индекс объекта или комментарий, Object - указатель на объект, comment - комментарий. Возвращаемое значение: TRUE - в случае успеха, FALSE - в случае неудачи. ``` Примечание: 1. В качестве индекса можно задать число или комментарий к объекту. 2. Объект может быть variant'ом с типом VT_INT, VT_I2, VT_I4, VT_R4, VT_R8, VT_DATE, VT_UI1, VT_UINT, VT_BOOL, VT_BSTR, VT_DISPATCH, а также VT_ARRAY с этими типами данных. 3. Если задан интерфейс VT_DISPATCH и массив объектов VT_ARRAY | VT_DISPATCH, то под объектом подразумевается указатель на IDispatch от объектов API. Они также будут сохранены вместе с документом и при следующем запросе найдены. 4. Если хранилище защищено паролем от изменений, то метод будет выполнен только после указания правильного пароля. ## SetPassword - Установить пароль на изменение данных в хранилище Синтаксис Automation: ``` BOOL SetPassword( LPCTSTR oldPass, LPCTSTR newPass ); ``` Синтаксис COM: ``` HRESULT SetPassword( [in] BSTR OldPass, [in] BSTR NewPass, [out, retval] VARIANT_BOOL* Result); Входные параметры: OldPass - старый пароль, NewPass - новый пароль. ``` Примечание: 1. Если хранилище защищено паролем от изменений, то изменить пароль можно, только указав текущий пароль. 2. По умолчанию пароль представляет собой пустую строку или нулевой указатель. ## Version - Версия хранилища Синтаксис Automation: ``` Тип данных: long Version = StorageObj.Version(Pass) Получить свойство (* ) StorageObj.Version(Pass) = Version Установить свойство (* ) Version = StorageObj.GetVersion(Pass) Получить свойство (**) StorageObj.SetVersion (Version, Pass) Установить свойство (**) Входные параметры: Pass (LPSTR) - пароль хранилища. ``` Синтаксис COM: ``` Тип данных: long StorageObj->get_Version (Pass, &Version) Получить свойство StorageObj->put_Version (Pass, Version) Установить свойство Входные параметры: Pass (BSTR) - пароль хранилища. ``` Примечание: Если хранилище защищено паролем, то изменить свойство можно, только указав пароль.