AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 03.12.2008, 13:25   #1  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Личная разработка - средство импорта данных в базу CRM из файла Excel
Предыстория:
потребовалось влить много данных, которые раньше систематизировались токмо в табличках Excel и немножко - Access. Собсна, добавил нужные сущности, обратился к процедуре импорта. Проковырялся со стандартной импортовой процедурой пару рабочих дней, так и не залив ни строчки. Почесал малось репу и за четыре с половиной дня сговнякал собственный стафф для импорта.

Имеем:
1. Такую себе aspx-страничку, которая нормально сайзится вширь и при открытии выглядит так как в скриншоте BaseForm/
2. Дальше начинаем действовать:
- browse'им файл для загрузки - обязательно файл Excel, форматов: *.xls; *.xlsx (можно буит и другие форматы попробовать как-нить);
- задаем название вкладки, с которой будет зачитана таблица с данными, хотя и не обязательно, если вкладка в Вашем файле всего одна;
- задаем количество заполненых строк. Здесь задавать нужно явно, поскольку, если использовать значения по умолчанию, либо же сначала вычислять количество заполненых строк - то алгоритм нереально тупит. Ну и потом: для пробы, и если источник очень большой - вы вполне можете попробовать, как загрузятся три-четыре строки, прежде чем загружать все строки;
- задаем количество столбцов. Тут как со строками: лучше задать один раз, чем полениться и ждать, пока тубые службы Excel обработают весь документ целиком;
После того, как ввели данные в поля - жмем кнопку "Загрузить", которая загружает в кэш ячейки таблицы Excel и сигнализирует об этом, формируя нередактируемый грид в ниэней части формы, а также добавляя имя загруженного файла в соответствующее поле, как на рисунке LoadedForm.
3. После того, как таблица загружена - необходимо выбрать, какую же сущность системы нужно заполнить записями. Для этого, выбираем сущность из выпадающего списка в поле "Сущность CRM" и жмем кнопку "Сопоставить". После нажатия кнопки "Сопоставить", система пытается сопоставить название колонок таблицы Excel, с именами (label) полей выбранной сущности. Если сопоставление происходит удачно, то в последствии вам придется меньше работать вручную, чтобы задать поля, в которые нужно загружать данные из столбцов. На рисунке MergingForm можно увидеть выпадающий список сущностей и поля для сопоставления полей.
4. Далее следует самая геморная часть работы: нужно сопоставить вручную поля сущности, с колонками таблицы, которые не были сопоставлены автоматически. Для этого, после выбора сущности и автосопоставления возникает ряд полей по числу, равный количеству столбцов загруженной таблицы. В каждом из полей, необходимо выбрать из выпадающего списка наименование атрибута сущности, в который будут записаны данные. Эту часть смотрите на картинке CompareForm.
5. Ну и после сопоставления колонок с атрибутами, можете нажимать кнопку "Загрузить в CRM" после нажатия которой элементы выбранной сущности появятся в системе.

Итоги:
- записи создаются, совершенно точно и весьма быстро. У меня была таблица из где-то тысячи строк, которая загрузилась за одно моргание глаза. Более точно производительность я не подсчитывал;
- алгоритм не предназначен (пока) для апдейта существующих записей, хотя дубликаты создавать не позволяет;
- весьма четко и внятно по названию, определяются значения lookup и picklist полей. То есть: у вас есть поле, которое связано отношением N:1 с элементом организации. Вы пишете в ячейке таблицы имя организации, загружаете, а остальное уже (поиск элемента организации по имени, подстановка данных в лукап-поле текущей сущности) форма делает сама. Не имеет значения, какой тип связанного лукап-поля,- форма сама определит этот тип, отыщет нужный элемент и выполнит связку. То же с пиклистами: если такое название значения пиклиста есть - оно будет подставлено. В этом смысле есть недостаток: названия в ячейках исходной таблицы и названия элементов связанных сущностей должны совпадать точно;
- к данной форме имеется форма настроек, в которой Вы указываете параметры: сервера CRM, организации, имени пользователя и пароль для входа на сервер CRM (под анонимом, к сожалению, войти невозможно);
- очевидно, что можно улучшить представления списков сущностей и полей в выпадающих списках, как минимум, установив сортировку по имени, а как максимум - отображая не системное имя, а принятое имя сущности/поля на локальном язые;
- очевидно, что нужно сделать возможность апдейта существующих записей из таблицы эксель;
- очевидно, что можно поиграться с алгоритмом сопоставления полей, а также связанных сущностей;
- весьма очевидно, что дизигн сделан на коленке и реально убог;
- ещё можно добавить возможность редактирования значений в уже загруженной таблице прямо в гриде.
Короче, стафф работает, но его ещё можно улучшить.
И галвное: кому нужны исходники - могу предоставить абсолютно безвозмездно (даже благодарить в форуме необязательно).
Миниатюры
Нажмите на изображение для увеличения
Название: BaseForm.JPG
Просмотров: 584
Размер:	77.9 Кб
ID:	4018   Нажмите на изображение для увеличения
Название: LoadedForm.JPG
Просмотров: 580
Размер:	80.0 Кб
ID:	4019  

