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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 15.12.2011, 09:58   #1  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
дата изменения определенного поля, CRM 2011
коллеги и сотоварищи!

подскажите, пожалуйста, как узнать дату изменения конкретного поля в форме какой-либо сущности, и вывести её отдельным полем в форме этой же сущности!

спасибо
Старый 15.12.2011, 10:36   #2  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Програмно (JS) выявлять изменение этнужного поля и заносить дату изменения в другое поле
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
За это сообщение автора поблагодарили: mistah (1).
Старый 15.12.2011, 12:53   #3  
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
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Програмно (JS) выявлять изменение этнужного поля и заносить дату изменения в другое поле
А если изменение было выполнено не с формы, а варкфловом например? Плагином это надо сделать.

Цитата:
Сообщение от mistah Посмотреть сообщение
как узнать дату изменения конкретного поля в форме какой-либо сущности, и вывести её отдельным полем в форме этой же сущности!
Вам не кажется, что задача немного надумана? Зачем такой функционал нужен - какой бизнес-велью от такого функционала?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: mistah (1).
Старый 15.12.2011, 13:25   #4  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Програмно (JS) выявлять изменение этнужного поля и заносить дату изменения в другое поле
спасибо, пробую)

Цитата:
Сообщение от a33ik Посмотреть сообщение
Вам не кажется, что задача немного надумана? Зачем такой функционал нужен - какой бизнес-велью от такого функционала?
a33ik.

к примеру, у некоего объекта есть цена, и чтобы понять насколько она актуальна - неплохо бы видеть дату последнего изменения цены.
для написания плагинов, я так понимаю, надо c# знать, я пока не силен в нем.
Старый 15.12.2011, 14:43   #5  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Написал скрипт, функция first вызывается при загрузке, функция second - при сохранении. Скрипт плохой))
Так как, во-первых, не позволяет сохранять изменения, а, во-вторых, берет дату 01.01.1970.
Подскажите, пожалуйста, как его подправить, чтобы он делал то, что надо.
поле new_price - которое меняется, в поле new_date_price пишется дата.


Код:
var data1;

function first()
{
data1 = crmForm.all.new_price.DataValue;
}

function second()
{
var currentTime = new Date();
var month = currentTime.getMonth();
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var data2 = crmForm.all.new_price.DataValue;
if (data1 !== data2)
{
crmForm.all.new_date_price.DataValue = day + month + year;
}
crmForm.Save();
}

Последний раз редактировалось mistah; 15.12.2011 в 14:53.
Старый 15.12.2011, 14:55   #6  
Артем 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
За это сообщение автора поблагодарили: mistah (1).
Старый 15.12.2011, 14:57   #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
За это сообщение автора поблагодарили: mistah (1).
Старый 15.12.2011, 15:07   #8  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Артем Enot Грунин

О, спасибо большое
Старый 15.12.2011, 15:08   #9  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Все же если кто подскажет, что не так со скриптом, буду благодарен!
Старый 15.12.2011, 15:13   #10  
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
Попробуйте такое:

X++:
function first()
{
window.data1 = crmForm.all.new_price.DataValue;
}

function second()
{
var currentTime = new Date();
var month = currentTime.getMonth();
var day = currentTime.getDate();
var year = currentTime.getFullYear();
var data2 = crmForm.all.new_price.DataValue;
if (window.data1 != data2)
{
crmForm.all.new_date_price.DataValue = day + month + year;
crmForm.all.new_date_price.ForceSubmit = true;//для случая когда поле заблокировано для редактирования
}
}
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством.

