Кастомизация
02
Июн
11

Выбор из списка существующих значений

TaggingField – клиентский JavaScript-код, который добавляет к любому стандартному тектовому полю список существующих значений для этого поля. Т.е. печатая текст Вы получите ниспадающий список, из которого можете, не набирая полный текст, выбрать значение, которое уже имеется в какой-либо записи того же типа.

Кроме того, набор значений списка может быть ограничен вторым текстовым или лукаповским полем. Например: допустим, Вы хотите, чтобы значения для поля Должность (jobtitles) в объекте Контакт выбирались только из тех контактов, которые входят в одну и ту же компанию, т.е. у них один и тот родительский клиент (бизнес-партнер). Тогда устанавливаете tagDependsOnFieldName в «parentcustomerid», а tagDependsOnFieldIsLookup в true (поскольку это лукап).

Инсталляция

Откройте событие OnLoad формы любого объекта CRM:

  • Вставьте JavaScript-код из файла;
  • Измените значение tagFieldName (примерно в центре кода) на имя поля, для которого (и из которых) будет формироваться список. А в tagEntityName укажите имя объекта в котором находится это поле;
  • Если Вы не хотите сделать список зависящим от другого поля, установите tagDependsOnFieldName в «» (пустая строка). В противном случае задайте имя поля;
    • Если Вы задаете поле-условие, удостоверьтесь, что для tagDependsOnFieldIsLookup установлено правильное значение. А именно: если в качестве tagDependsOnFieldName Вы указали лукаповское поле, то tagDependsOnFieldIsLookup = true, иначе false;
  • Конфигурация поведения:
    • tagMatchFromStart, если true, то поиск соответствия будет начинаться только с начала строки, если false, то будет искаться любое вхождение;
    • tagMinimumMatchChars, определяет минимальную длинну вводимого слова, которую необходимо ввести, прежде чем начнется поиск соответствия;
    • tagMaximumInList, определяет максимальное количество значений в списке выбора;
    • tagToken, определяет символ, который разделяет несколько значений в поле;
  • Сохраните, закройте и опубликуйте форму!

Для примера я разместил этот скрипт на форме контактов для поля Должность. Искать я буду значения во всех объектах поэтому у меня tagDependsOnFieldName = «». Далее я сохранил и опубликовал бъект Контакт. Создал несколько контактов, в каждом из которых заполнил поле должность (причес все диекторские 🙂 ). Теперь, создавая любой новый контакт, и введя всего пару строк в поле должность, я получаю список должностей начинающихся на эти пару букв. Все 🙂


Комментарии (11)
  • Игорь 02.06.2009

    прошу прощения, а какую функцию выполняет Ad Muncher helper script в коде?

  • slivka_83 02.06.2009

    Здравствуйте. Точно не знаю, но возможно обходит фильтры Ad Muncher’а 🙂

  • Евгений 02.06.2009

    Какая то проблема. если редактировать уже существующую запись то все пучком, а в новой еще не записанной не выпадает список и все…

  • Евгений 02.06.2009

    все понял свою проблему — if(crmForm.FormType==2) — разобрал на составляющие. и понял =).

  • Анатолий 02.06.2009

    По поводу вопроса от Евгения (предыдущего) а все таки как с новой записью, что то я ни как не могу разобраться. Помогите пожалуйста.

  • Евгений 02.06.2009

    надо бы вспомнить, но там вроде был момент по типу формы у новой формы тип не равен 2, попробуй с этим поиграться.

  • slivka_83 02.06.2009

    Как было уже сказано в коде есть такая строчка:
    crmForm.FormType==2
    2 тут означает Обновление. Т.е. скрипт будет работать только на форме обновления существующей записи 🙂

    http://msdn.microsoft.com/en-us/library/cc150873.aspx

  • Анатолий 02.06.2009

    Цифра 1 как написано в MDSN if(crmForm.FormType==2) исправила положение.
    Спасибо.

  • slivka_83 02.06.2009

    Если Вы просто заменили 2 на 1, то теперь у Вас этот скрипт не будет работать при обновлении записи 🙂 Так и нужно?

  • Анатолий 02.06.2009

    В принципе данный скрипт требуется в основном при создании новых записей, но вааще не плохо было бы если бы и так и так работало.
    P.S. Большое спасибо Вам за эти консультации.

  • slivka_83 02.06.2009

    Тогда замените

    if(crmForm.FormType==2)

    на

    if(crmForm.FormType==1 || crmForm.FormType==2)

    будет работать в обоих случаях 🙂

*

code