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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 06.04.2012, 15:02   #1  
X-Lady is offline
X-Lady
Участник
 
7 / 10 (1) +
Регистрация: 14.03.2012
CRM 4.0. Зависимость пиклиста от значения самого себя - так бывает?
Добрый день!
Я пока крайне неопытный в CRM товарищ, прошу за глупые вопросы кидать тапками не больно ))

Вопрос. Мне нужно (=заказчик хочет) сделать так, чтобы состояние договора (пиклист) можно было выбирать только следующее от текущего значения.
Т.е. если последовательность состояний договора:
Подготавливается
На согласовании
Согласован
На подписи
Подписан
то из состояния На подписи можно тыкнуть только Подписан.

Про зависимые пиклисты и зависимость пиклиста от поля читала (http://mmcrm.ru/?p=708).
Вопрос. Можно ли сделать доступными для выбора значения пиклиста в зависимости от значения самого себя? И если да, то как...
__________________
Семь перпендикулярных красных линий?
Мы же профессионалы...

Последний раз редактировалось X-Lady; 06.04.2012 в 15:08.
Старый 06.04.2012, 15:13   #2  
spectr is offline
spectr
Участник
Аватар для spectr
MCBMSS
Лучший по профессии 2014
 
287 / 70 (3) ++++
Регистрация: 19.10.2011
Адрес: Киев
Можно!

На OnLoad вешаем скрипт который смотрит на значение пиклиста и убирает все другие с него значения кроме текущего и следующего.
Старый 10.04.2012, 17:18   #3  
X-Lady is offline
X-Lady
Участник
 
7 / 10 (1) +
Регистрация: 14.03.2012
Пробую написать
if (crmForm.all.new_status.DataValue == "1") {
crmForm.all.new_status.remove (3);
}
в надежде, что если значение пиклиста 1 - уберет третий статус из списка.
ругается на то, что не может получить значение свойства attachEvent
Если вместо единицы ставить 0, значение вроде "Согласовывается" - то же самое.
Если убирать DataValue - тот же результат.
__________________
Семь перпендикулярных красных линий?
Мы же профессионалы...
Старый 10.04.2012, 17:48   #4  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Можете пожалуйста привести полный код?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 10.04.2012, 19:16   #5  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
У меня работает. Из списка удаляются. Нумерация идёт с нулевого. Если выйти за предел ошибку тоже не выдал.
Чтобы убрать третий статус из списка необходимо написать crmForm.all.new_status.remove(2);
__________________
Мой блог https://procrm.tv
Старый 11.04.2012, 09:54   #6  
X-Lady is offline
X-Lady
Участник
 
7 / 10 (1) +
Регистрация: 14.03.2012
Прошу прощения.
По неопытности проверяю после добавления события предварительным просмотром. Он ругается.
А если публиковать и тестить на базе - все действительно работает.
Спасибо!
__________________
Семь перпендикулярных красных линий?
Мы же профессионалы...
Старый 11.04.2012, 10:58   #7  
g.Naukovych is offline
g.Naukovych
Участник
MCBMSS
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
405 / 130 (5) +++++
Регистрация: 23.03.2011
Когда мы разрабатывали CRM 4, то нам очень не нравилось постоянная публикация формы, и прочее для добавления и редактирования скриптов. Мы делали следующее.

В папку сайта ISV клали файл entitynameonload.js (вместо entityname может быть любой идентификатор)


На Onload формы интересующей нас сущности вешали следующий скрипт.
X++:
include = function (src) {
  var script = document.createElement('script'); 
  script.type = 'text/javascript'; 
  script.src = src+"?"+new Date().toString(); 
  document.getElementsByTagName('head')[0].appendChild(script);  
}
include('/isv/entitynameonload.js');
Что нам это даёт. Теперь если мы будем править файл entitynameonload.js, то изменения попадают на форму. Не нужно открывать кастомизацию и прочее.
Здесь даже можно переопределять события OnChange для полей.
X++:
crmForm.all.new_field.onchange = function ()
{ 
alert('change new_field');
}
Еще удобно в этом файле вызывать функции include для подключения других файлов. Таким образом можно разбивать скриптовые модификации на отдельные файлы. А не писать все в один большой онлоад.
Минусы этого подхода:
При переносе к клиенты Вы должны перенести и файлы. Не только кастомизацию. Но мне кажется это не настолько существенный минус, как время и нервый программиста.

Был интересный случай. одновременно одну форму разрабатывали 2 человека. При публикации этой формы каждый затирал изменения другого. При подобном подходе это невозможно, т.к каждый разрабатывает в отдльном файле.
__________________
Мой блог https://procrm.tv
За это сообщение автора поблагодарили: X-Lady (1).
Старый 11.04.2012, 13:20   #8  
X-Lady is offline
X-Lady
Участник
 
7 / 10 (1) +
Регистрация: 14.03.2012
Спасибо большое!

Подскажите, пожалуйста, еще - возможно ли настроить отдельную роль так, чтобы ограничения, накладываемые в OnLoad на нее не распространялись? В частности, чтобы пользователь с этой ролью мог устанавливать договору любое состояние (или иметь меньшие ограничения на выбор состояния договора)?
__________________
Семь перпендикулярных красных линий?
Мы же профессионалы...
Старый 11.04.2012, 13:34   #9  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Можно, но только при помощи скриптинга. Посмотрите следующую статью - http://jianwang.blogspot.com/2008/01...-security.html
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
Старый 20.04.2012, 15:57   #10  
X-Lady is offline
X-Lady
Участник
 
7 / 10 (1) +
Регистрация: 14.03.2012
Еще вопрос. На "тестовых" экземплярах получилось.
Пробую сделать полноценные условия - не получается. Если конкретно. Есть список состояний договоров.
(0) Согласовывается
(1) На подписи
(2) Подписан
(3) Выполнен
(4) К расторжению
(5) Расторгнут
(6) Приостановлен
(7) Восстановлен
(8) Закрытие ЛС
Цифры в начале - это для удобства, считая с 0.
Статусы Подписан, Выполнен и Восстановлен не должны быть доступны для выбора вручную никогда.
Если в OnLoad помещаем
crmForm.all.new_status.remove(2);
все здорово.
А если помещаем
crmForm.all.new_status.remove(2);
crmForm.all.new_status.remove(3);
crmForm.all.new_status.remove(7);
то убирает только второй. если менять последовательность и первым ставить, например, седьмой - убирает только седьмой.
А если пытаться прописать более сложные условия - в зависимости от текущего статуса скрыть часть статусов из списка.
Сейчас в OnLoad записано
if (crmForm.all.new_status.DataValue == "2") {
crmForm.all.new_status.remove(0);
crmForm.all.new_status.remove(1);
crmForm.all.new_status.remove(5);
}
В результате на одном из договоров:
Загружается в статусе На подписе, доступны Выполнен, К расторжению, Расторгнут, Приостановлен, Закрытие ЛС.

Совершенно не понятно, в чем дело (
__________________
Семь перпендикулярных красных линий?
Мы же профессионалы...
Старый 20.04.2012, 16:08   #11  
a33ik is offline
a33ik
Чайный пьяница
Аватар для a33ik
MCP
MCBMSS
Злыдни
Соотечественники
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,243 / 896 (36) +++++++
Регистрация: 02.07.2008
Адрес: Greenville, SC
Попробуйте убирать начиная от большего к меньшему. Когда у вас уберётся номер 2, то номер 7 станет 6, т.е.:

X++:
if (crmForm.all.new_status.DataValue == "2") {
crmForm.all.new_status.remove(5);
crmForm.all.new_status.remove(1);
crmForm.all.new_status.remove(0);
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit

Последний раз редактировалось a33ik; 20.04.2012 в 16:10.
За это сообщение автора поблагодарили: X-Lady (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
перенос данных из пиклиста в лукап mistah Dynamics CRM: Разработка 6 28.02.2012 13:28
отображение поля при выборе значения лукапа lin2nil Dynamics CRM: Разработка 7 30.09.2011 13:55
Как получить значения кастомных сущностей zkk Dynamics CRM: Разработка 2 16.02.2010 15:11
В какой таблице SQL хранятся значения PickList? Grigoriy Dynamics CRM: Разработка 1 29.09.2009 21:13
пустые значения при перегонки данных через migration Manager valk Dynamics CRM: Функционал 2 02.09.2008 19:52
Опции темы Поиск в этой теме
Поиск в этой теме:

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

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

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

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