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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.10.2012, 18:37   #1  
FordSoft is offline
FordSoft
Участник
 
20 / 10 (1) +
Регистрация: 22.10.2012
Форма редактирования сущности.
Добрый день! Подскажите решение, следующей задачи.

Есть сущность A (parrent) которая имеет дополнительные атрибуты, реализованные в сущности Б (child).

В сущности A на форме редактирования подгружается Iframe функционал формы редактирования сущности Б.

В форме сущности А в JS при событии сохранения с начало вызывается метод сохранения сущности Б, после сохраняется сущность А.

Если в сущности Б были изменения, тогда при перезагрузки страницы загружается форма редактирования сущности Б, которая раньше грузилась в Iframe, а если были изменения по сущности А, то загружается форма редактирования сущности А с фреймом сущности Б.

Как можно вылечить чтобы при изменениях в сущности Б, страница перезагружалась с нужной мне формой редактирования сущности А?
Старый 22.10.2012, 19:30   #2  
FordSoft is offline
FordSoft
Участник
 
20 / 10 (1) +
Регистрация: 22.10.2012
Нашёл примерное решение, это объявить скрытое поле (целое число) в сущности А, и инкриментировать его постоянно при сохранении сущности Б, тогда получается что сущность А была отредактирована и при перезагрузки страницы, загружается нужный урл сушности.

parent.Xrm.Page.getAttribute("description").setValue("any value");
parent.Xrm.Page.getAttribute("description").setSubmitMode("always");

Может есть более практичное решение?
Старый 23.10.2012, 10:02   #3  
Likefire is offline
Likefire
Заноза в заднице
Аватар для Likefire
MCBMSS
Лучший по профессии 2009
 
547 / 50 (3) ++++
Регистрация: 22.10.2007
Адрес: Москва
Записей в блоге: 1
Цитата:
Сообщение от FordSoft Посмотреть сообщение
Нашёл примерное решение, это объявить скрытое поле (целое число) в сущности А, и инкриментировать его постоянно при сохранении сущности Б, тогда получается что сущность А была отредактирована и при перезагрузки страницы, загружается нужный урл сушности.

parent.Xrm.Page.getAttribute("description").setValue("any value");
parent.Xrm.Page.getAttribute("description").setSubmitMode("always");

Может есть более практичное решение?
А нельзя ли ссылку на решение, если найдено в сети или даже на данном форуме? Просто не очень понятно, во-первых как сохранение другой сущности может быть отслежено в контексте выполнения Вашей задачи и во-вторых: нельзя ли сформулировать задачу более общо, что-ли, потому как сложно понять саму прикладную цель.

Поясню: например, из Ваших объяснений у меня возникло на первый взгляд, что Вам нужно отследить изменение данных связанной сущности в форме редактирования (то есть на клиенте) и с помощью скрипта сделать так, чтобы в открытой форме сущности А обновить значения полей, которые должны обновиться при добавлении либо обновлении записей сущности Б. Так?
__________________
Лень мудрого человека - это необходимое средство нейтрализации кипучей активности руководящих им дураков!

Последний раз редактировалось Likefire; 23.10.2012 в 10:07.
Старый 23.10.2012, 13:03   #4  
FordSoft is offline
FordSoft
Участник
 
20 / 10 (1) +
Регистрация: 22.10.2012
Цитата:
Сообщение от Likefire Посмотреть сообщение
А нельзя ли ссылку на решение, если найдено в сети или даже на данном форуме? Просто не очень понятно, во-первых как сохранение другой сущности может быть отслежено в контексте выполнения Вашей задачи и во-вторых: нельзя ли сформулировать задачу более общо, что-ли, потому как сложно понять саму прикладную цель.
ссылка на решение
h__p://social.microsoft.com/Forums/eu/crm/thread/0cd7f7ba-8e5e-421d-bf78-d50d3a91ad90

Задача такая что есть некая абстрактная сущность Обращение, у этого обращение может быть различные доп. атрибуты в зависимости от типа Обращение. Эти доп. атрибуты объявлены как объекты со своими полями.
Задача по типу выбора обращение, подгрузить в IFrame нужную сущность доп. атрибутов обращения. И сохранить обе сущности.

Цитата:
Сообщение от Likefire Посмотреть сообщение
Поясню: например, из Ваших объяснений у меня возникло на первый взгляд, что Вам нужно отследить изменение данных связанной сущности в форме редактирования (то есть на клиенте) и с помощью скрипта сделать так, чтобы в открытой форме сущности А обновить значения полей, которые должны обновиться при добавлении либо обновлении записей сущности Б. Так?
Не верно, мне просто необходимо сохранить обе сущности. Но когда изменений в родительской сущности не было, а в дочерней сущности были CRM не вызывает методы сохранения родительской сущности, а только дочерней, при этом при перезагрузке вместо родит. формы с IFram'ом грузится форма дочерней сущности, вот как то нужно поправить это.
Старый 23.10.2012, 13:48   #5  
Anros is offline
Anros
Участник
 
54 / 28 (1) +++
Регистрация: 01.07.2009
Решение 1. (на мой взгляд, самое правильное)
Просто добавить все дополнительные атрибуты в главную сущность.

Решение 2.
На форму главной сущности добавлять не iframe, а кнопку "Редактировать доп. атрибуты", по нажатию на которую откроется форма редактирования дочерней сущности в отдельном окне.