Нажмите на изображение для увеличения
Название: MergingForm.JPG
Просмотров: 448
Размер:	80.8 Кб
ID:	4020   Нажмите на изображение для увеличения
Название: CompareForm.JPG
Просмотров: 582
Размер:	69.8 Кб
ID:	4021  

__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
За это сообщение автора поблагодарили: GLU (1), Bondonello (1), riv76 (1), echo_igor (1), absurdperson (1).
Старый 03.12.2008, 13:52   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Ничего-так. Даже в фирменном стиле!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 03.12.2008, 14:01   #3  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
2 Артем Enot Грунин: только вот грид не в фирменном совсем. Заморачиваться было лень с ним.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 03.12.2008, 14:26   #4  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Да, жаль что с нами не поделились классами интерфейса и стилями. Было бы куда более удобно дорабатывать систему... Вы не пробовали отнаследоваться от каких-нибудь серверных библиотек, например Microsoft.Crm.Application.Pages.dll? Мне интересно, можно ли воспользоваться готовыми решениями или в них делается некая проверка на вшивость?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 03.12.2008, 17:24   #5  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Смотрится многообещающе, а продукты залить получится?
Можно взглянуть на сорцы? k.afendikov[at]gmail.com
И еще: с 3кой работает?
Старый 03.12.2008, 17:56   #6  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Работает только с 4-кой. Но ежели, взглянете на сорцы, которыя я облизательно выложу - то думаю, ничего нет стремного в том, чтобы переложить это дело на третьи веб-службы.
По-чеснаку: продукты заливать просто не приходилось, но логика вроде не отличает особо объекты друг от друга, просто тянет из метаданных параметры и соответствующим образом их обрабатывает.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 03.12.2008, 17:59   #7  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
2 Артем Enot Грунин: поделюсь, поделюсь, не переживайте. Тока там я классы и стили использую прям в коде aspx-странички. Реально говорю: такое наколенное что-то сделал, которому до нормального решения ещё плыть и плыть.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 03.12.2008, 21:02   #8  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от Likefire Посмотреть сообщение
2 Артем Enot Грунин: поделюсь, поделюсь, не переживайте.
Да я не про вас, я про Microsoft. Обидно, что с нами не поделились классами - компонентами интерфейса. Было бы очень удобно "без швов" встраивать свои приложения в систему.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 04.12.2008, 11:11   #9  
ShurikEv is offline
ShurikEv
CRM
 
213 / 28 (1) +++
Регистрация: 25.04.2006
Адрес: г. Новосибирск
Работу с Excel я иногда провожу с помощью OleDB. Во-1, не надо установки офиса. Во-2, глюков на больших объемах записей не замечено. Решается проблема с количеством строк и столбцов
__________________
MS CRM 3.0/4.0
Sharepoint 2003, MOSS 2007/2010
Старый 05.12.2008, 13:39   #10  
Age17 is offline
Age17
Участник
 
6 / 10 (1) +
Регистрация: 05.12.2008
Очень хочется взглянуть на исходники ибо мне тоже предстоит как то решать задачу импорта. Буду очень благодарен если пришлете на мыло.
Старый 10.12.2008, 12:20   #11  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Дело застопорилось как-то...
Старый 10.12.2008, 15:33   #12  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Сорри, народ... Нет времени всё...
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
За это сообщение автора поблагодарили: Bakai Madybaev (1).
Старый 10.12.2008, 17:27   #13  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Я в теме. Держите в курсе. Загрузка на работе, конечно, солидная, но такой тул сделать - великое дело.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 11.12.2008, 23:24   #14  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Там блин, не только тул, но и форма настроек. Да и ещё плюс масса всего уже прицеплено - время нужно, чтобы всё выцедить. Занимаюсь вопросом.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 12.12.2008, 17:19   #15  
Ti1 is offline
Ti1
Участник
 
