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