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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.10.2008, 12:17   #1  
igla is offline
igla
Участник
 
4 / 10 (1) +
Регистрация: 22.10.2008
Адрес: Москва
О динамических отображаемых именах сущностей
Приветствую!

Вопросик по CRM 4.0 (хотя, думаю, он актуален и для предыдущих версий)...

Вот во всех сущностях есть мегаосновной атрибут с семантикой отображаемого имени. Его значение отображается в первую очередь в заголовке окна свойств данного объекта, ну и вообще во многих местах. Это понятно.

Теперь допустим, что нужно динамически формировать отображаемое имя объекта на основании значений нескольких его атрибутов (типа склеить ФИО из фамилии, имени и отчества человека). ОК, это тоже понятно - пишем javascript на событии OnChange каждого из полей, являющихся составными частями отображаемого имени, который склеивает их в одно большое ФИО.

А теперь, собственно, вопрос. Допустим, что нужно динамически формировать отображаемое имя объекта на основании значений как его атрибутов, так и атрибутов связанных с ним объектов (а возможно - и связанных со связанными). Причем значения этих атрибутов могут меняться в течении их жизни в системе (например, смена фамилии).

Как это реализовать?

Вариант 1 - написать огромное количество плагинов на Create, Update и Delete всех сущностей, от атрибутов которых зависит отображаемое имя данной сущности, дабы в них перегенерировать отображаемое имя.
Минус - неоправданно (на мой взгляд) большой объем кода, чуть ли ни экспоненциально растущий при росте количества связанных сущностей.

Вариант 2 - CRM не предназначен для решения подобных задач, нужно придумать другую модель классов, в которой этот вопрос не встанет.
Минус - не придумывается

Help!
Старый 22.10.2008, 14:37   #2  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Вообще-то, задача сама по себе - бред, и идет вразрез с реляционной моделью данных.
Но все равно могу предложить 3-й вариант:
Втыкаете на CRM-сервере самописную Windows-службу, которая с некой периодичностью (раз в день, час, минуту) пробегается по Вашим объектам и генерит (при необходимости) новое отображаемое имя.
Плюсы - весь код сосредоточен в одном месте.
Минусы - при большом количестве объектов длительное время обработки; какое-то время имя может быть неактуальным.
Старый 22.10.2008, 14:52   #3  
igla is offline
igla
Участник
 
4 / 10 (1) +
Регистрация: 22.10.2008
Адрес: Москва
Цитата:
Сообщение от Гуревич Денис Посмотреть сообщение
Вообще-то, задача сама по себе - бред, и идет вразрез с реляционной моделью данных.
Но все равно могу предложить 3-й вариант:
Втыкаете на CRM-сервере самописную Windows-службу, которая с некой периодичностью (раз в день, час, минуту) пробегается по Вашим объектам и генерит (при необходимости) новое отображаемое имя.
Плюсы - весь код сосредоточен в одном месте.
Минусы - при большом количестве объектов длительное время обработки; какое-то время имя может быть неактуальным.
Спасибо за ответ. Вариант, увы, не подходит именно из-за потенциальной временной неактуальности данных.

По поводу бреда и реляционной модели - я, видимо, не очень хорошо описал задачу...

Вот условный пример.

Есть сущности Личность (атрибуты Фамилия, Имя, Отчество и вычислимый ФИО, который является отображаемым именем) и, скажем, Сотрудник (связь с Личностью N:1, атрибуты Статус и Должность). Какое отображаемое имя выглядит логичным для объекта сущности Сотрудник? Наверное что-то типа "<Должность> <ФИО связанной Личности> (<Статус>)", т.е. "слесарь Иванов Иван Иванович (уволен)".

Вполне укладывается и в реляционную модель, и в реальную жизнь, не правда ли?
Старый 22.10.2008, 15:49   #4  
Гуревич Денис is offline
Гуревич Денис
Участник
Лучший по профессии 2009
 
228 / 67 (3) ++++
Регистрация: 04.08.2008
Адрес: Москва
Неправда!
В реляционной модели полностью исключается дублирование данных.
Дублирование создает потенциальные возможности рассогласования данных.

В данном случае гораздо правильнее создать собственное приложение, отображающее связанные данные и встроить его в CRM.
Старый 22.10.2008, 16:11   #5  
igla is offline
igla
Участник
 
4 / 10 (1) +
Регистрация: 22.10.2008
Адрес: Москва
Цитата:
Сообщение от Гуревич Денис Посмотреть сообщение
Неправда!
В реляционной модели полностью исключается дублирование данных.
...
Вооот, дык и я о том же - отображаемое имя объекта Сотрудник должно (по уму) быть вычислимым в момент обращения, а не храниться где-то на постоянной основе.
Свое приложение, безусловно, даст такую возможность.


