AXForum  
Вернуться   AXForum > Блоги > CRM, SharePoint и Черная Магия
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

Добро пожаловать в мой блог! Изначально он не задумывался как блог CRM разработчика, но жизнь сама внесла нужные коррективы. Тут я публикою все свои наблюдения относительно обозначенных в заголовке систем. Если Вы найдете в нем что-то интересное для Вас, как для заказчика, то буду рад сотрудничать с Вами! В моей компетенции 100% задач по MS CRM 3.0/4.0/2011:
  • Консалтинг
  • Проектирование
  • Разработка
  • Обучение


MVP 2010, 2011
Рейтинг: 5.00. Голосов: 2.

Передача параметров в форму

Запись от Артем Enot Грунин размещена 09.09.2009 в 15:42
Обновил(-а) Артем Enot Грунин 14.09.2009 в 12:36
Теги java script

В среднем раз в месяц на форуме задается вопрос из серии: "Мне нужно, чтобы по нажатии кнопки открывалось окно заполненное так-то". Вариантов решения предлагается масса, от подобного до "пишите свою aspx страницу" (почему не php, опять же?). Между тем, ларчик открывается довольно просто. Совсем недавно я заметил, что обновился раздел SDK URL Addressable Forms and Views. Приятным нововведением версии 4.0 является возможность передавать параметры в форму создания записи через строку запроса. Например так:
http://crm:5555/sfa/conts/edit.aspx?firstname=Иван
К сожалению, для текущей версии CRM, данный подход не работает с формами действий. Все параметры будут просто игнорироваться.
Формат передачи параметра зависит от типа передаваемого поля. Так, например, для полей Lookup, помимо идентификатора записи потребуется передавать дополнительный текстовый параметр - строку для отображения поля лукапа, а для поля типа Customer еще и typecode сущности. Словом, читайте SDK. Для удобства я обернул эти запросы в функции, которые вы можете использовать :
Код:
//Text, Bool, Picklist
function appVal(fieldname, value)
{
    return fieldname + '=' + value;
}

// DateTime
function appDate(fieldname, value) {
    var d = (value.getMonth() + 1) + "/" + value.getDate() + "/" + value.getFullYear();
    return appVal(fieldname, d);
}

// Lookup
function appLookup(fieldname, value, name) {
    return fieldname + "=" + value + "&" + fieldname + "name=" + name;
}

// Customer
function appCustomer(fieldname, value, name, typecode)
{
    var url = appLookup(fieldname, value, name);
    url += "&" + fieldname + "type=" + typecode;
    return url;
}
Пример использования:
Код:
var url = "http://crm:5555/sfa/conts/edit.aspx?";
url += appVal("firstname", "Нафазаил"); // text
url += "&";
url += appDate("birthdate", new Date()); // date
url += "&";
url += appCustomer("parentcustomerid", "{6794723D-A63B-DD11-9D00-001B7895C8E2}", "OOO Эвакуация умерших", "account"); //customer
url += "&";
url += appVal("isbackofficecustomer", 1); // bit
url += "&";
url += appVal("accountrolecode", 1); // picklist

window.open(url);
Скрипты формы отрабатывают нормально. Атрибуты отсутствующие на форме игнорируются без ошибок. Тем не менее, если в запросе передаются неверные параметры, например, текст опции пиклиста вместо ее кода, то пользователь увидит лишь сообщение об ошибке.
Размещено в CRM
Просмотров 34748 Комментарии 0
Всего комментариев 0

Комментарии

 


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