AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 11.03.2013, 14:19   #1  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Как присвоить значение с поля Lookup текстовому полю.
Добрый день!

Только начинаю работать с JavaScript. Нужна небольшая консультация.

Есть необходимость присваивать значение одного из атрубутов Lookup в текстовое поле одной и той же сущности.

Может быть кто-то сталкивался с таким требованием.

В интернете ищу, пока безуспешно.

Помогите, пожалуйста.
Старый 11.03.2013, 14:39   #2  
-O_o- is offline
-O_o-
Еда - топливо, Одежда - н
Аватар для -O_o-
Лучший по профессии 2015
Лучший по профессии 2014
 
727 / 80 (4) ++++
Регистрация: 11.05.2012
Адрес: Киев
А зачем сразу скрипты использовать? Пользователю нужно сразу видеть что ли значение в этом поле... Могу предположить, что вы пытаетесь заполнить поле "имя". Что бы потом при поиске было видно что это за запись. Если так, то советую вам скрыть это поле, сделать его не обязательным для заполнения и создать БП на создание и/или обновление записи. И пусть он и заполняет текстовое поле из лукапа...
Старый 11.03.2013, 14:53   #3  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Извините, если не понял вопроса, но...
Ответов на Ваш вопрос может быть масса:
1. Попробуйте воспользоваться оператором присвоения (номер один по остроумию).
2. Попробуйте воспользоваться SDK (тоже остроумный ответ).
3. Значение атрибута Lookup - это в целом массив. Естественно: массив в строку передать не так-то просто, можно попробовать его сериализовать, если прямо ну очень нужно. Как сериализовать массив в строку - тоже есть несколько способов, но все они окажутся бесполезны, если Вас интересует только выбранное значение, которое является объектом с несколькими атрибутами (полями) и из них, в свою очередь Вас может интересовать какое-то конкретное значение, конкретного поля, а возможно (и такое бывает) Вам нужно сохранить в тексте все атрибуты, имеющие значение. В этом случае нужно уточнить - что именно нужно присвоить в строку.
4. Напоследок можно поинтересоваться: а что конкретно у Вас не получается - получить значение, которое нужно присвоить, или текстовое поле не принимает полученное значение? Может быть у вас есть пример скрипта, который не работает, а Вы хотите узнать, как заставить скрипт работать?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!
Старый 11.03.2013, 15:01   #4  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
У нас логика немного другая: у нас есть два одинаковых поля, одно поле А заполняется пользователем из Lookup, если пользователь создал сущность стандартным методом (создать новую запись типа...), при этом поле Е пустое и скрыто для пользователя, НО ДОЛЖНО ЗАПОЛНИТЬСЯ ЗНАЧЕНИЕМ ПОЛЯ "А".
Другой вариант - сущность Custom создается со специального модуля написанного на Silver light, и значение поля Е проставляется скриптом, а поле А скрывается и не видно пользователям.
Мне необходимо значение поля А присваивать полю Е, если пользователь выбирает его из Lookup т.к. потом мы значение Е передаем в другую систему (ERP).

Да, присваивать надо значение конкретно выбранного атрубута из Lookup в текстовое поле.

Последний раз редактировалось Ion; 11.03.2013 в 15:04.
Старый 11.03.2013, 15:28   #5  
-O_o- is offline
-O_o-
Еда - топливо, Одежда - н
Аватар для -O_o-
Лучший по профессии 2015
Лучший по профессии 2014
 
727 / 80 (4) ++++
Регистрация: 11.05.2012
Адрес: Киев
Thumbs up
Цитата:
Сообщение от Ion Посмотреть сообщение
У нас логика немного другая: у нас есть два одинаковых поля, одно поле А заполняется пользователем из Lookup, если пользователь создал сущность стандартным методом (создать новую запись типа...), при этом поле Е пустое и скрыто для пользователя, НО ДОЛЖНО ЗАПОЛНИТЬСЯ ЗНАЧЕНИЕМ ПОЛЯ "А".
Другой вариант - сущность Custom создается со специального модуля написанного на Silver light, и значение поля Е проставляется скриптом, а поле А скрывается и не видно пользователям.
Мне необходимо значение поля А присваивать полю Е, если пользователь выбирает его из Lookup т.к. потом мы значение Е передаем в другую систему (ERP).

Да, присваивать надо значение конкретно выбранного атрубута из Lookup в текстовое поле.
Повесьте БП и не мучайтесь. Там уже не важно как будет запись создаваться... Поле Е всегда будет заполняться значением из поля А
Старый 11.03.2013, 15:30   #6  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Как-то так
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  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от -O_o- Посмотреть сообщение
Повесьте БП и не мучайтесь. Там уже не важно как будет запись создаваться... Поле Е всегда будет заполняться значением из поля А
Я то создал, только вот значение Е заполняется названием, а мне надо, чтобы там был другой атрубут
Старый 11.03.2013, 16:02   #8  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Можно еще один глупый вопрос - мне надо вешать этот скрипт на форму Событие - Onload, а поле Lookup делать OnChange.

