Генератор метаданных для импорта отчетов 1С в SugarCRM

Ситуация

Не так давно к нам зашел проект с небольшим количеством отчетов. У клиента уже были отчеты, но строились они в 1С. Нашей задачей было отобразить эти отчеты в SugarCRM, попутно дополнив их данными из CRM системы.

Наши потребности

Для того что бы мы могли без проблем строить отчеты в SugarCRM, данные для них нужно было импортировать из CSV файлов и сохранить в базу данных. Благо у нас уже был скрипт, который мы использовали для импорта данных из CSV файлов. Но он требовал настройки в виде создания маппинга для колонок файлов и базы данных. Также на основе этого маппинга нам нужно было создать метаданные для создания таблиц в CRM.

Проблемы

Основными проблемными местами в выполнении данной задачи были:

  • Отсутствие окончательно утвержденного списка колонок;
  • Название колонок CSV файла были на русском языке;
  • Количество колонок в каждом из отчетов варьировалось от 30 до 50.

Решение

Осознав проблемы, я принял решение написать генератор, который бы создавал метаданные для скрипта импорта данных из 1С, а также метаданные для генератора вардефов

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

Пример использования

Пример CSV файла:


Первая колонка,Вторая колонка,Третья,Четвертая,Привет Мир,Мама,Папа,Я
1,2,3,4,5,6,7

Настройка генератора:


require_once 'SchemaGenerator.php';
$sg = new SchemaGenerator;
$sg->setTranslater('Yandex');
$sg->setDelimiter(",");

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

Результат работы генератора:


Import OneC

'Первая колонка' => 'the_first_column',
'Вторая колонка' => 'the_second_column',
'Третья' => 'a_third',
'Четвертая' => 'fourth',
'Привет Мир' => 'hello_world',
'Мама' => 'mother',
'Папа' => 'dad',
'Я' => 'i',

Vardef

array('varchar', 'the_first_column', 'Первая колонка'),
array('varchar', 'the_second_column', 'Вторая колонка'),
array('varchar', 'a_third', 'Третья'),
array('varchar', 'fourth', 'Четвертая'),
array('varchar', 'hello_world', 'Привет Мир'),
array('varchar', 'mother', 'Мама'),
array('varchar', 'dad', 'Папа'),
array('varchar', 'i', 'Я'),

Итого

Написав генератор один раз, мы сэкономили время, когда нам потребовалось изменить отчеты и добавить новые. В общей сложности на создание маппинга и метаданных для таблицы одного отчета, нам бы потребовалось до 2 часов. C использованием генератора, время на эти же операции сократилось до 30 минут.


© 2013 Ведисофт
Москва: +7 (499) 703-04-23
Екатеринбург: +7 (343) 236-60-96
Почта: info_at_vedisoft_dot_info