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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 18.02.2013, 11:39   #1  
Алексей Калистратов is offline
Алексей Калистратов
Участник
 
36 / 12 (1) ++
Регистрация: 02.05.2012
"Расширение модели метаданных"
Суть такая - можно ли получить на форме настройки поля сущности некоторый набор своих полей, которыми будущий администратор будет настраивать поведение этого поля?

Вот пара задач, для которых это нужно:

1. на форме много (больше 200) полей типа строка, к каждому из которых прилагается несколько типовых вариантов, которые пользователь видит по клику на поле и может выбрать один из низ, либо вписать свое значение в текстовое поле. Красивое (по моему ) решение вышло таким: в Description поля вбиваем эти подсказки, а скрипт на форме их все вытаскивает и через jquery.ui.autocomplete добавляет всплывающие подсказки ко всей этой туче полей.

Сваливать настройки в код не удобно по причине трудной навигации к ним - пользователю нужно будет знать имя поля, потом его найти в коде (а если добавить?), и не поломать остальной код рядом...

Грусть в том, что в UR12 это поле не может быть длиннее 217 символов (в UR11 лишь всплывало сообщение о превышении длины, но сохраняло длинные desciption'ы)

2. на форме куча слайдеров (input type=range), у которых у каждого свои подписи к значениям, свой min,max и цвета и т.п. - проблема та же. зашивать в код кучу этих настроек не есть гуд, и тут даже полем desciption не обойдешься - JSON пользователи не осилят, нужен интерфейс настройки

В качестве одного из решений (не очень хороших, т.к. приходится при создании поля менять два контекста), можно сделать рядом "Настроечную сущность", но как ее экземпляры привязать к полям целевой сущности?

Можно как-то плагин повесить "на добавление поля в сущность", который бы в настроечной сущности автоматически создавал пустую настройку с заполненным именем поля? В свежей версии Activity feeds ребята похоже как-то это делают - при добавлении сущности она сразу же появляется у них в настройках...
Старый 18.02.2013, 13:28   #2  
Алексей Калистратов is offline
Алексей Калистратов
Участник
 
36 / 12 (1) ++
Регистрация: 02.05.2012
Вот еще подумалось - в принципе, хватит всего двух вещей:

1. Длинного поля description (ну хотя бы десяток килобайт, для ну очень сложных настроек)
2. Возможности прикрутить свой яваскрипт на форму настройки поля, который уже наворотит нужного интерфейса, а все данные свернет в json и в description положит. Это можно как нибудь без ансаппорта сделать?
Старый 18.02.2013, 13:54   #3  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Мне кажется, что решение через "Настроечную сущность" не такое плохое.

Ее экземпляры привязывать к полям можно по scheme name – два текстовых поля с именами сущности и ее поля.

Создавать экземпляр с пустой настройкой по умолчанию считаю не целесообразным, так как не для всех полей она нужна. Для редактирования этой сущности можно создать свой интерфейс, который может запускаться из риббона форм сущностей, например. Там считать метаданные сущности и отобразить список всех полей, для которых возможна настройка. При выборе поля для редактирования можно проверить создана ли настройка для него и если нет, то создать перед тем как открыть ее на редактирование.

Еще плюс в этом решении, что юзерам можно дать право на редактировании только этой сущности, не давая прав на кастомизаци CRM. Считаю, что не стоит давать права на кастомизацию CRM пользователям, которые не совсем понимают что делают.
Старый 18.02.2013, 17:08   #4  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Мы делаем следующее:
1 создаем сущность. настройки. для хранения настроек системы.
Неважно для чего они применяются.
Пример. я хочу, чтобы одно из полей было скрыто или отображалось.
Завожу настройку с названием определенным, на форме при загрузке получаю значения но этому заранее мне известному имени и в зависимости от значениявыставляю отображение.

Для вашей задачи подойдет следующее решение.
название настроек состоит примерно так. [EntityName].AutoComplete.[fieldName]
В самой настройке хранится значение.
Настроек с таким именем может быть несколько и в каждой вы пропишете свое значение.
Теперь код на форме.
НА загрузку добавьте метод получения настроек. Имя настройки должно начинаться с
[EntityName].AutoComplete таким образом для каждой сущности настройки будут свои.

Далее откусываете префикс [EntityName].AutoComplete и получаете для какого поля Ваша настройка. пишите ее в jquery и все работает.

Пример сущность настроек из 2х полей
Name: Lead.AutoComplete.name
Value: name 1

Name: Lead.AutoComplete.name
Value: name 2

Name: Lead.Contact.name
Value: Ivan
__________________
Мой блог https://procrm.tv

Последний раз редактировалось g.Naukovych; 18.02.2013 в 17:10.
Старый 18.02.2013, 17:30   #5  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
Завожу настройку с названием определенным, на форме при загрузке получаю значения но этому заранее мне известному имени и в зависимости от значениявыставляю отображение.
А "моргание" поле не напрягает?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 18.02.2013, 17:45   #6  
Артем 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
Я думаю, для решения вашей задачи не нужно привлекать метаданные. В вашем случае достаточно веб ресурса с настройками. Например, он может быть js или xml файлом. Где в каком-либо структурированном виде хранятся настройки для каждого поля.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 18.02.2013, 18:17   #7  
Алексей Калистратов is offline
Алексей Калистратов
Участник
 
36 / 12 (1) ++
Регистрация: 02.05.2012
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Я думаю, для решения вашей задачи не нужно привлекать метаданные. В вашем случае достаточно веб ресурса с настройками.
Веб-ресурс ведь нельзя показать на форме настройки поля?

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

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

Вот, сделал proof-of-concept варианта с хранением json-a в поле description (оказывается его размер залочен на клиенте, а в базе оно большое и на сервере его не режут). Ансаппорт конечно.

Мне не удалось найти как штатно используется поле description в crm, подскажите, если кто знает?
Миниатюры
Нажмите на изображение для увеличения
Название: crm_attribute_custom_type.PNG
Просмотров: 318
Размер:	30.8 Кб
ID:	8066  
Старый 19.02.2013, 11:18   #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
Алексей, вы меняете не метаданные поля, а настройки его отображения. Система допускает расширение формы за счет веб ресурсов. Вы можете расширять конструктор формы своими контролами, можете даже добавить свои кнопки на риббон редактора формы, например, сделать там кнопку настройки свойств выбранного веб ресурса или чего-то подобного. Если вам действительно, не жить не быть нужен продвинутый редатор ваших доработок, то я бы шел в этом направлении.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 19.02.2013, 21:13   #9  
Алексей Калистратов is offline
Алексей Калистратов
Участник
 
36 / 12 (1) ++
Регистрация: 02.05.2012
Согласен, этим решением с json'ом в description'e лишь меняю настройку отображения поля типа "Число", а хотелось бы по человечески расширить модель метаданных собственным типом поля, с собственным кусочком админки и пользовательским ui (и с более сложным хранением метаданных, не только сериализацией в текстовое поле)...

Я недавно в разработке MS CRM и до конца еще не понял, то ли любить его, за то, что на каждое "гвоздями приколоченное" архитектурное решение майкрсофта обязательно находится трюк с яваскриптом или ансаппортом, то ли ненавидеть, за эти же самые гвоздями приколоченные и штатно нерасширяемые возможности
Старый 20.02.2013, 10:19   #10  
Артем 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
Старый 27.02.2013, 09:10   #11  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Ненавидеть. Люто. И написать свою систему с блекджеком и шлюхами.

Вот тут двух мнений будет мало. Я, например, очень люблю MS CRM после общения с такими образцами как 1С и Navision.
А по поводу настроек, если конечно речь идет только о работе клиентской части, я бы посоветовал обратить свой взор в сторону JScript-оператора eval. Уж не буду напрягать и загружать примерами (для eval таковых на просторах сети немало), но это реально то, что доставляет при решении разных нестандартных задач.
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
За это сообщение автора поблагодарили: Алексей Калистратов (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Вопрос по действию "эл.почта" в рамках "обращения" Raiden Dynamics CRM: Функционал 0 22.12.2010 12:30
Представление в "действие" и "журнал" bear1 Dynamics CRM: Функционал 1 29.06.2010 15:33
Как удалить рабочую группу или изменить у неё подразделение guenberg Dynamics CRM: Администрирование 11 06.06.2010 22:47
Microsoft Dynamics CRM Team Blog: Lost: Beware of the "Others" Blog bot Dynamics CRM: Blogs 0 01.06.2010 21:05

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

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

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