Решение 3.
При сохранении главной сущности не вызывать стандартное сохранение дочерней, а сохранить ее самостоятельно. Т.е. считать все атрибуты с формы на iframе, и через ajax (использую rest или soap – что больше нравиться) сохранить сущность.

PS.
JS скрипты на форму лучше добавить стандартным способом, не копируя никаких форм, иначе Ваше решение сразу обречено не работать в crmonline.
Старый 23.10.2012, 14:43   #6  
FordSoft is offline
FordSoft
Участник
 
20 / 10 (1) +
Регистрация: 22.10.2012
Цитата:
Сообщение от Anros Посмотреть сообщение
Решение 1. (на мой взгляд, самое правильное)
Просто добавить все дополнительные атрибуты в главную сущность.
Так уж исторически сложилось что всё сделали до того как я этим начал заниматься, а типов обращений там туча и переделывать что то смысла нет.

Цитата:
Сообщение от Anros Посмотреть сообщение
Решение 3.
При сохранении главной сущности не вызывать стандартное сохранение дочерней, а сохранить ее самостоятельно. Т.е. считать все атрибуты с формы на iframе, и через ajax (использую rest или soap – что больше нравиться) сохранить сущность.
Хорошая идея. Сразу не додумался, если нечего не получиться видимо так и буду делать. Спасибо!
Старый 22.10.2012, 22:03   #7  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Цитата:
Сообщение от FordSoft Посмотреть сообщение
Добрый день! Подскажите решение, следующей задачи.

Есть сущность A (parrent) которая имеет дополнительные атрибуты, реализованные в сущности Б (child).

В сущности A на форме редактирования подгружается Iframe функционал формы редактирования сущности Б.

В форме сущности А в JS при событии сохранения с начало вызывается метод сохранения сущности Б, после сохраняется сущность А.
Здравствуйте. До этого места все совершенно ясно.
Цитата:
Сообщение от FordSoft Посмотреть сообщение
Если в сущности Б были изменения, тогда при перезагрузки страницы загружается форма редактирования сущности Б, которая раньше грузилась в Iframe, а если были изменения по сущности А, то загружается форма редактирования сущности А с фреймом сущности Б.
А вот здесь становится совершенно непонятно! Вы вставили родную CRM форму Б в Iframe формы А? Если так, то вы обречены на разного рода спецэффекты.

Тем не менее я совершенно не понял то там происходит с вашими формами. Может быть вы приложите скриншоты?
Цитата:
Сообщение от FordSoft Посмотреть сообщение
Нашёл примерное решение, это объявить скрытое поле (целое число) в сущности А, и инкриментировать его постоянно при сохранении сущности Б, тогда получается что сущность А была отредактирована и при перезагрузки страницы, загружается нужный урл сушности.

parent.Xrm.Page.getAttribute("description").setValue("any value");
parent.Xrm.Page.getAttribute("description").setSubmitMode("always");

Может есть более практичное решение?
Вот это был последний гвоздь в мой моск! Вы сделали в объекте-родителе признак обновления дочернего объекта, это понятно, хотя непонятно зачем, но ладно... Как это числовое поле влияет на URL чего бы то ни было?
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 22.10.2012 в 22:07.
Старый 23.10.2012, 12:55   #8  
FordSoft is offline
FordSoft
Участник
 
20 / 10 (1) +
Регистрация: 22.10.2012
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
А вот здесь становится совершенно непонятно! Вы вставили родную CRM форму Б в Iframe формы А? Если так, то вы обречены на разного рода спецэффекты.
Я гружу в Iframe подредактированную форму UserDefined\Edit (скопировал её, обозвав MyEdit), добавил туда свои скрипты JS.

Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Тем не менее я совершенно не понял то там происходит с вашими формами. Может быть вы приложите скриншоты?
Когда мне нужно сохранить обе сущности, через кнопку Save, я вешаю на события сохранения родительской сущности, вызов сохранения дочерней сущности.
Так вот если изменений в родительской сущности не было, и были изменения в дочерней сущности, то после сохранения и перезагрузке страницы в окно грузиться моя отредактированная форма дочерней сущности.

А если были изменения в родительской сущности, то грузится страница редактирования родительской сущности + IFRAME дочерней сущности, как в принципе и необходимо.

Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение

Вот это был последний гвоздь в мой моск! Вы сделали в объекте-родителе признак обновления дочернего объекта, это понятно, хотя непонятно зачем, но ладно... Как это числовое поле влияет на URL чего бы то ни было?
Числовое поле просто постоянно обновляется, это означает что на родительской форме были изменения, поэтому она вызовет своё события сохранить сущность, и нормально перегрузиться страница.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание Order из другой сущности ashuron Dynamics CRM: Разработка 3 16.11.2011 22:21
Как получить значение поля одной сущности при обработке формы другой сущности zhenek Dynamics CRM: Разработка 25 05.07.2011 16:19
Присвоение одного атрибута сущности значения другого атрибута связанной сущности vital.mih Dynamics CRM: Функционал 38 08.09.2010 10:53
Тип грида (GridType) при выводе списка связанной сущности alsherin Dynamics CRM: Разработка 4 07.07.2009 19:18
Как создать экземпляр кастомной сущности через SOAP? Tony Green Dynamics CRM: Разработка 7 27.02.2009 08:37
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 02:51.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.