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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 29.01.2018, 20:03   #1  
magicandy is offline
magicandy
Участник
 
111 / 12 (1) ++
Регистрация: 15.07.2014
Сохранение записи на клиенте с игнором заполнения обязательных полей
Коллеги, приветствую.

Есть необходимость программно сохранить карточку в момент первичного открытия формы на создание, игнорируя требования заполнить обязательные поля. Это нужно чтобы создать необходимые связи и сразу отобразить их в сабгридах этой карточки.
Я вижу следующий сценарий:
- снимаем все требования по полям (setRequiredLevel("none"))
- сохраняем, создаём связи и проч.
- возвращаем требования по обязательности полей обратно.

Это правильный сценарий? Или у кого-то есть более элегантное решение для Dynamics 365 (on-premise)?

Спасибо
Старый 29.01.2018, 20:17   #2  
Артем 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
Я бы заменил код кнопки создания. Будет быстрее работать и не будет непонятной для пользователя перезагрузки.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 30.01.2018, 00:58   #3  
magicandy is offline
magicandy
Участник
 
111 / 12 (1) ++
Регистрация: 15.07.2014
А можно немножко подробнее про ваш сценарий из кнопки? И в какой момент моего сценария предполагается непонятная перезагрузка? Тут ещё дело в том, что вероятнее всего, новая запись будет создаваться с кнопки сабгрида, а не риббона.
Старый 30.01.2018, 13:26   #4  
Артем 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
Суть предложения: берем RibbonWorkbench и заменяем (делаем customize command) на всех риббонах-командбарах для кнопки "Создать". В своей команде делаем запрос на создание, после чего открываем полученный ID стандартным образом. Судя по SDK можно поменять эту команду для сабгрида.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 30.01.2018, 13:33   #5  
Артем 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
Как бы работал сценарий, если бы функционал был реализован в обработчике открытия формы. Сначала бы загрузилась лента и форма для чтения. Потом сработал бы ваш обработчик и вызвал бы сохранение еще непрогруженной формы. Сохранение (если нет ошибок) вызвало бы Refresh формы и повторный рендеринг сабгридов. Это, как минимум дольше, и, если система тормозит, будет выглядеть для пользователя как глюки.

p.s. Единственный нюанс: рекомендую предусмотреть защиту от повторного нажатия. Пример есть в SDK https://msdn.microsoft.com/en-us/lib...or=-2147217396
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: Roman08 (1), magicandy (1).
Старый 31.01.2018, 10:28   #6  
magicandy is offline
magicandy
Участник
 
111 / 12 (1) ++
Регистрация: 15.07.2014
Thumbs up
Спасибо. Ваш способ действительно проще и эффективнее.
Старый 31.01.2018, 15:28   #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
Пожалуйста. Он вряд ли проще (если делать в соответствии с примером), но точно эффективнее Ну и он независим от формы, что тоже плюс, если их будет несколько.

Придумал еще один вариант. Вы можете сделать форму быстрого создания. Если такая есть, при создании из сабгрида будет вызываться именно она. На ней не может быть своих гридов, зато могут быть бизнес-правила, которые сделают "лишние" поля не обязательными
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 31.01.2018, 15:45   #8  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Т.е. ваш процесс подразумевает, что пользователь совершает операцию Создания, а у него уже есть связанные объекты и он их должен сразу же менять/сохранять?

Я бы не хотел менять работу стандартных кнопок для одного случая, а сделал бы по вашему варианту, немного изменив:
1. Пользователь жмет создать - заполняет одно Название/Имя (можно только его и показывать при создании)
2. Сохраняет запись и вы синхронно создаете все нужные дочерние записи и показываете полную форму

Мне кажется это будет проще и без лишних ковыряний в стандартных кнопках, которые, к тому же, имеет свойство меняться с обновлениями и будет лишняя головная боль при поддержке.

Какие мысли на этот счет?

Последний раз редактировалось Bondonello; 31.01.2018 в 15:47.
За это сообщение автора поблагодарили: magicandy (1).
Старый 31.01.2018, 16:20   #9  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
А у меня такой вопрос по процессу: вот создали вы таким образом запись, подтянули связанные записи. Дальше пользователю надо заполнить обязательные поля... Что если он не сможет или не захочет этого делать? Что дальше? Запись будет висеть в таком полузаполненном состоянии? Или пользователь должен будет удалить ее?
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
Старый 31.01.2018, 17:01   #10  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Что если он не сможет или не захочет этого делать? Что дальше? Запись будет висеть в таком полузаполненном состоянии? Или пользователь должен будет удалить ее?
Да, я к тому же. Процесс не очень.
Старый 31.01.2018, 19:16   #11  
magicandy is offline
magicandy
Участник
 
111 / 12 (1) ++
Регистрация: 15.07.2014
Коллеги, всем большое спасибо. Натолкнули на правильный ход мыслей и вариантов решения.

По процессу подразумевается, что пользователь будет заполнять карточку, в том числе обязательные поля, исходя из информации в "подцепленных" записях. А записи эти также могут относиться к разным сущностям.

Пожалуй, самым оптимальным тут было бы разработать кастомный контрол-шпаргалку с отображением нужных записей на карточке, а не лепить связи авансом.
Старый 31.01.2018, 19:39   #12  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Цитата:
Сообщение от magicandy Посмотреть сообщение
разработать кастомный контрол-шпаргалку с отображением нужных записей на карточке, а не лепить связи авансом.
Ну вот и нашлось решение. Следующий шаг будет изменения процесса, чтобы использовать Business Process Flow https://docs.microsoft.com/en-us/dyn...flows-overview
Старый 01.02.2018, 13:29   #13  
Артем 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
В системе есть редкие объекты, которые создаются сразу и да, их нужно удалять, если пользователь передумал что-то делать. Не вижу тут каких-то принципиальных идейных противоречий.

Если подходит вариант с ProcessFlow, или формой быстрого создания, тогда я предпочел бы его. Если нужно сделать именно то что написано в сабже - я бы сделал как написал.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Mail Merge: как сохранить список полей Data Source? Roman08 Dynamics CRM: Функционал 0 04.07.2013 19:30
Преобразование необязатаельных полей в обязательные(полнота полей) Alexey-IT Dynamics CRM: Функционал 4 22.07.2010 21:45
Различные значения полей в одной записи для разных пользователей Tarasov E Dynamics CRM: Разработка 11 26.04.2010 10:58
Странности бизнес-процесса на изменение атрибутов записи SLK Dynamics CRM: Функционал 6 19.05.2009 08:14
Событие "Назначение записи" для бизнес-процесса Lazarus Dynamics CRM: Функционал 1 22.01.2009 19:54
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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