Подписывайтесь на мой блог, twitter и YouTube канал.
Пользуйтесь моим Ultimate Workflow Toolkit
За это сообщение автора поблагодарили: mistah (1).
Старый 15.12.2011, 15:36   #11  
slivka_83 is offline
slivka_83
Консультант-джедай
Аватар для slivka_83
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
1,683 / 374 (16) ++++++
Регистрация: 18.12.2008
Адрес: default city
Цитата:
Сообщение от mistah Посмотреть сообщение
Написал скрипт, функция first вызывается при загрузке, функция second - при сохранении. Скрипт плохой))
Так как, во-первых, не позволяет сохранять изменения, а, во-вторых, берет дату 01.01.1970.
Подскажите, пожалуйста, как его подправить, чтобы он делал то, что надо.
поле new_price - которое меняется, в поле new_date_price пишется дата.
Чет логики не пойму Вашего скрипта. Вам всего то нужно на onSave проверить изменилось ли поле с ценой (с помощью getIsDirty()) и если изменилось то записать текущую дату в поле с датой
__________________
Крокодил, крокожу и буду крокодить.
Человек человеку - волк , а зомби зомби - зомби.
Экстремал и буду экстремать!
Блога
За это сообщение автора поблагодарили: mistah (1).
Старый 15.12.2011, 15:41   #12  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
a33ik, спасибо! Теперь отрабатывает корректно, хотя дата возвращается почему-то все та же - 01.01.1970.
и на сервере время правильное
Старый 15.12.2011, 15:45   #13  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Цитата:
Сообщение от slivka_83 Посмотреть сообщение
Чет логики не пойму Вашего скрипта. Вам всего то нужно на onSave проверить изменилось ли поле с ценой (с помощью getIsDirty()) и если изменилось то записать текущую дату в поле с датой
slivka_83, спасибо, не знал
логика такая - на онлоаде берем текущее значение, на онсэйве проверяем, равно ли оно новому значению, если нет - пишем дату куда следует.

Последний раз редактировалось mistah; 15.12.2011 в 15:55.
Старый 15.12.2011, 19:10   #14  
Артем 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
Цитата:
Сообщение от mistah Посмотреть сообщение
a33ik, спасибо! Теперь отрабатывает корректно, хотя дата возвращается почему-то все та же - 01.01.1970.
и на сервере время правильное
Потому что вы какой-то треш написали!
Вот что это???
Код:
crmForm.all.new_date_price.DataValue = day + month + year;
Вы объекту типа Date присвоили число! JS привел число к дате как количество миллисекунд с 01.01.1970 0:00 так что вы имеете то что имеете!

Делать надо так, как сказал сливка. Если поле Dirty - обновлять поля. Хотя проще тупо на OnChange поля цена обновлять поле дата изменения цены:
Код:
crmForm.all.new_date_price.DataValue = new Date();
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: mistah (1).
Старый 16.12.2011, 08:44   #15  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Артем Enot Грунин, признаю, спасибо, все работает!
Старый 16.12.2011, 12:52   #16  
Артем 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
Обращайтесь В вашем случае лучше все же использовать Workflow. Результат будет не мгновенный, но зато он будет, если кто-то, например, загрузит ваши данные из Эксель.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
За это сообщение автора поблагодарили: mistah (1).
Старый 20.12.2011, 18:19   #17  
Fighter is offline
Fighter
Участник
Аватар для Fighter
 
108 / 31 (2) +++
Регистрация: 26.07.2011
Адрес: Kyiv
Записей в блоге: 12
Цитата:
Сообщение от mistah Посмотреть сообщение
коллеги и сотоварищи!

подскажите, пожалуйста, как узнать дату изменения конкретного поля в форме какой-либо сущности, и вывести её отдельным полем в форме этой же сущности!

спасибо
Я бы это реализовывал бизнес-процессом:
БП срабатывает на изменение нужного мне поля.
БП пишет в кастомное поле ВРЕМЯ ВЫПОЛНЕНИЯ процесса и обновляет запись.

Далее, я бы кастомное поле (где будет дата и время последнего редактирования отслеживаемого первого поля) бросил бы на форму и сделал бы ему field security - т.е. разрешил бы поле читать только нужным категориям юзеров.

