AXForum  
Go Back   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Forgotten Your Password?
Register Forum Rules FAQ Members List Today's Posts Search

 
 
Thread Tools Search this Thread Display Modes
Old 03.12.2008, 13:25   #1  
Likefire is offline
Likefire
Заноза в заднице
Likefire's Avatar
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Join Date: 22.10.2007
Location: Москва
Blog Entries: 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 (под анонимом, к сожалению, войти невозможно);
- очевидно, что можно улучшить представления списков сущностей и полей в выпадающих списках, как минимум, установив сортировку по имени, а как максимум - отображая не системное имя, а принятое имя сущности/поля на локальном язые;
- очевидно, что нужно сделать возможность апдейта существующих записей из таблицы эксель;
- очевидно, что можно поиграться с алгоритмом сопоставления полей, а также связанных сущностей;
- весьма очевидно, что дизигн сделан на коленке и реально убог;
- ещё можно добавить возможность редактирования значений в уже загруженной таблице прямо в гриде.
Короче, стафф работает, но его ещё можно улучшить.
И галвное: кому нужны исходники - могу предоставить абсолютно безвозмездно (даже благодарить в форуме необязательно).
Attached Thumbnails
Click image for larger version

Name:	BaseForm.JPG
Views:	681
Size:	77.9 KB
ID:	4018   Click image for larger version

Name:	LoadedForm.JPG
Views:	670
Size:	80.0 KB
ID:	4019  

Click image for larger version

Name:	MergingForm.JPG
Views:	543
Size:	80.8 KB
ID:	4020   Click image for larger version

Name:	CompareForm.JPG
Views:	688
Size:	69.8 KB
ID:	4021  

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

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

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

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

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

Поблагодарив вы получаете двойной эффект:
1. у автора действительно повышается респекты
2. поиск сможет отдавать предпочтения сообщениям, которые отблагодарили другие и сможет показывать полезные в начале списка.
__________________
полезное на axForum, github, vk, coub.
Old 15.12.2008, 22:06   #17  
riv76 is offline
riv76
Участник
 
3 / 11 (1) +
Join Date: 15.12.2008
Quote:
Originally Posted by Likefire View Post
Предыстория:
потребовалось влить много данных, которые раньше систематизировались токмо в табличках 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 (под анонимом, к сожалению, войти невозможно);
- очевидно, что можно улучшить представления списков сущностей и полей в выпадающих списках, как минимум, установив сортировку по имени, а как максимум - отображая не системное имя, а принятое имя сущности/поля на локальном язые;
- очевидно, что нужно сделать возможность апдейта существующих записей из таблицы эксель;
- очевидно, что можно поиграться с алгоритмом сопоставления полей, а также связанных сущностей;
- весьма очевидно, что дизигн сделан на коленке и реально убог;
- ещё можно добавить возможность редактирования значений в уже загруженной таблице прямо в гриде.
Короче, стафф работает, но его ещё можно улучшить.
И галвное: кому нужны исходники - могу предоставить абсолютно безвозмездно (даже благодарить в форуме необязательно).
добрый день - нельзя ли получить Вашу утилитку? перемучался стандартными средствами и ничего не вышло...
This post has been rated by: Likefire (1).
Old 16.12.2008, 11:27   #18  
IgorF is offline
IgorF
Учаснег
IgorF's Avatar
Ex AND Project
Лучший по профессии 2011
Лучший по профессии 2009
 
307 / 37 (2) +++
Join Date: 23.07.2007
Location: Поребрик сити
Quote:
Originally Posted by riv76 View Post
добрый день - нельзя ли получить Вашу утилитку? перемучался стандартными средствами и ничего не вышло...
Грамотный вопрос, зачем парится словами : "А нельзя выложить классы и методы работы с данными")))
Сори за флуд
__________________
http://about.me/fedorovigor
Old 16.12.2008, 12:17   #19  
Aleck is offline
Aleck
Участник
Ex AND Project
 
1,061 / 174 (8) ++++++
Join Date: 07.12.2001
Location: СПб-Мск
А чем Data Migration Framework не устроил? зачем было огород городить?)
Old 16.12.2008, 12:42   #20  
Likefire is offline
Likefire
Заноза в заднице
Likefire's Avatar
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Join Date: 22.10.2007
Location: Москва
Blog Entries: 1
2 Aleck: огород надо было городить, чтобы Ваше любопытство вызвать. Вы пробовали пользоваться стандартными утилитами импорта? Я имею в виду не тестовые и демо-импорты для учебных групп, а реальный импорт такой некислой таблицы Excel с данными в такую некислую сущность как организаии, например? Ну вот как-нибудь испробуйте! Только пупок не надорвите. А людей не обманешь тупыми увещеваниями: интерес к такой тулзине очень высокий, поэтому жалкие потуги выцедить улыбку, выглядят жалко.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
 

Similar Threads
Thread Thread Starter Forum Replies Last Post
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

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Рейтинг@Mail.ru
All times are GMT +3. The time now is 22:38.
Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Contacts E-mail, Advertising.