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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.11.2013, 16:23   #1  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
JavaScript Entity Reference in CRM 2013.
Добрый день!

Разочарован, решил написать на форум.

Задача: Создать кнопку, которая копирует Продукты из Проекта в Подпроект.

Я реализовал кнопку на форме Подпроект, которая открывает сущность Выбрать Продукт, в гриде которой содержаться отфильтрованные по ИД Проекта Продукты.
Чтобы просмотреть и выбрать записи из грида пользователь должен открыть их в отдельном окне.
В этом отельном окне формы Продукт есть кнопка Создать продукт.
При нажатии - должны копироваться выбранные записи и ассоциироваться с подпроектом.

Проблема: Я не могу обратиться с открытого окна Продукты к родительской сущности Выбрать продукт.

В 2011 это делалось очень просто, грид не открывался в отдельном окне, когда надо было просмотреть записи

Вот пример кода:
Цитата:

function CreateProduct (CrmParameters) {
var Record = CrmParameters;

//все что зачеркнуто ниже не работает

//var EntityName = Xrm.Page.data.entity.getEntityName();
//var EntityId = Xrm.Page.data.entity.getId();
//var EntityId = Xrm.Page.getAttribute("erpc_entityid").getValue();
//var EntityName = Xrm.Page.getAttribute("erpc_entityname").getValue();
//var Parent = Xrm.Page.data.entity.attributes.get(0).getParent();
//var erpc_parent_record_id = pageParent.getAttribute("erpc_parent_record_id").getValue();
//var erpc_entityname = pageParent.getAttribute("erpc_entityname").getValue();
//var ParentName = parent.Xrm.Page.data.entity.attributes.get("erpc_entityname").getValue;
var ParentID = window.parent.opener.Xrm.Page.data.entity.attributes.get("erpc_subproject").getValue()[0].id;

var select = "*";

var id = null;
for (var i = 0; i < Record.length; i++) {

id = Record[i];

RetriveProduct (id, select,EntityName,EntityId)

}

//alert ("Копии задач созданы!");

}



function RetriveProduct (ProductId, select,EntityName,EntityId)
{
InitializeRest();
SDK.REST.retrieveRecord(
ProductId,
'InvoiceDetail',
select,
null,
function (results) {

var DataProduct = results;

//Договор

if (EntityName == "erpc_busines_contract")
{


DataProduct.InvoiceDetailId = null;
DataProduct.erpc_campaign_invoicedetail = {Id: EntityId, LogicalName: "erpc_busines_contract", Name: "Name"};
CreateProductAndCopy(DataProduct)
}

// Подроект

if (EntityName == "subproject")
{

DataProduct.InvoiceDetailId = null;
DataProduct.erpc_subproject_invoicedetail = {Id: EntityId, LogicalName: "erpc_subproject", Name: "Name"};
CreateProductAndCopy(DataProduct)
}
//Счет

if (EntityName == "invoice")
{


DataProduct.InvoiceDetailId = null;
DataProduct.erpc_invoice_invoicedetail = {Id: EntityId, LogicalName: "invoice", Name: "Name"};
CreateProductAndCopy(DataProduct)
}
},
function (error) { alert(error.message); }
);
}


function CreateProductAndCopy (DataProduct)
{
InitializeRest();
SDK.REST.createRecord(
DataProduct,
'InvoiceDetail',
function (results) {
},
function (error) { alert(error.message); }
);
}

Последний раз редактировалось GetLucky; 15.11.2013 в 16:26.
Старый 15.11.2013, 17:10   #2  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
С этого окна можно обращаться через window.parent.opener.Xrm.Page.data.entity.attributes.get("erpc_subproject").getValue().

Странно, что одно поле всегда было null, хотя в нем содержалось значение, и при обращении отладчик писал, что нельзя получить значение getValue, и на это все валилось

В общем, пока я недоволен как "стабильно" работает СРМ 2013.
Старый 15.11.2013, 17:58   #3  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
потому что для кнопок есть возможность передавать параметр.
В вашем случае ID проекта.
После чего надо сделать retriveMultiple и в цикле create
Старый 15.11.2013, 18:37   #4  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
Цитата:
Сообщение от spectr Посмотреть сообщение
потому что для кнопок есть возможность передавать параметр.
В вашем случае ID проекта.
После чего надо сделать retriveMultiple и в цикле create
Если бы надо было абсолютно все копировать, то я бы и не парился.

