|
13.03.2009, 17:32 | #1 |
Участник
|
Формат времени
Здравствуйте!
Кто-нибудь знает, как изменить заполнение времени? Мне нужно, чтобы вместо 00:00 00:30 01:00 01:30 и т.д. получились только целочисленные значения с 9 до 18. Спасибо |
|
14.03.2009, 10:16 | #2 |
Moderator
|
Я думаю надо использовать Java Script. Контрол времени - обычный пиклист. Надо просто удалить из него соответствующие опции в событии OnLoad формы.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
15.03.2009, 19:22 | #3 |
Вопрошающий
|
Если речь идет о полях типа DateTime ( вторая часть поля, отвечающая за время), то как вариант:
1) во всех формах необходимо для этих полей установить режим отображения "только дата" 2) для каждого объекта создать атрибут типа picklist, минимальное значение для него установить 9, максимальное соответственно 18. 3) Опубликовать его на всех формах и представлениях для нужных объектов 4) На загрузку формы повешать JavaScript, который бы при создании новой записи устанавливал значение данного атрибута равное кол-ву полных часов (если речь идет о рабочем времени с 9 до 18) 4 пункт нужен для того чтобы система САМА могла правильно сотрировать данные при отображении в пердставлениях, при выбранной сортировке по полю Дата 5) на событие onChange созданного атрибута повешать скрипт (для корректности поведения записей определенного типа в системе) который бы устанавливал время в поле DateTime соответственно значению Вашего атрибута (09:00... 18:00)
__________________
Победивший противника - силен, победивший себя - величественнен |
|
|
За это сообщение автора поблагодарили: BSvetlana (1). |
16.03.2009, 09:32 | #4 |
Участник
|
Спасибо, Dissident!
Интересное решение. Мне нравится. Честно |
|
16.03.2009, 10:09 | #5 |
Вопрошающий
|
да чего уж там... стандартное решение вообще-то :-) подбную вещь мы применяли еще тогда, когда интегрировали CRM и Галактику-ERP. Как раз в части синхронизации полей типа "DateTime" CRM с полями типа Date и Time в галактике... так что все новое - это хорошщо забытое старое
__________________
Победивший противника - силен, победивший себя - величественнен |
|
16.03.2009, 19:14 | #6 |
Участник
|
Цитата:
Вообщем, взяв за основу код отсюда http://www.stunnware.com/crm2/topic.aspx?id=JS7, можно состряпать вот такой код для поля "Дата начала" в Задаче (вставляется в OnLoad): Код: var timeField = crmForm.all.scheduledstart.all.time; timeField.allowValueEdit = false; var tables = timeField.getElementsByTagName("table"); if ((tables != null) && (tables.length > 0)) { var table = tables[1]; while (table.firstChild != null) { table.removeChild(table.firstChild); } for (hour = 9; hour <= 18; hour++) { var row = table.insertRow(); var cell = row.insertCell(); var time = hour + ":00"; cell.setAttribute("val", time); cell.innerText = time; } } Останется маленькая неприятность - когда значение в поле не указано, то после выбора даты время будет указано "0:00". Но это можно вылечить, вставив в OnChange нашего поля такой код: Код: if(crmForm.all.scheduledstart.DataValue != null) { if(crmForm.all.scheduledstart.DataValue.getHours() == 0) { crmForm.all.scheduledstart.DataValue = crmForm.all.scheduledstart.DataValue.setHours(9); } } |
|
|
За это сообщение автора поблагодарили: Dissident (1), Артем Enot Грунин (4). |
16.03.2009, 22:07 | #7 |
Moderator
|
Да я тоже уже убедился, что там, к сожалению, не простой пиклист. Моих знаний DOM не хватило, что бы сделать универсальный код. Идея сотояла в том, чтобы просто изменить innerHtml элемента table, но данный подход значительно лучше. Спасибо. Осталось параметризовать и пользоваться!
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
20.03.2009, 11:42 | #8 |
Участник
|
Решение было следующим:
var timeField = crmForm.all.scheduledstart.all.time; timeField.allowValueEdit = false; var tables = timeField.getElementsByTagName("table"); if ((tables != null) && (tables.length > 0)) { var table = tables[1]; while (table.firstChild != null) { table.removeChild(table.firstChild); } for (hour = 9; hour <= 18; hour++) { var row = table.insertRow(); var cell = row.insertCell(); var time = hour + ":00"; cell.setAttribute("val", time); cell.innerText = time; } } Но после добавления своего кода и скрытия различных кнопок перестали работать бизнес правила на завершение задач |
|
20.03.2009, 12:41 | #9 |
Moderator
|
А чего вы хотели, если теперь никто не может нажать кнопку "сохранить как завершенную"? Бизнесс правила никак не связаны с кастомизациями формы. Они выполняются на сервере, код формы - на клиенте. Очевидно, что у вас перестало происходить само событие.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия. MS Certified Dirty Magic Professional |
|
|
Похожие темы | ||||
Тема | Ответов | |||
Учёт рабочего времени сотрудников в MSCRM 4.0 | 1 | |||
Формат документа "Задание на разработку" | 0 |
|