--- title: "CreateAttr - Создать атрибут объекта" type: guide api: [api7] tags: [guide, api7, createattr] sources: - createattr.html --- *API экспортных функций > Функции работы с прикладной библиотекой  > Функции работы с атрибутами * ## CreateAttr - Создать атрибут объекта Пример... Замечание: Функция устарела, рекомендуется использовать ksCreateAttr Синтаксис: ``` reference CreateAttr (reference pObj, Attribute * attr, double attrID, char *libname); Входные параметры: pObj - указатель на объект (группа, вид, отдельный объект), атрибут которого создается. Если pObj = 0, то создается атрибут документа, attr - указатель на структуру параметров табличного атрибута Attribute, attrID - уникальный номер типа атрибута, libName - имя библиотеки типов атрибутов, если libname = NULL, то тип атрибута берется из текущего документа. Возвращаемое значение: указатель на атрибут - в случае удачного завершения, 0 - в случае неудачи. ``` ## CreateAttr - Пример использования void CreateAttr_Example (void) { // создадим атрибут для типа атрибута с колонками // DOUBLE_ATTR_TYPE, STRING_ATTR_TYPE, LINT_ATTR_TYPE // Предполагается, что данный тип уже существует ksAttribute attrPar; //структура данных для оформления атрибута struct { double a; char c[MAX_TEXT_LENGTH]; long b; } bufS; // заполним поля атрибута bufS.a = 987654321.0; bufS.b = 99999l; strcpy(bufS.c,"Исполнение 1"); //заполним параметры структуры атрибута strcpy(attrPar.comment,"элемент"); //комментарий атрибута attrPar.key1 = 1; // рекоменд. как код разработчика attrPar.key2 = 10; // рекоменд. как код атрибута attrPar.key3 = 100; // рекоменд. как код разработчика attrPar.key4 = 0; // системный код атрибута // значения от 0 до 1000 зарезервированы АСКОН attrPar.flagVisible = 0; //массив, определяющий для каждой колонки // атрибут видимость-невидимость // 0 -видимое поле 1- невидимое поле attrPar.values = &bufS; // массив значений ячеек таблицы атрибутов // сначала все значения для 1-ой строки, // затем все значения для 2-ой строки и т.д. attrPar.valSize = sizeof(bufS); strcpy(attrPar.password,"111"); //пароль double x, y; reference pObj; RequestInfo info; memset(&info, 0, sizeof(info)); info.prompt = " Укажите объект "; int j = Cursor(&info, &x, &y, 0, 0); if (j) { if(ExistObj(pObj = FindObj(x, y, MAXDOUBLE))){ LightObj(pObj, 1); //запросить имя библиотеки char nameFile[128]; if(!ChoiceFile("*.tip",NULL, nameFile, 128)) nameFile[0]='\0'; //будем искать в документе double numb; j = ReadDouble("Ввести номер типа атрибута", 1000, 0, 1e12,&numb); if(j) { reference attr= ksCreateAttr(pObj, &attrPar, numb, nameFile); if (!attr) MessageBoxResult(); // неудачное завершение } LightObj(pObj, 0); } } }; /* CreateAttr */