А так есть требование - копировать только выбранные записи, что я и делаю в коде
через Параметр SelectedControlSelectedItemIds, который принимает моя функция.

Теперь другая проблема, я отфильтровал записи в гриде, но когда пользователь нажимает "показать связанные записи" - то мой кастомный фильтр не действует в новом окне, а как его установить - ХЗ.

Может кто-то знает?
Старый 17.11.2013, 18:37   #5  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
А я могу в SetParameter("fetchXml", fetchXml), прописать layout?

Может это сможет решить проблему с выбором записей в гриде 2013 СРМ, не открываю нового окна.
Старый 18.11.2013, 14:35   #6  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
Добрый день!

У меня появилась идея: открывать диалоговое окно LookupStyle=multi, фильтровать записи в этом окне по ID, получать массив ИД, и потом создавать их копии.

Допустим есть url строка:

Цитата:
url = Xrm.Page.context.getServerUrl() + "//_controls/lookup/lookupinfo.aspx?LookupStyle=multi&objecttypes=" + 1 + "&browse=0&DefaultType=0&search=" + GuidId+"&AllowFilterOff=1&DisableViewPicker=1&ShowNewButton=1&ShowPropButton=0";
У меня вопрос, как мне указать мою кастомную сущность при выводе диалогового окна?

objecttypes поддерживает все системные сущности, включаю значение от 1 до 10.

Как в url прописать мою кастомную сущность erpc_forviewproduct?
Старый 18.11.2013, 15:15   #7  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
Задача: вынести кнопку на риббон, открывать кастомное представление, передавать ИД, и по этому ИД фильтровать записи.

Могу ли я открыть представление и передать по url нужный параметр, который отфильтрует открытое представление, например по ИД.

Для форм можно в url использовать &extraqs, можно ли так же сделать для представлений с типом userquery, viewtype=4230
Старый 18.11.2013, 15:27   #8  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
Цитата:
Сообщение от GetLucky Посмотреть сообщение
Задача: вынести кнопку на риббон, открывать кастомное представление, передавать ИД, и по этому ИД фильтровать записи.

Могу ли я открыть представление и передать по url нужный параметр, который отфильтрует открытое представление, например по ИД.

Для форм можно в url использовать &extraqs, можно ли так же сделать для представлений с типом userquery, viewtype=4230

Параметры передавать нельзя в представления.
Старый 18.11.2013, 15:29   #9  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
Цитата:
Сообщение от GetLucky Посмотреть сообщение
Добрый день!

У меня появилась идея: открывать диалоговое окно LookupStyle=multi, фильтровать записи в этом окне по ID, получать массив ИД, и потом создавать их копии.

Допустим есть url строка:



У меня вопрос, как мне указать мою кастомную сущность при выводе диалогового окна?

objecttypes поддерживает все системные сущности, включаю значение от 1 до 10.

Как в url прописать мою кастомную сущность erpc_forviewproduct?
Кто-то может помочь, подсказать, как прописать objecttypes для сущности erpc_forviewproduct. Или если у нее есть номер, как его узнать?
Старый 18.11.2013, 15:46   #10  
Буденый is offline
Буденый
Участник
 
70 / 15 (1) ++
Регистрация: 07.06.2010
Адрес: Донецк
Цитата:
Сообщение от GetLucky Посмотреть сообщение
Кто-то может помочь, подсказать, как прописать objecttypes для сущности erpc_forviewproduct. Или если у нее есть номер, как его узнать?
Можно открыть форму редактирования нужной сущности, в строке адреса будет код сущности "etc=тут будет код сущности".
Старый 18.11.2013, 16:45   #11  
GetLucky is offline
GetLucky
Участник
Лучший по профессии 2014
 
99 / 13 (1) ++
Регистрация: 03.09.2013
Цитата:
Сообщение от Буденый Посмотреть сообщение
Можно открыть форму редактирования нужной сущности, в строке адреса будет код сущности "etc=тут будет код сущности".
Спасибо, а как задать фильтрацию по ид. Вместо &search как прописать атрибут по какому фильтровать?
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 15 Blog bot Dynamics CRM: Blogs 1 10.02.2016 10:26
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 14 Blog bot Dynamics CRM: Blogs 0 12.07.2013 07:13
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 13 Blog bot Dynamics CRM: Blogs 0 27.03.2013 22:12
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 12 Blog bot Dynamics CRM: Blogs 0 30.01.2013 01:11
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 10 Blog bot Dynamics CRM: Blogs 0 17.08.2012 03:27
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

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