Запись значения в Dynamic Field

Обсуждение вопросов и решений

Модератор: ykolesnikov

Ответить
VARD32
OTRS Новобранец
Сообщения: 55
Зарегистрирован: 09 фев 2017, 15:18

Запись значения в Dynamic Field

Сообщение VARD32 » 01 мар 2017, 09:37

Добрый день.
Создал динамическое поле "MyField" в тикетах. Теперь пытаюсь записать туда значение.
Документация говорит следующее:

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

my $DynamicFieldValueObject = $Kernel::OM->Get('Kernel::System::DynamicFieldValue');
my $Success = $DynamicFieldValueObject->ValueSet(
        FieldID  => $FieldID,                 # ID of the dynamic field
        ObjectID => $ObjectID,                # ID of the current object that the field
                                              #   must be linked to, e. g. TicketID
        Value    => [
            {
                ValueText          => 'some text',            # optional, one of these fields must be provided
                ValueDateTime      => '1977-12-12 12:00:00',  # optional
                ValueInt           => 123,                    # optional
            },
            ...
        ],
        UserID   => $UserID,
    );
Вопрос: где мне взять $FieldID и $ObjectID ?

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Запись значения в Dynamic Field

Сообщение MrIch » 01 мар 2017, 10:31

Приветствую, для примера:
Назначает динамическому полю с id = 31 для тикета значение переменной Path2File

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

my $Success1231 = $DynamicFieldValueObject->ValueSet(
				FieldID            => 31,
                ObjectID           => $TicketID,
                Value              => [
					{
						ValueText => $Path2File,
					},
				],
				UserID             => 1,
        );
FieldID - поле id динамического поля:
Если хотите посмотреть через базу: SELECT * FROM dynamic_field;
Если хотите посмотреть в веб версии: Администрирование - Динамические поля - Выбирайте нужно динамического поле и в адресной строке смотрите ID=
Изображение
ObjectID - id объекта к которому будете привязывать значение динамического поля, в большинстве случаев будет TicketId.
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

VARD32
OTRS Новобранец
Сообщения: 55
Зарегистрирован: 09 фев 2017, 15:18

Re: Запись значения в Dynamic Field

Сообщение VARD32 » 01 мар 2017, 11:33

Благодарю Вас! Получилось!

Если Вам не трудно, подскажите пож-ста, как ещё прочитать динамическое поле?

Я делаю так:

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

my $DynamicFieldValueObject = $Kernel::OM->Get('Kernel::System::DynamicFieldValue');
my $Value = $DynamicFieldValueObject->ValueGet(
        FieldID            => 31,                        # Подсмотрен правильно! :)
        ObjectID           => $TicketID,            # ID of the current object that the field   #   is linked to, e. g. TicketID
    );
После этого, я так понимаю в $Value лежит массив со значением?
Если просто распечатать print $Value - то получаю какой то хэш на массив а не его значение.
Если делаю $Value{MyDynamicFieldName} - получаю пустоту.
Если делаю $Value[0] - ошибку.

Как мне прочитать $Value ?

MrIch
OTRS Новобранец
Сообщения: 97
Зарегистрирован: 30 ноя 2015, 10:37

Re: Запись значения в Dynamic Field

Сообщение MrIch » 01 мар 2017, 11:48

Я, честно говоря, обычно тащу сразу значения для всего тикета таким способом:

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

my %Ticket12 = $TicketObject->TicketGet(
            TicketID      => $TicketID,
            DynamicFields => 1,         # Optional, default 0. To include the dynamic field values for this ticket on the return structure.
            UserID        => 1,
        );
И тогда обращение к значению динамического поля будет:

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

$Ticket12{'DynamicField_003'} 
- где 003 это имя из скрина выше.

А в вашем случае поидее так должно быть:

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

$Value{ValueText} 
$Value{ValueInt} 
$Value{ValueDateTime } 
В зависимости от типа поля
OTRS ITSM 5.0.3
Ubuntu 14.04 + PostgreySQL 9.3.9 +Apache 2.4.7

VARD32
OTRS Новобранец
Сообщения: 55
Зарегистрирован: 09 фев 2017, 15:18

Re: Запись значения в Dynamic Field

Сообщение VARD32 » 01 мар 2017, 12:22

Всё получилось. Мега-спасибо Вам!

Ответить