15.12.2011, 09:58 | #1 |
Участник
|
дата изменения определенного поля, CRM 2011
коллеги и сотоварищи!
подскажите, пожалуйста, как узнать дату изменения конкретного поля в форме какой-либо сущности, и вывести её отдельным полем в форме этой же сущности! спасибо |
|
15.12.2011, 10:36 | #2 |
Консультант-джедай
|
Програмно (JS) выявлять изменение этнужного поля и заносить дату изменения в другое поле
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
|
За это сообщение автора поблагодарили: mistah (1). |
15.12.2011, 12:53 | #3 |
Чайный пьяница
|
Цитата:
Вам не кажется, что задача немного надумана? Зачем такой функционал нужен - какой бизнес-велью от такого функционала?
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
За это сообщение автора поблагодарили: mistah (1). |
15.12.2011, 13:25 | #4 |
Участник
|
Цитата:
Цитата:
к примеру, у некоего объекта есть цена, и чтобы понять насколько она актуальна - неплохо бы видеть дату последнего изменения цены. для написания плагинов, я так понимаю, надо c# знать, я пока не силен в нем. |
|
15.12.2011, 14:43 | #5 |
Участник
|
Написал скрипт, функция 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 |
Moderator
|
Разрешите аудит для поля цена. Получите историю изменения цены без единой строчки кода.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: mistah (1). |
15.12.2011, 14:57 | #7 |
Moderator
|
Если не хотите чтобы аудит нагружал систему, то можно завести рабочий процесс, который срабатывает на изменение поля "цена" и:
а) Обновляет поле "Последнее изменение цены" б) Создает примечание с заголовком "Изменилась цена". Так вы еще и историю получите.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: mistah (1). |
15.12.2011, 15:07 | #8 |
Участник
|
Артем Enot Грунин
О, спасибо большое |
|
15.12.2011, 15:08 | #9 |
Участник
|
Все же если кто подскажет, что не так со скриптом, буду благодарен!
|
|
15.12.2011, 15:13 | #10 |
Чайный пьяница
|
Попробуйте такое:
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 |
Консультант-джедай
|
Цитата:
Сообщение от mistah
Написал скрипт, функция first вызывается при загрузке, функция second - при сохранении. Скрипт плохой))
Так как, во-первых, не позволяет сохранять изменения, а, во-вторых, берет дату 01.01.1970. Подскажите, пожалуйста, как его подправить, чтобы он делал то, что надо. поле new_price - которое меняется, в поле new_date_price пишется дата.
__________________
Крокодил, крокожу и буду крокодить. Человек человеку - волк , а зомби зомби - зомби. Экстремал и буду экстремать! Блога |
|
|
За это сообщение автора поблагодарили: mistah (1). |
15.12.2011, 15:41 | #12 |
Участник
|
a33ik, спасибо! Теперь отрабатывает корректно, хотя дата возвращается почему-то все та же - 01.01.1970.
и на сервере время правильное |
|
15.12.2011, 15:45 | #13 |
Участник
|
Цитата:
Сообщение от slivka_83
Чет логики не пойму Вашего скрипта. Вам всего то нужно на onSave проверить изменилось ли поле с ценой (с помощью getIsDirty()) и если изменилось то записать текущую дату в поле с датой
логика такая - на онлоаде берем текущее значение, на онсэйве проверяем, равно ли оно новому значению, если нет - пишем дату куда следует. Последний раз редактировалось mistah; 15.12.2011 в 15:55. |
|
15.12.2011, 19:10 | #14 |
Moderator
|
Цитата:
Вот что это??? Код: crmForm.all.new_date_price.DataValue = day + month + year; Делать надо так, как сказал сливка. Если поле 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 |
Участник
|
Артем Enot Грунин, признаю, спасибо, все работает!
|
|
16.12.2011, 12:52 | #16 |
Moderator
|
Обращайтесь В вашем случае лучше все же использовать Workflow. Результат будет не мгновенный, но зато он будет, если кто-то, например, загрузит ваши данные из Эксель.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
За это сообщение автора поблагодарили: mistah (1). |
20.12.2011, 18:19 | #17 |
Участник
|
Цитата:
БП срабатывает на изменение нужного мне поля. БП пишет в кастомное поле ВРЕМЯ ВЫПОЛНЕНИЯ процесса и обновляет запись. Далее, я бы кастомное поле (где будет дата и время последнего редактирования отслеживаемого первого поля) бросил бы на форму и сделал бы ему field security - т.е. разрешил бы поле читать только нужным категориям юзеров. ЗЫ. А если очень надо, то БП можно запустить и из-под JS.
__________________
Материалы для внедренцев Microsoft Dynamics CRM теперь на сайте Infoleat.com и в моем блоге CRM для бизнеса |
|
20.12.2011, 22:43 | #18 |
Moderator
|
Цитата:
Цитата:
JS всемогущ, ибо воистину!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
21.12.2011, 13:06 | #19 |
Участник
|
Цитата:
Сообщение от Fighter
Я бы это реализовывал бизнес-процессом:
БП срабатывает на изменение нужного мне поля. БП пишет в кастомное поле ВРЕМЯ ВЫПОЛНЕНИЯ процесса и обновляет запись. Далее, я бы кастомное поле (где будет дата и время последнего редактирования отслеживаемого первого поля) бросил бы на форму и сделал бы ему field security - т.е. разрешил бы поле читать только нужным категориям юзеров. ЗЫ. А если очень надо, то БП можно запустить и из-под JS. Fighter, Да, я примерно так и сделал. Только процесс пишет в поле просто дату изменения карточки сущности при изменении нужного поля1. Про field security я успел подумать, но пока не реализовывал, сделал для поля Доступ на чтение. Про это ниже) Цитата:
Против диверсантов я решил применить к полю Доступ только на чтение. Но, что странно - теперь БП не запускается автоматически при изменении поля1 (нету в системных заданиях) . Если запустить вручную - прописывает дату, как положено. Если убрать Доступ только на чтение для поля - запускается автоматически при изменении поля1 и прописывает дату, как положено. Почему так может быть, у кого-нибудь есть идеи? |
|
21.12.2011, 13:54 | #20 |
Kostya Afendikov
|
Сделайте невозможность редактирования поля с помощью JScript на загрузке форме, а не в свойстве атрибута "на чтение"
|
|
|
За это сообщение автора поблагодарили: mistah (1). |
|
|