|
11.03.2013, 14:19 | #1 |
Участник
|
Как присвоить значение с поля Lookup текстовому полю.
Добрый день!
Только начинаю работать с JavaScript. Нужна небольшая консультация. Есть необходимость присваивать значение одного из атрубутов Lookup в текстовое поле одной и той же сущности. Может быть кто-то сталкивался с таким требованием. В интернете ищу, пока безуспешно. Помогите, пожалуйста. |
|
11.03.2013, 14:39 | #2 |
Еда - топливо, Одежда - н
|
А зачем сразу скрипты использовать? Пользователю нужно сразу видеть что ли значение в этом поле... Могу предположить, что вы пытаетесь заполнить поле "имя". Что бы потом при поиске было видно что это за запись. Если так, то советую вам скрыть это поле, сделать его не обязательным для заполнения и создать БП на создание и/или обновление записи. И пусть он и заполняет текстовое поле из лукапа...
|
|
11.03.2013, 15:01 | #3 |
Участник
|
У нас логика немного другая: у нас есть два одинаковых поля, одно поле А заполняется пользователем из Lookup, если пользователь создал сущность стандартным методом (создать новую запись типа...), при этом поле Е пустое и скрыто для пользователя, НО ДОЛЖНО ЗАПОЛНИТЬСЯ ЗНАЧЕНИЕМ ПОЛЯ "А".
Другой вариант - сущность Custom создается со специального модуля написанного на Silver light, и значение поля Е проставляется скриптом, а поле А скрывается и не видно пользователям. Мне необходимо значение поля А присваивать полю Е, если пользователь выбирает его из Lookup т.к. потом мы значение Е передаем в другую систему (ERP). Да, присваивать надо значение конкретно выбранного атрубута из Lookup в текстовое поле. Последний раз редактировалось Ion; 11.03.2013 в 15:04. |
|
11.03.2013, 15:28 | #4 |
Еда - топливо, Одежда - н
|
Цитата:
Сообщение от Ion
У нас логика немного другая: у нас есть два одинаковых поля, одно поле А заполняется пользователем из Lookup, если пользователь создал сущность стандартным методом (создать новую запись типа...), при этом поле Е пустое и скрыто для пользователя, НО ДОЛЖНО ЗАПОЛНИТЬСЯ ЗНАЧЕНИЕМ ПОЛЯ "А".
Другой вариант - сущность Custom создается со специального модуля написанного на Silver light, и значение поля Е проставляется скриптом, а поле А скрывается и не видно пользователям. Мне необходимо значение поля А присваивать полю Е, если пользователь выбирает его из Lookup т.к. потом мы значение Е передаем в другую систему (ERP). Да, присваивать надо значение конкретно выбранного атрубута из Lookup в текстовое поле. |
|
11.03.2013, 15:31 | #5 |
Участник
|
|
|
11.03.2013, 16:02 | #6 |
Участник
|
Можно еще один глупый вопрос - мне надо вешать этот скрипт на форму Событие - Onload, а поле Lookup делать OnChange.
Не судите строго. Пытаюсь читать SDK, но новичку непросто сориентироваться самостоятельно. Забы написать изначально. У меня СRМ 2011 Последний раз редактировалось Ion; 11.03.2013 в 16:15. |
|
11.03.2013, 15:30 | #7 |
Заноза в заднице
|
Как-то так
X++: // Пример для CRM2011 var lookupValue = lookupAttrib.getValue(); if (lookupValue != null && lookupValue.length > 0) { // здесь первый элемент массива - это и есть выбранное в Lookup-поле значение, у которого есть три атрибута: id, name и type (либо entityType), которые характеризуют выбранный объект var lookupValueId = lookupValue[0].id; // далее: нужно получить атрибут в который нужно присвоить значение и собственно присвоить (пример для текстового атрибута) var assignAttrib = Xrm.Page.getAttribute('E'); // если атрибут в форме только для чтения - перед присвоением установим submit mode assignAttrib.setSubmitMode('always'); assignAttrib.setValue(fieldValue); }
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
|
За это сообщение автора поблагодарили: Ion (1). |
12.03.2013, 13:58 | #8 |
Участник
|
Цитата:
Сообщение от Likefire
X++: // Пример для CRM2011 var lookupValue = lookupAttrib.getValue(); if (lookupValue != null && lookupValue.length > 0) { // здесь первый элемент массива - это и есть выбранное в Lookup-поле значение, у которого есть три атрибута: id, name и type (либо entityType), которые характеризуют выбранный объект var lookupValueId = lookupValue[0].id; // далее: нужно получить атрибут в который нужно присвоить значение и собственно присвоить (пример для текстового атрибута) var assignAttrib = Xrm.Page.getAttribute('E'); // если атрибут в форме только для чтения - перед присвоением установим submit mode assignAttrib.setSubmitMode('always'); assignAttrib.setValue(fieldValue); } function SetValueto{ var lookupValue = Xrm.Page.data.entity.attributes.get("new_productgroupid").getValue(); // или так не правильно? if (lookupValue != null && lookupValue.length > 0) { // здесь первый элемент массива - это и есть выбранное в Lookup-поле значение, у которого есть три атрибута: id, name и type (либо entityType), которые характеризуют выбранный объект var lookupValueId = lookupValue[0].id; // далее: нужно получить атрибут в который нужно присвоить значение и собственно присвоить (пример для текстового атрибута) var assignAttrib = Xrm.Page.getAttribute(“[new_brend_test]”);// // если атрибут в форме только для чтения - перед присвоением установим submit mode assignAttrib.setSubmitMode('always'); assignAttrib.setValue(fieldValue); } } |
|
12.03.2013, 15:13 | #9 |
Участник
|
пропущены скобки, нужно
function SetValueto() { Цитата:
var lookupValue = Xrm.Page.getAttribute("new_productgroupid").getValue(); переменная fieldValue не определена если нужно не id, а текст с лукапа, то нужно писать так var lookupValueName = lookupValue[0].name; ... assignAttrib.setValue(lookupValueName ); |
|
11.03.2013, 14:53 | #10 |
Заноза в заднице
|
Извините, если не понял вопроса, но...
Ответов на Ваш вопрос может быть масса:
1. Попробуйте воспользоваться оператором присвоения (номер один по остроумию). 2. Попробуйте воспользоваться SDK (тоже остроумный ответ). 3. Значение атрибута Lookup - это в целом массив. Естественно: массив в строку передать не так-то просто, можно попробовать его сериализовать, если прямо ну очень нужно. Как сериализовать массив в строку - тоже есть несколько способов, но все они окажутся бесполезны, если Вас интересует только выбранное значение, которое является объектом с несколькими атрибутами (полями) и из них, в свою очередь Вас может интересовать какое-то конкретное значение, конкретного поля, а возможно (и такое бывает) Вам нужно сохранить в тексте все атрибуты, имеющие значение. В этом случае нужно уточнить - что именно нужно присвоить в строку. 4. Напоследок можно поинтересоваться: а что конкретно у Вас не получается - получить значение, которое нужно присвоить, или текстовое поле не принимает полученное значение? Может быть у вас есть пример скрипта, который не работает, а Вы хотите узнать, как заставить скрипт работать?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков! |
|
12.03.2013, 14:37 | #11 |
Участник
|
var assignAttrib = Xrm.Page.getAttribute('new_brend_test');
без квадратных скобок. Таким образов Вы получаете id записи, которая выбрана в lookup. Вам именно id необходимо? |
|
12.03.2013, 15:05 | #12 |
Участник
|
Нет, нужно не id. Приатачил скрин, так понятней.
|
|
12.03.2013, 18:06 | #13 |
Участник
|
юху, работает. спасибо)
|
|