29 / 11 (1) +
Регистрация: 12.12.2008
я тоже в теме, хочю исходники, автору респект!
Старый 12.12.2008, 17:32   #16  
mazzy is offline
mazzy
Участник
Аватар для mazzy
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
29,472 / 4494 (208) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Записей в блоге: 10
Цитата:
Сообщение от Ti1 Посмотреть сообщение
автору респект!
под каждым сообщением есть ссылка "Поблагодарить автора сообщения".

Поблагодарив вы получаете двойной эффект:
1. у автора действительно повышается респекты
2. поиск сможет отдавать предпочтения сообщениям, которые отблагодарили другие и сможет показывать полезные в начале списка.
__________________
полезное на axForum, github, vk, coub.
Старый 15.12.2008, 22:06   #17  
riv76 is offline
riv76
Участник
 
3 / 11 (1) +
Регистрация: 15.12.2008
Цитата:
Сообщение от Likefire Посмотреть сообщение
Предыстория:
потребовалось влить много данных, которые раньше систематизировались токмо в табличках Excel и немножко - Access. Собсна, добавил нужные сущности, обратился к процедуре импорта. Проковырялся со стандартной импортовой процедурой пару рабочих дней, так и не залив ни строчки. Почесал малось репу и за четыре с половиной дня сговнякал собственный стафф для импорта.

Имеем:
1. Такую себе aspx-страничку, которая нормально сайзится вширь и при открытии выглядит так как в скриншоте BaseForm/
2. Дальше начинаем действовать:
- browse'им файл для загрузки - обязательно файл Excel, форматов: *.xls; *.xlsx (можно буит и другие форматы попробовать как-нить);
- задаем название вкладки, с которой будет зачитана таблица с данными, хотя и не обязательно, если вкладка в Вашем файле всего одна;
- задаем количество заполненых строк. Здесь задавать нужно явно, поскольку, если использовать значения по умолчанию, либо же сначала вычислять количество заполненых строк - то алгоритм нереально тупит. Ну и потом: для пробы, и если источник очень большой - вы вполне можете попробовать, как загрузятся три-четыре строки, прежде чем загружать все строки;
- задаем количество столбцов. Тут как со строками: лучше задать один раз, чем полениться и ждать, пока тубые службы Excel обработают весь документ целиком;
После того, как ввели данные в поля - жмем кнопку "Загрузить", которая загружает в кэш ячейки таблицы Excel и сигнализирует об этом, формируя нередактируемый грид в ниэней части формы, а также добавляя имя загруженного файла в соответствующее поле, как на рисунке LoadedForm.
3. После того, как таблица загружена - необходимо выбрать, какую же сущность системы нужно заполнить записями. Для этого, выбираем сущность из выпадающего списка в поле "Сущность CRM" и жмем кнопку "Сопоставить". После нажатия кнопки "Сопоставить", система пытается сопоставить название колонок таблицы Excel, с именами (label) полей выбранной сущности. Если сопоставление происходит удачно, то в последствии вам придется меньше работать вручную, чтобы задать поля, в которые нужно загружать данные из столбцов. На рисунке MergingForm можно увидеть выпадающий список сущностей и поля для сопоставления полей.
4. Далее следует самая геморная часть работы: нужно сопоставить вручную поля сущности, с колонками таблицы, которые не были сопоставлены автоматически. Для этого, после выбора сущности и автосопоставления возникает ряд полей по числу, равный количеству столбцов загруженной таблицы. В каждом из полей, необходимо выбрать из выпадающего списка наименование атрибута сущности, в который будут записаны данные. Эту часть смотрите на картинке CompareForm.
5. Ну и после сопоставления колонок с атрибутами, можете нажимать кнопку "Загрузить в CRM" после нажатия которой элементы выбранной сущности появятся в системе.