Я, собственно, хотел получить подтверждение тому, что в моем условном примере:
1) статическое отображаемое имя, которое приводит к сложносинхронизируемым избыточным данным, использовать нерационально;
2) динамическое (вычислимое в момент обращения) отображаемое имя средствами CRM сделать невозможно.

Все же если вдруг кто-нибудь решал сходную задачу - с удовольствием почитаю, каким именно образом...
Старый 22.10.2008, 17:40   #6  
maclai is offline
maclai
Участник
 
14 / 11 (1) +
Регистрация: 09.10.2008
В 1с:8.0 подобная задача решается через вычисение значений полей из даных регистров с опорой на перечисления. Примером может послужить "вычисляемое" поле "адрес" в справочнике контрагентов. Посмотрите, однако сам я согласен с Денисом - СРМ не ЕРП, хлопотно это.
Старый 23.10.2008, 08:18   #7  
sergeyjb is offline
sergeyjb
Участник
Аватар для sergeyjb
 
68 / 12 (1) ++
Регистрация: 01.10.2008
Я не знаю как в CRM, но если касаться реляционной модели:

В вашей модели Сотрудник-Личность (N:1), в отображаемое имя сущности Сотрудника не корректно включать атрибут ФИО, т.к. у сущности Сотрудник нет такого атрибута. В вашей модели сущность Сотрудник это не более чем обезличеная должность со статусом и ВСЕ!

А та сущность отображаемое имя который вы хотите вывсести как "слесарь Иванов Иван Иванович (уволен)" это уже новая сущность над вашими двумя и в реляционной модели всегда реализовывалась в виде вьюшки. Делайте ее на базе обеих сущностей и вставляйте вычисляемы поля. И все!

В вашей модели будет избыточность по должностям. В идеале вам надо разбить сущность Сотрудник на 2: Должность и Сотрудник и итог будет таким:

Должность:
id_dolg
name_dolg

Сотрудник:
id_dolg
id_lich
status

Личность:
id_lich
fam
imya
otch

И связать их так:
Должность (1:N) Сотрудник (N:1) Личность

Над этими сущностями вьюшкой можно построить сущность которую использовать для бизнес-логики уже, например:

Штатная еденица:
Должность.name_dolg
Сотрудник.status
Личность.fio

И вот к этой сущности относить отображаемое имя "слесарь Иванов Иван Иванович (уволен)" будет корректно!

Это с точки зрения реляционной модели в чистом виде.
Как это все реализовать в CRM - думайте, спрашивайте тут у знающих...
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
Старый 23.10.2008, 14:32   #8  
igla is offline
igla
Участник
 
4 / 10 (1) +
Регистрация: 22.10.2008
Адрес: Москва
Спасибо за ответы.

sergeyjb, Вы все логично расписали. Если бы я решал эту задачу на ADO.NET или чем-то подобном, то пошел бы сходным путем самостоятельно и вряд ли стал бы беспокоить участников этого или какого-либо другого форума
Проблема в том, что в CRM нет ни вьюх, ни вычислимых полей, ни их аналогов...

Видимо, придется вовсе отказаться от сложного построения отображаемых имен.
Старый 23.10.2008, 15:01   #9  
sergeyjb is offline
sergeyjb
Участник
Аватар для sergeyjb
 
68 / 12 (1) ++
Регистрация: 01.10.2008
Самое обидное что СРМ то как раз и стоит всеми ногами на этих вьюшках и прочей реляционной братии.
Да вот только трогать их не моги а работай через интерфейс.
Может конечно и правильно - чтобы методологию не ломали и лишних сущностей разного уровня не создавали...
__________________
Сергей Осипов, MCTS:SQL Server 2005, ООО "Программные технологии", Самара
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Нумерация сущностей Казарин Александр Dynamics CRM: Функционал 3 19.03.2009 17:36
Изменение форм сущностей (панели навигации) W@ndERR ® Dynamics CRM: Разработка 19 16.10.2008 15:01
Динамическое создание сущностей в CRM 4.0 ZooY Dynamics CRM: Разработка 1 01.09.2008 23:25
Доступ к полям сущностей Maxoon Dynamics CRM: Функционал 2 11.01.2008 15:15
Как связать две роли отношений сущностей? Alexey-IT Dynamics CRM: Разработка 4 12.11.2007 08:08

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 10:36.