У меня есть вопрос по поводу составных атрибутов, что я был бы признателен, если бы вы могли мне помочь. Я разместил это раньше в других блогах вопросов, но не получил ответа. Я доволен.
Я пишу JavaScript, который будет обновлять поля (т.е. address1_line1, address1_line2, address1_line3, address1_city, address1_stateorprovince, address1_postalcode, address1_country) в составном (address1_composite). Когда поля обновляются, композиция, похоже, не обновляется. Мне нужно открыть композит и снова закрыть его. Есть ли способ сделать это автоматически в JavaScript?
Я пробовал следующие идеи:
Идея 1:
Xrm.Page.data.entity.save();
Это рекомендуется на http://community.dynamics.com/crm/b/magnetismsolutionscrmblog/archive/2013/10/22/working-with-dynamics-crm-2013-composite-fields-fly-out-menu.aspx Это не так хорошо, как мои клиенты хотят просмотреть композит перед сохранением страницы. Также я бы не хотел сохранять страницу для своих клиентов, поскольку они этого не хотят. Они хотели бы решить, когда делать это сами.
Идея 2:
Xrm.Page.data.refresh();
Это не совсем то, что я хотел, поскольку я не хочу обновлять всю страницу. Я просто хочу обновить композит. Также он вызывает всплывающее окно, которое предупреждает вас о том, что вы не сохранили страницу, которая будет раздражать моих клиентов.
Идея 3:
Запись адреса из адресных строк в композит. Это похоже на неприятный взлом. Вероятно, существует несколько способов сделать это. Я использовал функцию
Xrm.Page.getAttribute("address1_composite")._attribute.setValueForCompositeField();
Мне это не нравится по следующим причинам:
- Это взломать, поскольку он не использует системные функции сделанной кнопки для записи данных.
- Вы не получаете форматирование системы, которое вы получаете с помощью кнопки "Готово" , хотя это будет сделано, когда форма будет сохранена, так что это не так уж плохо.
- В будущем, если клиентам разрешено добавлять свои собственные составные поля, это может вызвать проблемы, поскольку имена полей могут быть разными.
- Это требует, чтобы я написал дополнительный код для каждой формы, у которой есть композит, который имеет поля с разными именами схем. Например. Я должен написать другой код для форм с адресами ShipTo и BillTo, поскольку код для формы учетной записи не будет работать.
Xrm.Page.data.entity.attributes.get("address1_composite").controls.get(0).setFocus();
Это лучшая идея, поэтому, но она далека от совершенства. Это заставляет пользователя нажать кнопку "Готово" и, следовательно, поля будут записаны. Я надеялся на что-то более автоматизированное.
Мой вопрос: Было бы здорово, если бы был способ щелкнуть кнопку "Готово" в JavaScript. Это дало бы мне форматирование сделанной кнопки и автоматизации, в которой я нуждаюсь.
Обновление - 14/04/2014 Начиная с публикации этого вопроса, я был в контакте с Microsoft, и они говорят, что нет поддерживаемого способа нажатия кнопки "done" с помощью программы.