Здравствуйте.
Стандартной выгрузки информации по клиентам и их счетам в УКМ нет. На форуме тоже не нашел, возможно проглядел.
В силу своих знаний, сформировал запрос который выводит информацию по клиенту и его состоянию бонусных счетов.
Карты и свойства клиентов пока не выгружаю. На текущий момент, нет понимания как решить задачу со структурой, потому как если карт или свойств более одного, строки по клиентам увеличиваются на их количество, что приводит к большому излишку данных. Т.е. нет понимания, как каждую карту или свойство выводить в отдельной колонке, не создавая лишних строк.
В текущей версии скрипта, лишние строки будут присутствовать если у клиента более одного активного счета.
Скрипт выбирает только тех клиентов, у которых есть активные счета.
Что получается сейчас:
+-------+---------+--------+
|Клиент|Счет......|Баланс.|
+-------+---------+--------+
|Вася...|Счет №1|1000....|
+-------+---------+--------+
|Вася...|Счет №2|20000..|
+-------+---------+--------+
|Коля...|Счет №1|10000..|
+-------+---------+--------+
Что хотелось бы получить:
+-------+---------+---------+
|Клиент|Счет №1|Счет №2|
+-------+---------+---------+
|Вася...|1000......|20000...|
+-------+---------+---------+
|Коля...|10000....|0..........|
+-------+---------+---------+
Сам запрос:
SQL код:
SELECT `trm_in_classifclients`.`name` 'КЛАССИФИКАТОР КЛИЕНТОВ'
, `trm_in_clients`.`sur_name` AS 'ФАМИЛИЯ'
, `trm_in_clients`.`name` AS 'ИМЯ'
, `trm_in_clients`.`patronymic` AS 'ОТЧЕСТВО'
, `trm_in_clients`.`birthday` AS 'ДАТА РОЖДЕНИЯ'
, `trm_in_clients`.`id` AS 'ID КЛИЕНТА'
, `trm_in_account_type`.`name` AS 'СЧЕТ'
, `local_auth_account_journal`.`balance` AS 'БАЛАНС'
, CASE WHEN `trm_in_clients`.`active`=1 THEN 'ДА' WHEN `trm_in_clients`.`active`=0 THEN 'НЕТ' END AS 'АКТИВЕН'
, CASE WHEN `trm_in_clients`.`deleted`=1 THEN 'ДА' WHEN `trm_in_clients`.`deleted`=0 THEN 'НЕТ' END AS 'УДАЛЕН'
FROM `local_auth_account_journal`, `local_auth_account`, `trm_in_clients`, `trm_in_account_type`, trm_in_classifclients
WHERE `local_auth_account_journal`.`id`=(SELECT MAX(`local_auth_account_journal`.`id`) FROM `local_auth_account_journal` WHERE `local_auth_account_journal`.`account_id`=`local_auth_account`.`id`)
AND `trm_in_clients`.`id`=`local_auth_account`.`params`
AND `local_auth_account`.`account_type_id`=`trm_in_account_type`.`id`
AND `trm_in_clients`.`classifclient`=`trm_in_classifclients`.`id`
ORDER BY `trm_in_classifclients`.`name`, `trm_in_clients`.`sur_name`;
Возможно более опытные коллеги "допилят" скрипт, или поделятся идеями как это можно реализовать. Варианты предложенные в интернете пробовал, но что-то не выходит.
P.S. Текущий вариант сегодняшнюю мою задачу решает. Возможно и другим этот скрипт будет полезен.
P.P.S. "Батник" с формированием файла доступен по ссылке
https://storage.olegon.ru/supermag/У...cliens_v0.1.7z