08.11.2010, 18:27 | #1 |
Участник
|
Как формируется uniqieidentifier в базе MS CRM 4.0
Здравствуйте
Я пишу пользовательское приложение и хочу скриптом добавлять данные в базу MS CRM а не через карточки - т.к. так дольше получается. И в связи с этим вопрос. Во всех сущностях есть ключевое поле (Primary Key) оно во всех таблицах имеет следующий вид: AAAAA000-AA0A-AA00-AA00-000000AA000A разумеется вместо символов "А", и "0" - могут быть либо "латинские буквы" и "символы", соответственно. Совокупная длина символов - 32 - каким образом они получают такую последовательность символов? генерируют её сами или используют какой то алгоритм шифрования аля "MD5" и другое? Подскажите пожалуйста. Заранее спасибо! |
|
08.11.2010, 18:54 | #2 |
Консультант-джедай
|
Для этого используется фнкция SQL Server'а, напрмер http://www.dailycoding.com/Posts/gen...ql_server.aspx
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
08.11.2010, 18:57 | #3 |
Участник
|
Спасибо большое!!!
А подскажите, я написал кастомную страницу для CRM 4.0, но её может открыть любой желающий без авторизации доменной которая у меня в CRM есть. Т.е. чтобы войти в CRM у меня система спрашивает пароль и в случае успеха пускает в систему. Как мне определить ID пользователя который открывает страницу и если он не авторизован запросить авторизацию?? Заранее спасибо. Кастомная страница написана на PHP, ссылка и переход на кастомную страницу происходит из CRM 4.0 - в Sitemap.xml - я прописал нужную мне ссылку в аттрибуте Url= |
|
09.11.2010, 13:00 | #4 |
Moderator
|
Прочитав все вышесказанное, могу посоветовать вам только одно: ЧИТАЙТЕ SDK!!!
Вы, часом, не SQL инсерты на php писать собрались? А вы в курсе, кстати, что часть полей может в отдельной таблице храниться (таблице расширения и таблицах адреса)? Про систему безопасности читали? И, кстати, для Сливки будет сюрпризом, что CRM генерирует идентификаторы не через NEWID()! Если вы приглядитесь, то увидите, что для вновь создаваемых записей идентификаторы выдаются последовательно. Про авторизацию на php вопрос вообще убил! КАК НАДО: пишем страницу на ASPX, кладем ее в каталог ISV. В этой странице прокидываем ссылку на веб референс или используем сборки SDK и работаем с системой через API а не через базу! Да, чуть медленнее, но зато правильно и быстро с точки зрения разработки!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: a33ik (2). |
09.11.2010, 15:52 | #5 |
Участник
|
Именно SQL-insert и update-ы.
Т.к. у меня стоит очень сложная задача реализовать приложение которое средствами API -CRM-а в принципе не реализовать, вторая сложность это незнание языка .NET, но есть знания в PHP. + сроки сжатые.. на PHP я успею реализовать этот функционал до Нового года, на .NET 1-2 года учиться и потом ещё полгода делать приложение - оно будет уже не актуально. Я тут летом спрашивал совета где можно найти тренера чтобы научил программить - так и не подсказали. Книги прочитал - ни фига не понятно. С чего начать тоже не понимаю. В данной ситуации я лишь пытаюсь найти решение проблемы. Оно есть разработка на PHP + MSSQL, но не врублю как сделать авторизацию доменую. Понимание есть. нужно написать .APSX страницу в неё вложить фрейм - IFRAME а туда в SRC пусть к моей странице на PHP. Тогда страница ASPx будет запрашивать авторизацию. Но вот как со страницы APSX в мой PHP скрипт передать GUID залогинненого пользователя вот проблема. Вторая про генерацию uniqueidentifier, можно генерить уникальные ID-шники записей (предварительно проверяя по базе нет ли уже таких) например MD5 шифрованием (текущей даты и времени (в миллисекундах) + IP адрес клиента) затем разбить на 5 групп через дефис и делать инсерты. Так ведь будет работать система CRM? если подобные записи появятся в системе? |
|
09.11.2010, 17:08 | #6 |
Moderator
|
Цитата:
Теперь по поводу авторизации... Вы, я так понимаю, смогли каким-то образом запустить php машину под IIS? Тогда где-то в ее мануале вы сможете выяснить как настроить NTLM авторизацию для своего приложения, и как, соответственно, получить логин открывшего сессию пользователя. Это не форум php программистов, это форум по линейке MS Dynamics, так что раз ответ до сих пор не последовал, то дальше ждать его бессмысленно. Как только получите логин, добро пожаловать со своими селектами в таблицу SystemUsers, где вы без труда по логину узнаете GUID вашего клиента. p.s. Вы думали о том, чтобы доверить разработку третьей стороне?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: Dicora (1). |
09.11.2010, 17:32 | #7 |
Участник
|
Спасибо большое что подсказали направление... почитаю про эту авторизацию.
Я просто думал что есть способ узнать сессию пользователя запустившего браузер Explorer, я думал что CRM в html код родительского фрейма добавляет в какой нибудь скрытый INPUT type=hidden Значение залогинившегося юзера. Думал сначала через JS его из род фрейма доставать. Но не получилось. Да, мне удалось настроить PHP машину на IIS 6.0 на винде. А поповоду Машины CRM API я не сомневаюсь что она справится, врядли сейчас на этом этапе удастся справиться мне с машиной CRM API и её языком ASPx, я его если честно вообще не знаю. Да я уже понял насчет полей ExtensionBase и т.д. Я это конечно же буду учитывать при написании SQL запросов (insert и update). у меня по сути было 2 сложности: Это узнать текущую сессию чтобы моё приложение корректно работало, т.к. для разных категорий пользователей будет разный функционал. и то как генерируются уникальные идентификаторы. |
|
09.11.2010, 17:46 | #8 |
Чайный пьяница
|
Простите, но это - бред.
Простите, но опять бред. При знании одного языка (заявлен PHP) выучить другой язык - это дело месяца. Правда сужу по себе - с Object Pascal + Delphi я переучился на .Net + Visual Studio 2003 за месяц, может даже наверное меньше. Цитата:
Если не трудно - приведите, пожалуйста, примеры - книга, статья или страница, что именно непонятно. А в данном случае всё зависит от задачи. Что необходимо сделать - с того и надо начинать. Цитата:
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.11.2010, 18:07 | #9 |
Участник
|
По поводу .NET мне непонятны АЗЫ и логика самого языка соответственно всё остальное тоже. Без понимания как устроен алфавит я физически не могу заставить голову понимать этот язык.
ВО-первых, Как определять какие Name-спейсы подключать когда пишешь страницу на ASPx, и где искать сборки этих нейм-спейсов. Вот допустим мне нужно написать страницу которая будет из БД вытаскивать все интересы и разработать свой функционал создания интересов - какой нейм спейс нужно подключить? 1 или 5 штук сразу? нигде это не объясняется. Далее как работают эти <script runat=server></script> что такое runat, почему у стандартных тегов типа input появляются левые и неизвестные самому HTML-у аттрибуты. Как создать форму так, чтобы при нажатии на Submit в скрипте я мог обработать данные отправленной формы. На PHP если поля формы называются так: <input name=login> <input name=password> то и после отправки они будут называться также $login $password В книге пол книги самой рассказывается о каких то логиках, схемы, болтологии и никакой практической информации - сразу начинается разработка сложных вещей и я ничего не понимаю В магазине (4 магазина в СПБ обошел) продавцы ничего не соображают. я спрашиваю я не знаю .NET, а мне нужно научиться писать приложения для Microsoft Dynamics CRM 4.0, а они а что такое CRM? как так можно? Если никто не может посоветовать книг по CRM как ему научиться? Те книги что Вы мне когда то рекомендовали на английском сайте - они все на англоязычные я только русский знаю. Неужели нет книг по разработке приложений на CRM 4.0 на ASPX в русской редакции?? У меня вопросов миллионы но к сожалению сам я ответы на них найти не могу. Понимал бы я основы языка .net с большим удовольствием писал бы приложения через API CRM-а. Книга которую я читал называется так: Дино Эспозито Мастер класс Microsoft ASP.NET 2.0 Базовый курс Русская редакция, издательство "Питер", 2007 Последний раз редактировалось a33ik; 09.11.2010 в 20:21. |
|
09.11.2010, 20:32 | #10 |
Чайный пьяница
|
Подучите для начала C#. Примеров, статей и форумов - море. Просто попробуйте поисковики. Потом уже ASP.Net. И только потом пробуйте интегрировать это всё в CRM.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
09.11.2010, 22:36 | #11 |
Moderator
|
Могу добавить лишь слово "печально". Прошу, поймите, мы не издеваемся стараясь казаться крутыми, вовсе нет. Просто со стороны ситуация принимает оборот: "не не нравится этот мир, дайте мне другой глобус".
В CRM я пришел из "анти-microsoft" мира: до этого я работал в компании, которая разрабатывала корпоративные системы на SUN Java + TopLink на СУБД Oracle. Сроки были сжатыми, так что приблизительно за три месяца мне пришлось освоить CRM, С#, MS SQL и SSRS. Это было тяжело, но это пришлось делать, так как весь мой прошлый опыт не был пригоден для работы с этим продуктом! Меня до сих пор тошнит и от C# и MS SQL и от Microsoft в целом, но я пытаюсь продублировать CRM API через абстракции Oracle TopLink, чтобы продолжать писать на Java! В отделе я был один и никто не разжевывал мне про то что такое namespace - мне пришлось самому построить нужные аналогии. И уж простите великодушно, но весь ИТ-мир говорит по английски, так что если вы все еще не в состоянии читать на этом языке техническую литературу (Шекспира в оригинале никто не заставляет!), то у меня для вас нет другого глобуса. Обратитесь к профессионалу и не мучайте систему.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
10.11.2010, 07:09 | #12 |
Участник
|
Цитата:
Причем здесь последовательность? Вообще то есть WinAPI, к которому обращаются как System.Guid.NewGuid (который скорее всего использует CRM) так и newid (из TSQL). К автору: - помимо guid-ов есть и временные поля, которые относятся к вашему локальному часовому поясу, в таблицах же оно хранится в UTC, то есть по Гринвичу. Для перевода нужно использовать функции SQL (dbo.fn_LocalTimeToUTC и обратную ей). - для начала хорошо подходят книжки от Microsoft Press (Разработка клиентских web-приложений ASP.NET например) Последний раз редактировалось RegAndrew; 10.11.2010 в 07:31. |
|
10.11.2010, 12:44 | #13 |
Консультант-джедай
|
-> Dicora
Если хорошо знаете PHP то можете попробовать общаться с CRM посредством SOAP запросов: http://www.ifc0nfig.com/working-with...hp-and-nusoap/ http://www.zenithies.org/articles/1/...ntication.html (в инете можно еще примеры найти) Для определения текущего юзвера используется запрос WhoAmIRequest http://msdn.microsoft.com/en-us/library/bb890244.aspx (правда неуверен, что он корректно отработает из PHP, но вы всегда можете отправить его в CRM сервис (из CRM) с помощью JS и полученный ответ передать в дочерний iFrame посредством строки URL). З.Ы. неплохой курс по С# и ASP.NET http://www.intuit.ru/department/internet/aspnetvsnet/1/ И еще можете покапаться в этом примере http://phpmscrm.codeplex.com/
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога Последний раз редактировалось slivka_83; 10.11.2010 в 12:52. |
|
10.11.2010, 22:17 | #14 |
Moderator
|
Цитата:
Остальные советы прокомментирую неизменно: не дублируйте системные алгоритмы, просто используйте их!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
|