Добрый день!
Решил вынести это в отдельную тему из сообщения .
Здесь некоторые мысли основанные на нашем многолетнем опыте работы с достаточно большими объемами данных
Мастер экспорта.
Он должен быть общий для всех сущностей crm.
Первая страница мастера это группа чекбоксов с выбором сущностей для экспорта.
Для чего это нужно. Для того чтобы с любой страницы и по любым условиям фильтра выбрать не только текущую сущность, но и взаимосвязанные. Например мы находимся на странице списка компаний. Нажимаем "Экспорт". У нас появляется эта первая страница мастера, где по умолчанию отмечено "компании". Возможно мы захотим выгрузить также и контакты по этим компаниям или список сделок.
Отмечаем необходимые нам сущности. При выборе сущности (клике на чекбокс) под ним выпадает список чекбоксов с полями доступными для экспорта.
Вторая страница мастера. Сообщает сколько колонок будет в экспортируемом файле, а также предупреждает что если пользователь не отметил в выгружаемых полях ID сущности? то импорт этих данных назад будет невозможным.
ниже предлагается формат выгрузки (csv, excel)
Третья страница мастера. Это собственно процесс выгрузки. У на он выполнен в виде прогрессбара с процентами выполнения и примерным временем завершения работы мастера.
Теперь по формату выгружаемых данных, а точнее по самой шапке файла экспорта.
Формат такой "Название сущности[порядковый номер]:поле сущности". Например "Компании[1]:Название", "Контакты[1]:Фамилия", "Контакты[1]:Email","Контакты[2]:Фамилия", "Контакты[2]:Email"
То есть при экспорте, допустим, со страницы компаний у нас за основу берется компания и у нее может быть несколько контактов/сделок и т. п. Поэтому в шапке указывается порядковый номер сущности (не путать с ID) первый контакт, второй контакт...
Мастер импорта.
Также должен быть общий для всех сущностей.
Первая страница выбор файла. Форматы csv, excel 2003/2007
Вторая страница. Сопоставление полей. Здесь если шапка указана в формате файла который мы выгружали выше, то подставляем поля. "Контакты[1]: Фамилия", "Контакты[2]: Фамилия" и т. д.
Третья страница. Если на второй странице пользователь определил колонку с ID сущности, то есть данные не новые, а должны обновляться, то на третьей странице мы предлагаем ему выбрать набор условий. Если такая-то колонка содержит/не содержит определенный текст, то добавляем/обновляем/удаляем сущность и прекращаем/продолжаем обработку условий. И так можно добавить несколько условий.
Четвертая страница. Анализ данных. Сообщаем пользователю чего и сколько будет добавлено/обновлено/удалено.
Будет добавлено 17 компаний, обновлено 12 компаний, удалено 2 компании, добавлено 23 контакта...
Также неплохо бы проводить анализ самих данных. например если у нас в crm имеется поле типа список, а пользователь перепутал шапку (такие случаи бывали) и указал в этой колонке, скажем, адреса, то мы можем проанализировать количество имеющихся элементов типа список и количество которое будет добавлено и предупредить об этом пользователя. Тоже самое касается проверки данных в колонках "email", "телефон", "web - сайт", где можно проанализировать формат данных из полей в файле и если там какой-то шлак, то вероятно что пользователь ошибся.
Пятая страница. Сам процесс импорта. Опять же с прогрессбаром и примерным временем завершения.
Решил вынести это в отдельную тему из сообщения .
Здесь некоторые мысли основанные на нашем многолетнем опыте работы с достаточно большими объемами данных
Мастер экспорта.
Он должен быть общий для всех сущностей crm.
Первая страница мастера это группа чекбоксов с выбором сущностей для экспорта.
- компании
- контакты
- сделки
- лиды
- события
Для чего это нужно. Для того чтобы с любой страницы и по любым условиям фильтра выбрать не только текущую сущность, но и взаимосвязанные. Например мы находимся на странице списка компаний. Нажимаем "Экспорт". У нас появляется эта первая страница мастера, где по умолчанию отмечено "компании". Возможно мы захотим выгрузить также и контакты по этим компаниям или список сделок.
Отмечаем необходимые нам сущности. При выборе сущности (клике на чекбокс) под ним выпадает список чекбоксов с полями доступными для экспорта.
Вторая страница мастера. Сообщает сколько колонок будет в экспортируемом файле, а также предупреждает что если пользователь не отметил в выгружаемых полях ID сущности? то импорт этих данных назад будет невозможным.
ниже предлагается формат выгрузки (csv, excel)
Третья страница мастера. Это собственно процесс выгрузки. У на он выполнен в виде прогрессбара с процентами выполнения и примерным временем завершения работы мастера.
Теперь по формату выгружаемых данных, а точнее по самой шапке файла экспорта.
Формат такой "Название сущности[порядковый номер]:поле сущности". Например "Компании[1]:Название", "Контакты[1]:Фамилия", "Контакты[1]:Email","Контакты[2]:Фамилия", "Контакты[2]:Email"
То есть при экспорте, допустим, со страницы компаний у нас за основу берется компания и у нее может быть несколько контактов/сделок и т. п. Поэтому в шапке указывается порядковый номер сущности (не путать с ID) первый контакт, второй контакт...
Мастер импорта.
Также должен быть общий для всех сущностей.
Первая страница выбор файла. Форматы csv, excel 2003/2007
Вторая страница. Сопоставление полей. Здесь если шапка указана в формате файла который мы выгружали выше, то подставляем поля. "Контакты[1]: Фамилия", "Контакты[2]: Фамилия" и т. д.
Третья страница. Если на второй странице пользователь определил колонку с ID сущности, то есть данные не новые, а должны обновляться, то на третьей странице мы предлагаем ему выбрать набор условий. Если такая-то колонка содержит/не содержит определенный текст, то добавляем/обновляем/удаляем сущность и прекращаем/продолжаем обработку условий. И так можно добавить несколько условий.
Четвертая страница. Анализ данных. Сообщаем пользователю чего и сколько будет добавлено/обновлено/удалено.
Будет добавлено 17 компаний, обновлено 12 компаний, удалено 2 компании, добавлено 23 контакта...
Также неплохо бы проводить анализ самих данных. например если у нас в crm имеется поле типа список, а пользователь перепутал шапку (такие случаи бывали) и указал в этой колонке, скажем, адреса, то мы можем проанализировать количество имеющихся элементов типа список и количество которое будет добавлено и предупредить об этом пользователя. Тоже самое касается проверки данных в колонках "email", "телефон", "web - сайт", где можно проанализировать формат данных из полей в файле и если там какой-то шлак, то вероятно что пользователь ошибся.
Пятая страница. Сам процесс импорта. Опять же с прогрессбаром и примерным временем завершения.