Присоединение характеристики

Модераторы: ayatsk, deschere

Ответить
UlMagnus
Сообщения: 8
Зарегистрирован: 31 мар 2016, 13:37

Присоединение характеристики

Сообщение UlMagnus » 31 мар 2016, 13:45

Здравствуйте, уважаемые разработчики!

Подскажите, как программно (без обращения к пользователю) выполнить присоединение характеристики к изделию.
Если можно, то с примером.
То есть по идее надо сначала найти перечень характеристик, зная наименование например, указать тип, и задать значение.
Заранее спасибо.

Аватара пользователя
ayatsk
Сообщения: 268
Зарегистрирован: 03 июл 2008, 22:41
Откуда: НИЦ CALS
Контактная информация:

Re: Присоединение характеристики

Сообщение ayatsk » 31 мар 2016, 14:34

Вам для C++ или ActiveX ?

UlMagnus
Сообщения: 8
Зарегистрирован: 31 мар 2016, 13:37

Re: Присоединение характеристики

Сообщение UlMagnus » 31 мар 2016, 16:40

Для C++

Аватара пользователя
ayatsk
Сообщения: 268
Зарегистрирован: 03 июл 2008, 22:41
Откуда: НИЦ CALS
Контактная информация:

Re: Присоединение характеристики

Сообщение ayatsk » 31 мар 2016, 17:25

После коннекта надо один раз скачать из базы в кэш описание хатактеристик

Код: Выделить всё

m_api->m_charact_mgr.LoadDictionary();
Для создания значения характеристики надо:

1) Найти характеристику по обозначению:

Код: Выделить всё

CaplInstance* 	ciCharact=m_api->m_charact_mgr.GetCharacteristicById("ExtentionPI");
if(0==ciCharact)
{
          // Нет такой характеристики
}
или по имени :

Код: Выделить всё

CaplInstance *GetCharacteristicBN(const char * name);

2) Находим тип, если он нужен
CaplInstance* ciCharactType=m_api->m_charact_mgr.GetCharacteristicType("фактическая");

3) В зависимости от типа значения использовать разные функции:

Код: Выделить всё

// ciRefusal - объект на который навешивается характеристика
// sValue - значение в виде строки

if(sValueType == "descriptive")
{
	m_api->m_charact_mgr.CreateDescriptiveCharacteristic(ciRefusal, ciCharact, ciCharactType, sValue);
}
else if(sValueType == "measure")
{
	m_api->m_charact_mgr.CreateMeasuredCharacteristic(ciRefusal, ciCharact, ciCharactType, atof(sValue), 0, 0);
}
else if(sValueType == "monet")
{
	m_api->m_charact_mgr.CreateMonetaryCharacteristic(ciRefusal, ciCharact, ciCharactType, atof(sValue));
}

Все описания параметров функций см. при их определении в заголовочном файле.

Если значений надо создать тысячи, то для нормальной работы надо использовать немного другие методы.
Эти будут слишком медленные.

Ответить