01.10.2013, 12:08 | #1 |
Участник
|
Сброс PickList при загрузке Формы
Добрый День в очередной раз уважаемые коллеги!!!
Столкнулся вот с какой ситуацией: На форму добавлено поле с выбором параметров, и по умолчанию выставлено определенное значение из списка. И при загрузке формы (OnLoad событие для других скриптов) сбрасывается значение этого пиклиста в значение по умолчанию (Пустое) Что не есть правильно. Каким то образом это можно исправить? Чтоб при загрузке формы не сбрасывалось значение. Не прибегая к дополнительным разработкам??? |
|
01.10.2013, 12:27 | #2 |
Еда - топливо, Одежда - н
|
Вообще-то в свойствах поля есть (значение по умолчанию).
Как раз при CREATE оно и будет светиться. (но насколько я понял, вы уже в курсе этого) Если JS сбрасывает значение поля, то смотрите коды. Больше у меня нет идей. |
|
01.10.2013, 12:45 | #3 |
Участник
|
Самое то интересное то что для этого списка выставляю специально нужное значение, (не пустое) и наблюдаю что при загрузке оно долю секунды все таки высвечивается, но потом пропадает (т.е.) сбрасывается
На само поле не назначено ни одно событие и в коде нет ни одного пересечения с этим полем. |
|
01.10.2013, 12:49 | #4 |
Участник
|
Если можно прикрепите весь скрипт с формы и скрин формы с указанием поля которое нулится.
Потому что тут нечего рассуждать. Если при создании не выставляется по умолчанию то у вас точно скрипт что-то мутит. |
|
01.10.2013, 15:49 | #5 |
Участник
|
Скрипт:
X++: function optionSetChanged() { var _collection = getCollection(); var _selectedCategory = null; var _categoryOptionset = Xrm.Page.ui.controls.get("new_category"); if (_categoryOptionset != null) _selectedCategory = _categoryOptionset.getAttribute().getValue(); var _categoryOptions = _categoryOptionset.getAttribute().getOptions(); var _selectedCampaign = Xrm.Page.getAttribute("new_typecampaign").getText(); if (_selectedCampaign == "") { _categoryOptionset.clearOptions(); } else { for (var i = 0; i < _collection.length; i++) { if (_selectedCampaign.toLowerCase() == _collection[i].Campaign.toLowerCase()) { _categoryOptionset.clearOptions(); for (var j = 0; j < _collection[i].Categories.length; j++) { for (var k = 0; k < _categoryOptions.length; k++) { if (_collection[i].Categories[j].toLowerCase() == _categoryOptions[k].text.toLowerCase()) { _categoryOptionset.addOption(_categoryOptions[k]); break; } } } break; } } if (_categoryOptionset != null && _selectedCategory != null) _categoryOptionset.getAttribute().setValue(_selectedCategory); } } function getCollection() { var _collection = new Array(); var Kholod_Categories = new Array("Интерес", "Отложенный Интерес", "Информация отправлена", "ЛК зарегистрирован", "Вебинар интересен", "Мероприятия приглашать", "Отказ", "Отказ. Не профильный", "Перезвонить", "Уточнить контакты", "Недозвон"); var Kholod_obj = { Campaign: "Холодный Обзвон", Categories: Kholod_Categories }; _collection.push(Kholod_obj); var Marketing_Categories = new Array("Интерес", "Отложенный Интерес", "Приглашение отправлено", "Зарегистрирован", "Пришел", "Не пришел", "Отказ", "Отказ. Не профильный", "Перезвонить", "Уточнить контакты", "Недозвон", "Рассматривают приглашение", "Заинтересован участвовать", "Напомнили о регистрации"); var Marketing_obj = { Campaign: "Маркетинговый Обзвон", Categories: Marketing_Categories }; _collection.push(Marketing_obj); var Information_Categories = new Array("Информация отправлена", "Требуется консультация", "Проинформирован", "Отказ", "Перезвонить", "Уточнить контакты", "Недозвон", "Интерес"); var Information_obj = { Campaign: "Информационный Обзвон", Categories: Information_Categories }; _collection.push(Information_obj); return _collection; } вот ссылка на видео, где все показано: ВИДЕО удобнее скачать к себе на комп и посмотреть в полноэкранном режиме |
|
01.10.2013, 16:01 | #6 |
Еда - топливо, Одежда - н
|
меня смутил тот факт, что в первых 2 записях вообще не отображается значение поля "тип кампании" в верхнем колонтитуле (при открытии).
А вот в 3-й записи отображается и поле не чиститься... Может оно вообще в базу не записывает? Проверьте просто в базе, есть ли значение в это поле для этих записей? Кстати, еще так, ради интереса. Какая нумерация этих значений в поле "тип кампании"? Можете показать? ну там - 10009001 или что-то в этом роде... И посмотрите, не пересекаются эти номера с еще какими-то значениями в других сущностях... Последний раз редактировалось -O_o-; 01.10.2013 в 16:06. |
|
01.10.2013, 18:55 | #7 |
Участник
|
Предлагаю через расширенный поиск посмотреть на колонку Тип кампании.
Думаю там в 1 и 2 будет пусто а в 3 заполнено. Так как дата создания последнего сегодня там походу все "ок", а в 1 и 2 оно скидывает его в null а так как select не содержит пустого option это заметно. А если там значения есть то возможно у них поменялись номера (Value). Вы такого не делали ? и предлагаю еще дописать в код после Код: function optionSetChanged() { Код: alert("Name: "+Xrm.Page.getAttribute("new_typecampaign").getText()+"Value: "+Xrm.Page.getAttribute("new_typecampaign").getValue()); |
|
01.10.2013, 19:03 | #8 |
Участник
|
Меня именно это и настораживает в том что при при открытии этих форм оно то и чистится, а в последнем нет. Это и послужило началом дискуссии
нумерация стандартная 100 000 0ХХ - не пересекается с другими сущностями. последняя запись она последняя в представлении и поэтому (почему то) данные как надо не очищаются. Смущает лишь тот факт что создавая любое поле с набором параметров - и выставляя их на различные сущности (Звонок, Задача, Факс, контакт и т.д. ) и устанавливая значение по умолчанию - оно очищается - если запись не последняя в представлении. Отвечая саму себе на мой же вопрос - а что мешает при загрузке формы выставить это значение самому? в принципе ни чего. Одно смущает - зачем добавлять код на действие функционала который уже существует в системе. |
|
01.10.2013, 19:19 | #9 |
Участник
|
Цитата:
Так как дата создания последнего сегодня там походу все "ок", а в 1 и 2 оно скидывает его в null а так как select не содержит пустого option это заметно.
А если там значения есть то возможно у них поменялись номера (Value). Вы такого не делали ? Значения номеров параметров не менял, так как только что их создал. сейчас добавил несколько записей - в новых все в порядке, а в старых обнуляется |
|
02.10.2013, 10:14 | #10 |
Участник
|
Ну вот как оказалось все просто
CRM при создании нового атрибута (В SQL это столбец таблицы) все старые записи будут с знацением NULL в этом поле. Так как за заполнение этого должен отвечать интерфейс. И еще если был бы функционал который выставляет значение по умолчанию в старые записи, то прикиньте вы создали поле выставили значение по умолчанию и всем старым записям оно поставилось, а потом оказалось что это не то значение по умолчанию и что бы в этом случаи должен был сделать СРМ ? Так что все там логично. А чистится так как я и писал: Цитата:
оно скидывает его в null а так как select не содержит пустого option это заметно.
|
|
02.10.2013, 12:45 | #11 |
Участник
|
А как быть если с 100% вероятностью я уверен в том что это поле нужно в старых записях, как заставить СРМ все таки эти поля обновить?
Можно конечно на форме скрипт сделать который будет проверять дату создания записи, и в зависимости от разницы в дате устанавливать параметр. |
|
02.10.2013, 12:50 | #12 |
Еда - топливо, Одежда - н
|
если записей не особо много, то сделайте БП на обновление с запуском вручную.
Выберите записи у которых нет значения и на них запустите этот БП. |
|
02.10.2013, 12:59 | #13 |
Участник
|
Да вариантов хватает.
|
|
02.10.2013, 13:34 | #14 |
Участник
|
Спасибо огромное!!!
Все получилось обновить с помощью БП |
|
|
|