|
![]() |
#1 |
Участник
|
Цитата:
Сообщение от Гуревич Денис
![]() Вообще-то, задача сама по себе - бред, и идет вразрез с реляционной моделью данных.
Но все равно могу предложить 3-й вариант: Втыкаете на CRM-сервере самописную Windows-службу, которая с некой периодичностью (раз в день, час, минуту) пробегается по Вашим объектам и генерит (при необходимости) новое отображаемое имя. Плюсы - весь код сосредоточен в одном месте. Минусы - при большом количестве объектов длительное время обработки; какое-то время имя может быть неактуальным. По поводу бреда и реляционной модели - я, видимо, не очень хорошо описал задачу... Вот условный пример. Есть сущности Личность (атрибуты Фамилия, Имя, Отчество и вычислимый ФИО, который является отображаемым именем) и, скажем, Сотрудник (связь с Личностью N:1, атрибуты Статус и Должность). Какое отображаемое имя выглядит логичным для объекта сущности Сотрудник? Наверное что-то типа "<Должность> <ФИО связанной Личности> (<Статус>)", т.е. "слесарь Иванов Иван Иванович (уволен)". Вполне укладывается и в реляционную модель, и в реальную жизнь, не правда ли? |
|
![]() |
#2 |
Участник
|
Неправда!
В реляционной модели полностью исключается дублирование данных. Дублирование создает потенциальные возможности рассогласования данных. В данном случае гораздо правильнее создать собственное приложение, отображающее связанные данные и встроить его в CRM. |
|
![]() |
#3 |
Участник
|
Цитата:
Свое приложение, безусловно, даст такую возможность. Я, собственно, хотел получить подтверждение тому, что в моем условном примере: 1) статическое отображаемое имя, которое приводит к сложносинхронизируемым избыточным данным, использовать нерационально; 2) динамическое (вычислимое в момент обращения) отображаемое имя средствами CRM сделать невозможно. Все же если вдруг кто-нибудь решал сходную задачу - с удовольствием почитаю, каким именно образом... |
|
![]() |
#4 |
Участник
|
В 1с:8.0 подобная задача решается через вычисение значений полей из даных регистров с опорой на перечисления. Примером может послужить "вычисляемое" поле "адрес" в справочнике контрагентов. Посмотрите, однако сам я согласен с Денисом - СРМ не ЕРП, хлопотно это.
|
|
![]() |
#5 |
Участник
|
Я не знаю как в 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, ООО "Программные технологии", Самара |
|