У меня вопрос о композитных атрибутах, что я был бы признателен, если бы вы могли мне помочь. Я разместил это раньше в других блогах вопросов, но не получил ответа. Я доволен.Композитные поля в MSCRM 2013
Я пишу 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, и они говорят, что нет поддержки способа нажатия кнопки «Готово» с помощью программы.
Я думал, что прокомментирую этот вопрос. У меня такая же проблема (по состоянию на 09/04/14 ddmmyy). Похоже, что добавление составного атрибута привязано к действию либо подтверждения, либо щелчка на поле редактирования вылета. Я ожидал, что составной элемент управления будет обновляться всякий раз, когда изменяется один из связанных атрибутов (даже с fireOnChange, а не только вручную). Обычный материал MS печально. – Raine
14/04/2014 С момента публикации этого вопроса я был в контакте с Microsoft, и они говорят, что нет поддерживаемого способа нажатия кнопки «Готово» через программу. Я добавил это к основному вопросу выше. – Oly
Что вы определили? – Kye