Итоги:
- записи создаются, совершенно точно и весьма быстро. У меня была таблица из где-то тысячи строк, которая загрузилась за одно моргание глаза. Более точно производительность я не подсчитывал;
- алгоритм не предназначен (пока) для апдейта существующих записей, хотя дубликаты создавать не позволяет;
- весьма четко и внятно по названию, определяются значения lookup и picklist полей. То есть: у вас есть поле, которое связано отношением N:1 с элементом организации. Вы пишете в ячейке таблицы имя организации, загружаете, а остальное уже (поиск элемента организации по имени, подстановка данных в лукап-поле текущей сущности) форма делает сама. Не имеет значения, какой тип связанного лукап-поля,- форма сама определит этот тип, отыщет нужный элемент и выполнит связку. То же с пиклистами: если такое название значения пиклиста есть - оно будет подставлено. В этом смысле есть недостаток: названия в ячейках исходной таблицы и названия элементов связанных сущностей должны совпадать точно;
- к данной форме имеется форма настроек, в которой Вы указываете параметры: сервера CRM, организации, имени пользователя и пароль для входа на сервер CRM (под анонимом, к сожалению, войти невозможно);
- очевидно, что можно улучшить представления списков сущностей и полей в выпадающих списках, как минимум, установив сортировку по имени, а как максимум - отображая не системное имя, а принятое имя сущности/поля на локальном язые;
- очевидно, что нужно сделать возможность апдейта существующих записей из таблицы эксель;
- очевидно, что можно поиграться с алгоритмом сопоставления полей, а также связанных сущностей;
- весьма очевидно, что дизигн сделан на коленке и реально убог;
- ещё можно добавить возможность редактирования значений в уже загруженной таблице прямо в гриде.
Короче, стафф работает, но его ещё можно улучшить.
И галвное: кому нужны исходники - могу предоставить абсолютно безвозмездно (даже благодарить в форуме необязательно).
добрый день - нельзя ли получить Вашу утилитку? перемучался стандартными средствами и ничего не вышло...
За это сообщение автора поблагодарили: Likefire (1).
Старый 16.12.2008, 11:27   #18  
IgorF is offline
IgorF
Учаснег
Аватар для IgorF
Ex AND Project
Лучший по профессии 2011
Лучший по профессии 2009
 
307 / 37 (2) +++
Регистрация: 23.07.2007
Адрес: Поребрик сити
Цитата:
Сообщение от riv76 Посмотреть сообщение
добрый день - нельзя ли получить Вашу утилитку? перемучался стандартными средствами и ничего не вышло...
Грамотный вопрос, зачем парится словами : "А нельзя выложить классы и методы работы с данными")))
Сори за флуд
__________________
http://about.me/fedorovigor
Старый 16.12.2008, 12:17   #19  
Aleck is offline
Aleck
Участник
Ex AND Project
 
1,061 / 174 (8) ++++++
Регистрация: 07.12.2001
Адрес: СПб-Мск
А чем Data Migration Framework не устроил? зачем было огород городить?)
Старый 16.12.2008, 12:42   #20  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
2 Aleck: огород надо было городить, чтобы Ваше любопытство вызвать. Вы пробовали пользоваться стандартными утилитами импорта? Я имею в виду не тестовые и демо-импорты для учебных групп, а реальный импорт такой некислой таблицы Excel с данными в такую некислую сущность как организаии, например? Ну вот как-нибудь испробуйте! Только пупок не надорвите. А людей не обманешь тупыми увещеваниями: интерес к такой тулзине очень высокий, поэтому жалкие потуги выцедить улыбку, выглядят жалко.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24
Мир CRM: Улучшение Dynamics CRM 4.0 производительности и безопасности данных под SQL Server 2008 Blog bot Dynamics CRM: Blogs 0 03.02.2009 02:07
Microsoft Dynamics CRM Team Blog: List Web Part for Microsoft Dynamics CRM 4.0 Deployment Scenarios Blog bot Dynamics CRM: Blogs 0 30.01.2009 22:05
Microsoft Dynamics CRM Team Blog: Dynamic Export to Excel feature – How to protect data over the wire Blog bot Dynamics CRM: Blogs 0 27.01.2009 10:05
Импорт данных из Excel 2003 в CRM vitalyk Dynamics CRM: Функционал 1 16.10.2006 15:03

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:16.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.