Ранее столкнулся с проблемой, что в CRM 3.0 нельзя добавлять на форму во вкладке свой произвольный текст. Вот
тут было обсуждение, но приемлемого решения так и не нашлось.
Собственно вот способ добавления любого текста, html контролов, таблиц, в общем всего в рамках html.
Небольшое отступление: Когда в CRM выводится какой-то атрибут на форму, то создаются две ячейки, для названия атрибута и для самого контрола и присваиваются им id.
Вот например для атрибута типа text (<input ..> немного подсократил) создался такой текст:
Код:
<td id="new_profit_c" class="n">Ожидаемая прибыль (p.)</td>
<td id="new_profit_d"><input type='text' id="new_profit" value="6000"></td>
Собственно имеем:
Id самого атрибута: id="new_profit"
Id ячейки для названия: id="new_profit_c"
Id ячейки для вывода контрола: id="new_profit_d"
Если в настройках атрибута убрать галку с "Отображать подпись в форме" и в форматировании выбрать "Два столбца" то у нас на форме останется одна ячейка шириной во всю форму ввода с Id ячейки для вывода контрола Id="new_profit_d". Это нам даст так сказать "оперативный простор"
И так, если добавить новый атрибут и добавить его на форму в необходимое нам место, то:
1. он будет иметь в БД значение null, так как новый и если мы его в коде уберем, то и его значение и останется null и на запись формы он влиять не будет.
2. мы сможем его заменить на то, что нам надо без каких либо последствий.
Теперь меняем в onload:
Код:
//проверяем на существование
if(window.document.getElementById("new_profit_d") != null)
{
//Поехали
var elem = window.document.getElementById("new_profit_d");
//1. если нам нужна просто строка с текстом
elem.innerHTML = "";
elem.innerText = "Вот наша строка с текстом";
//2. если нам нужна например кнопка с вызовом произвольной javascript функции
//как добавлять свои javascript функции описано много где на форуме и т.п.
elem.innerText = "";
elem.innerHTML = "<input type='button' id='movemonth' name='movemonth' onclick='move_months();' value='Обновить месяца'>";
//3. можно вставить свою таблицу
elem.innerText = "";
elem.innerHTML = "<table border='1'><tr><td>Тест 1.1</td><td>Тест 1.2</td></tr><tr><td>Тест 2.1</td><td>Тест 2.2</td></tr></table>";
elem.style.height="100%"; //необходимо чтобы таблица отображалась полностью по высоте
//4. все что душе угодно в рамках html
//Например можно в javascript функции вызвать WebService, получить там необходимые
//произвольные данные из других объектов, связанных представлений и т.п.
//и вывести их на этой форме в табличке и т.п :)
//Была у меня как-то такая задача, вывести на форме список объектов из связанного представления, раньше отвечал что нельзя, а теперь можно :)
}
Вот так. Может конечно способ известный, но ранее не встречал.
Будет ли работать в CRM 4.0 не знаю, но думаю что да или с некоторыми нюансами.
С уважением к Вам и т.п.