Как добавить пользовательский столбец в представление заявки OTRS (панель управления)

Я пытался добавить дополнительные данные в билет OTRS (новейшая версия). И мне удалось получить информацию в данных билета в порядке, однако я не знаю, как получить к ней доступ в представлении. Большинство данных, кажется, анализируются через $QData/$Data, однако все, что я получаю, когда печатаю свою переменную, это 16/12.

    %CustomerCompanyName = $Self->{CustomerCompanyObject}->CustomerCompanyGet( CustomerID => $Ticket{CustomerID} ); 

    #} 
    $Ticket{CustomerCompanyName} = \%CustomerCompanyName;

И я хочу получить к нему доступ в dtl AgentDashboardTicketGeneric.dtl, однако $Data{"CustomerCompanyName"} пуст. Мне удалось получить хэш или 16/12. Опять же, в переменной $Ticket нам удалось сбросить переменную и увидеть, что данные на самом деле находятся там (фактически не имея возможности получить к ним доступ, мы не можем понять, какой это тип данных, и испробовали все возможные способы, которые мы можно было подумать).

Редактировать: я понял это. Это работало с решением Johannes, однако значение столбца в SysConfig должно было быть 2, а не 1.


person Dennis    schedule 11.08.2014    source источник


Ответы (1)


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

Если вам нужны данные Компании-заказчика, которые не привязаны к данным тикета, то вам необходимо модифицировать/расширить данный модуль (Kernel::Output::HTML::DashboardTicketGeneric). Вот почему $Data{"CustomerCompanyName"} пусто, потому что там не загружен материал компании клиента.

ИМХО, вам не нужно изменять dtl. Добавьте новый столбец в sysconfig:

HTTP://OTRSHOST/otrs/index.pl?Action=AdminSysConfig;Subaction=Edit;SysConfigSubGroup=Frontend%3A%3AAgent%3A%3ADashboard;SysConfigGroup=Ticket Добавьте новый столбец "CompanyName" к каждому виджету DefaultColumns. Sysconfig

(Подсказка: здесь вы также можете добавить DynamicField, используя DynamicField_XXX)

Затем измените код в DashboardTicketGeneric.pm.

Во-первых: добавьте модуль (около L:21)

use Kernel::System::CustomerCompany;

после этого запустите модуль (после CustomerUserObject около L: 44)

$Self->{CustomerCompanyObject} = Kernel::System::CustomerCompany->new(%Param);

Затем добавьте логику в модуль (около L:1414 - после блока имени клиента:

            elsif ( $Column eq 'CompanyName' ) {

                # get customer company name
                my %CompanyData;
                if ( $Ticket{CustomerID} ) {
                    %CompanyData = $Self->{CustomerCompanyObject}->CustomerCompanyGet(
                        CustomerID => $Ticket{CustomerID},
                    );
                }
                $DataValue = $CompanyData{CustomerCompanyName};
            }

введите здесь описание изображения

Затем удалите кеш (..bin/otrs.DeleteCache.pl), потому что виджеты используют кеширование, и ваши изменения не будут применяться достаточно быстро;)

Добавьте столбец в свой виджет (правый верхний угол в виджете -> Настройки), и все будет в порядке. введите здесь описание изображениявведите здесь описание изображения

Обновление: поместите «новый модуль» в пользовательскую папку.

Custom/Kernel/Output/HTML/DashboardTicketGeneric.pm

С Уважением

Йоханнес

person Hannes_hal    schedule 11.08.2014
comment
Спасибо! Абсолютный первый полезный ответ, который я смог найти. Только вопрос - я так понимаю там столбцы, что при оформлении нового тикета нужно вводить название компании? Я могу быть не прав. Я не хочу, чтобы это было частью заявки, но поскольку данные уже есть в профиле пользователя, я просто хочу показать их агентам. - person Dennis; 11.08.2014
comment
Эй, компания связана с клиентом через CustomerID. Итак, у вас есть N клиентов, которые работают в компании A. Тогда все N клиентов должны иметь один и тот же идентификатор клиента. Идентификатором клиента может быть имя, номер или любое другое буквенно-цифровое значение. это помогает? - person Hannes_hal; 11.08.2014
comment
Я понимаю дизайн, стоящий за этим (я учусь на магистра CS), меня немного смущает поток данных в OTRS. Но у меня все получилось - спасибо! - person Dennis; 11.08.2014