Да, конечно!
Ранее запрос был следующим:
Код: Выделить всё
SELECT
ticket.tn AS "Ticket Number",
ticket.title AS "Theme",
ticket.create_time AS "Create Date",
CONCAT(users.first_name,' ',users.last_name) AS "Responsible",
ticket_type.name AS "Ticket Type",
GROUP_CONCAT(
article.create_time,
' ',
(
CASE article.change_by
WHEN 6 THEN "Дамир Асадуллин"
ELSE "Инженер ЦУС"
END
),
'\n',
article.a_body,
'\n') AS "Note",
ticket_state.name AS "Ticket State",
article.create_time AS "NOTE DATE"
FROM article
LEFT JOIN ticket ON
(
ticket.id = article.ticket_id
)
LEFT JOIN users ON
(
ticket.responsible_user_id = users.id
)
LEFT JOIN ticket_type ON
(
ticket.type_id = ticket_type.id
)
LEFT JOIN ticket_state ON
(
ticket.ticket_state_id = ticket_state.id
)
WHERE DATE_FORMAT(article.create_time,"%Y:%m:%d")=DATE_FORMAT(curdate(),"%Y:%m:%d")
AND users.id = 6
GROUP BY ticket.tn
ORDER BY ticket.id DESC
LIMIT 1
Т.е. я выводил 8 полей в результирующую таблицу, и при выводе на печать отчета - получал результат во вложении (см. скрины). Вместо того, чтобы вывести все колонки (8 полей из запроса) на один лист - часть колонок перенесена на второй лист.
Модуль:
Код: Выделить всё
package Kernel::System::Stats::Static::DamirTest;
use strict;
use warnings;
use Date::Pcalc qw(Days_in_Month);
our @ObjectDependencies = (
'Kernel::Config',
'Kernel::System::Log',
'Kernel::System::Time',
);
sub new {
my ( $Type, %Param ) = @_;
# allocate new hash for object
my $Self = {%Param};
bless( $Self, $Type );
return $Self;
}
sub Param {
my $Self = shift;
my @Params = ();
return @Params;
}
sub Run {
my ( $Self, %Param ) = @_;
my $SQL1 = 'SET group_concat_max_len = 4096';
my $DBObject1 = $Kernel::OM->Get('Kernel::System::DB');
$DBObject1->Prepare( SQL => $SQL1 );
my $SQL2 = 'SELECT ticket.tn, ticket.title, ticket.create_time, CONCAT(users.first_name,\' \',users.last_name), ticket_type.name, GROUP_CONCAT(article.create_time,\' \',(CASE article.change_by WHEN 6 THEN "Дамир Асадуллин" ELSE "Инженер ЦУС" END),\'\n\',article.a_body,\'\n\'),ticket_state.name,article.create_time FROM article LEFT JOIN ticket ON (ticket.id = article.ticket_id) LEFT JOIN users ON (ticket.responsible_user_id = users.id) LEFT JOIN ticket_type ON (ticket.type_id = ticket_type.id) LEFT JOIN ticket_state ON (ticket.ticket_state_id = ticket_state.id) WHERE DATE_FORMAT(article.create_time,"%Y:%m:%d")=DATE_FORMAT(curdate(),"%Y:%m:%d") AND users.id = 6 GROUP BY ticket.tn ORDER BY ticket.id DESC LIMIT 1';
my $DBObject2 = $Kernel::OM->Get('Kernel::System::DB');
$DBObject2->Prepare( SQL => $SQL2 );
my %Stats;
my @Data;
while ( my @Row = $DBObject2->FetchrowArray() ) {
push @Data, [
$Row[0],
$Row[1],
$Row[2],
$Row[3],
$Row[4],
$Row[5],
$Row[6],
$Row[7],
];
}
my $Title = ' ';
my @HeadData = (
'Ticket',
'Title',
'Create Date',
'Responsible',
'Ticket Type',
'Note',
'Ticket State',
'Note Date',
);
my @Result = ( [$Title], [@HeadData], @Data );
return @Result;
}
1;
Хотелось бы узнать, как поменять форматирование выводимого файла.
Сейчас, к сожалению, смог решить только созданием запроса с выводом в одну колонку интересующих данных.(