Не судите строго. Пытаюсь читать SDK, но новичку непросто сориентироваться самостоятельно.

Забы написать изначально. У меня СRМ 2011

Последний раз редактировалось Ion; 11.03.2013 в 16:15.
Старый 12.03.2013, 13:58   #9  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от 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  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
var assignAttrib = Xrm.Page.getAttribute('new_brend_test');

без квадратных скобок.

Таким образов Вы получаете id записи, которая выбрана в lookup.
Вам именно id необходимо?
__________________
Мой блог https://procrm.tv
Старый 12.03.2013, 15:05   #11  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
var assignAttrib = Xrm.Page.getAttribute('new_brend_test');

без квадратных скобок.

Таким образов Вы получаете id записи, которая выбрана в lookup.
Вам именно id необходимо?
Нет, нужно не id. Приатачил скрин, так понятней.
Миниатюры
Нажмите на изображение для увеличения
Название: Скрин 1.png
Просмотров: 427
Размер:	102.5 Кб
ID:	8106   Нажмите на изображение для увеличения
Название: Скрин 2.png
Просмотров: 350
Размер:	56.2 Кб
ID:	8107  

Старый 12.03.2013, 15:13   #12  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Цитата:
Сообщение от Ion Посмотреть сообщение
function SetValueto{
пропущены скобки, нужно
function SetValueto() {

Цитата:
Сообщение от Ion Посмотреть сообщение
var lookupValue = Xrm.Page.data.entity.attributes.get("new_productgroupid").getValue();
// или так не правильно?
правильно, но можно короче
var lookupValue = Xrm.Page.getAttribute("new_productgroupid").getValue();

Цитата:
Сообщение от Ion Посмотреть сообщение
assignAttrib.setValue(fieldValue);
переменная fieldValue не определена

если нужно не id, а текст с лукапа, то нужно писать так
var lookupValueName = lookupValue[0].name;
...
assignAttrib.setValue(lookupValueName );
Старый 12.03.2013, 15:44   #13  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от g.Naukovych Посмотреть сообщение
var assignAttrib = Xrm.Page.getAttribute('new_brend_test');

без квадратных скобок.

Таким образов Вы получаете id записи, которая выбрана в lookup.
Вам именно id необходимо?
Цитата:
Сообщение от 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
Миниатюры
Нажмите на изображение для увеличения
Название: Скрин 3.png
Просмотров: 383
Размер:	33.4 Кб
ID:	8108  
Изображения
 
Старый 12.03.2013, 15:54   #14  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Цитата:
Сообщение от Ion Посмотреть сообщение
var assignAttrib = Xrm.Page.getAttribute(“new_brend_test”);
Кавычки должны быть обычными
var assignAttrib = Xrm.Page.getAttribute("new_brend_test");
Старый 12.03.2013, 16:21   #15  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Цитата:
Сообщение от Anros Посмотреть сообщение
Кавычки должны быть обычными
var assignAttrib = Xrm.Page.getAttribute("new_brend_test");
Круто, спасибо, остался последний штрих.
Миниатюры
Нажмите на изображение для увеличения
Название: Скрин 5.png
Просмотров: 433
Размер:	97.5 Кб
ID:	8110   Нажмите на изображение для увеличения
Название: Скрин 6.png
Просмотров: 420
Размер:	51.2 Кб
ID:	8111  

Старый 12.03.2013, 16:32   #16  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Не понятно в чем проблема, опишите подробнее что не так.
Старый 12.03.2013, 17:41   #17  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
Скрипт присваивает имя Lookup в то поле, что нужно. Проблема в том, что при первом выборе атрибут "Серийный номер" = название Lookup, но при сохранении подставляется название экземпляра кастомной сущности на которую ссылается Lookup.
А мне нужно, чтобы в поле присваивалось значение атрибута "Серийный номер".
Не знаю корректно выразился или нет.
Старый 12.03.2013, 18:01   #18  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Похоже, что при сохранении отрабатывает какой то плагин, который подменяет значение лукапа.
В этом случае попробуйте убрать вызов функции с загрузки формы, оставить только на изменении лукапа.
За это сообщение автора поблагодарили: Ion (1).
Старый 12.03.2013, 18:06   #19  
Ion is offline
Ion
Участник
 
332 / 16 (1) ++
Регистрация: 19.12.2012
юху, работает. спасибо)
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Не устанавливается значение поля bit crm 4.0 NoTimeToCry Dynamics CRM: Разработка 3 24.08.2012 18:59
Мелкомягкий CRM: Отображение в Lookup’е произвольного поля вместо основного атрибута Blog bot Dynamics CRM: Blogs 3 26.04.2010 19:10
Как получить значение поля? Elka Dynamics CRM: Разработка 4 26.06.2009 13:52
Присвоить lookup значение Elka Dynamics CRM: Разработка 7 08.06.2009 12:07
Как взять текстовое значение из поля LookUp tatra Dynamics CRM: Разработка 2 21.11.2007 08:20

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

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