ЗЫ. А если очень надо, то БП можно запустить и из-под JS.
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса
Старый 20.12.2011, 22:43   #18  
Артем 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
Цитата:
Сообщение от Fighter Посмотреть сообщение
Я бы это реализовывал бизнес-процессом:
БП срабатывает на изменение нужного мне поля.
БП пишет в кастомное поле ВРЕМЯ ВЫПОЛНЕНИЯ процесса и обновляет запись.
Ммм. Новая мысль в этом посте.
Цитата:
Сообщение от Fighter Посмотреть сообщение
Далее, я бы кастомное поле (где будет дата и время последнего редактирования отслеживаемого первого поля) бросил бы на форму и сделал бы ему field security - т.е. разрешил бы поле читать только нужным категориям юзеров.
Назачем? Никаких требований секретности не озвучивалось. Если вы опасаетесь, что диверсанты впишут туда странные вещи, проще заблокировать поле на форме.
Цитата:
Сообщение от Fighter Посмотреть сообщение
ЗЫ. А если очень надо, то БП можно запустить и из-под JS.
JS всемогущ, ибо воистину!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 21.12.2011, 13:06   #19  
mistah is offline
mistah
Участник
 
169 / 13 (1) ++
Регистрация: 11.11.2011
Адрес: Коньково
Цитата:
Сообщение от Fighter Посмотреть сообщение
Я бы это реализовывал бизнес-процессом:
БП срабатывает на изменение нужного мне поля.
БП пишет в кастомное поле ВРЕМЯ ВЫПОЛНЕНИЯ процесса и обновляет запись.

Далее, я бы кастомное поле (где будет дата и время последнего редактирования отслеживаемого первого поля) бросил бы на форму и сделал бы ему field security - т.е. разрешил бы поле читать только нужным категориям юзеров.

ЗЫ. А если очень надо, то БП можно запустить и из-под JS.

Fighter,
Да, я примерно так и сделал. Только процесс пишет в поле просто дату изменения карточки сущности при изменении нужного поля1. Про field security я успел подумать, но пока не реализовывал, сделал для поля Доступ на чтение. Про это ниже)

Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Ммм. Новая мысль в этом посте.

Назачем? Никаких требований секретности не озвучивалось. Если вы опасаетесь, что диверсанты впишут туда странные вещи, проще заблокировать поле на форме.

JS всемогущ, ибо воистину!
Артем Enot Грунин,
Против диверсантов я решил применить к полю Доступ только на чтение.
Но, что странно - теперь БП не запускается автоматически при изменении поля1 (нету в системных заданиях) .
Если запустить вручную - прописывает дату, как положено.
Если убрать Доступ только на чтение для поля - запускается автоматически при изменении поля1 и прописывает дату, как положено.

Почему так может быть, у кого-нибудь есть идеи?
Старый 21.12.2011, 13:54   #20  
Bondonello is offline
Bondonello
Kostya Afendikov
Аватар для Bondonello
MCBMSS
Лучший по профессии 2009
 
510 / 106 (5) +++++
Регистрация: 06.06.2008
Адрес: Украина
Сделайте невозможность редактирования поля с помощью JScript на загрузке форме, а не в свойстве атрибута "на чтение"
За это сообщение автора поблагодарили: mistah (1).
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Leon's CRM Musings: Dynamics CRM vs Salesforce: User Adoption July 2011 Blog bot Dynamics CRM: Blogs 0 10.09.2011 18:13
jodonnell: Great Microsoft Dynamics CRM blog posts you may have missed weeks 2 and 3 Aug 2011 Blog bot Dynamics CRM: Blogs 0 26.08.2011 01:13
crminthefield: Overview: Microsoft Dynamics CRM 4.0 Update Rollup 19 Blog bot Dynamics CRM: Blogs 0 26.08.2011 01:13
Leon's CRM Musings: Review of the Latest Dynamics CRM Statement of Direction (May 2011) Blog bot Dynamics CRM: Blogs 0 22.05.2011 04:13
Microsoft Dynamics CRM Team Blog: Building Rich-Client Dashboards for Microsoft Dynamics CRM with Windows Presentation Foundation Blog bot Dynamics CRM: Blogs 1 31.03.2009 13:24

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

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

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