--- title: "DeleteAttr - Удалить атрибут объекта" type: guide api: [api7] tags: [guide, api7, deleteattr] sources: - deleteattr.html --- *API экспортных функций > Функции работы с прикладной библиотекой  > Функции работы с атрибутами * ## DeleteAttr - Удалить атрибут объекта Пример... Аналог данной функции при использовании Automation - метод ksAttributeObject::ksDeleteAttr. Синтаксис: ``` int DeleteAttr (reference pObj, reference PAttr, char * password); Входные параметры: pObj - указатель на объект, к которому подключен атрибут. Если pObj = 0 - атрибут текущего документа, pAttr - указатель на удаляемый атрибут, password - пароль атрибута. Возвращаемое значение: 1 - в случае удачного завершения, 0 - в случае неудачи. ``` Примечание: 1. Указатель на объект reference pObj может быть получен следующими способами: – с помощью функций Итератора CreateIterator, MoveIterator. – с помощью методов создания объектов, возвращающих указатель reference на созданный объект, например, reference LineSeg. 2. Указатель на атрибут reference pAttr может быть получен: – с помощью функций итератора CreateAttrIterator, MoveAttrIterator, – с помощью функций создания атрибутов ksCreateAttr, или выбора атрибутов ChoiceAttr. ## DeleteAttr - Пример использования { // создадим атрибут для типа атрибута с колонками // DOUBLE_ATTR_TYPE, STRING_ATTR_TYPE, LINT_ATTR_TYPE // Предполагается, что данный тип уже существует Attribute 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.promt = " Укажите объект "; 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)) nameFile[0]='\0'; //будем искать в документе double numb; j = ReadDouble("Ввести номер типа атрибута", 1000.,0, 1e12,&numb); if(j) { reference attr= CreateAttr(pObj, &attrPar, numb, nameFile); if (!attr) MessageBoxResult(); // неудачное завершение } LightObj(pObj, 0); } } DeleteAttr (pObj, attr, «111»); };