Скрипты
Разработка

настройка приветствие при добавлении контакта

Добрый день! помогите сделать в карточке контакты следующую вещь, при выборе приветствие чтобы сразу выпадал пол согласно приветствие, так как показано на скриншоте.

Нравится

5 комментариев

Здравствуйте, Виталий!

Для реализации такой функциональности нужно в обработчике OnDatasetDataChange Datalink карточки редактирования контакта выполнять проверку:

if (DataField.Name == 'SalutationID') {
// TO DO
}

А в теле if делаете проверку:

if (DataField.Value == [ID значения госпожа]) {
dlData.Dataset('GenderID') = [ID значения Женский];
} else
if... // по аналогии прописываете проверку для Мужской

Посмотреть значения для поля [Приветствие] можно в таблице tbl_Salutation, а для поля [Пол] - в перечислении enm_Gender.

Зашел в OnDatasetDataChange, у меня получилась такая проверка, ID подставил правильно, не понимаю почему не работает?

[javascript]
if (DataField.Name == 'SalutationID') {
if (DataField.Value == '1F87FD97-A663-4C02-8530-48951F912C6B') {
dlData.Dataset('GenderID') = '8CB0B216-3E35-47CE-8C31-8DFAA3C1548D';
} else
if
(DataField.Value == 'E285E1C6-841C-45CE-B5CD-B256C445DFFB') {
dlData.Dataset('GenderID') = '264EF705-6CC4-4E2F-9611-45531D04CBE7';
}
}
[/javascript]

Покажите весь код обработчика OnDatasetDataChange.

Для понимания того, почему код не работает, попробуйте выполнить пошаговую проверку и посмотреть, что происходит в данном куске кода.

[javascript]
function dlDataOnDatasetDataChange(DataField) {
var Dataset = DataField.ParentDataFields.ParentDataset;
var DataFieldName = DataField.Name;

if (DataFieldName.indexOf('Communication') == 0) {
var Index = DataFieldName.substr(13, 1);
var CommTypeDataControl =
Self.ComponentsByName('edtCommunication' + Index + 'Type');
var CommDataControl =
Self.ComponentsByName('edtCommunication' + Index);
RefreshCommunicationActionSmartTag(CommTypeDataControl, CommDataControl,
(DataFieldName.indexOf('Type') > -1));
}
if (!ContactEdit.IsUpdating){
switch (DataFieldName) {
case ('AccountID'):
if (!IsEmptyStr(DataField.DisplayValue)) {
ContactEdit.IsUpdating = true;
try {
FillInformationBySelectedItem(Dataset, DataField.Value,
DoYouWantToFillContactEntriesMessage);
} finally {
ContactEdit.IsUpdating = false;
}
}
break;
}
}

if (DataField.Name == 'SalutationID') {
if (DataField.Value == '1F87FD97-A663-4C02-8530-48951F912C6B') {
dlData.Dataset('GenderID') = '8CB0B216-3E35-47CE-8C31-8DFAA3C1548D';
} else
if
(DataField.Value == 'E285E1C6-841C-45CE-B5CD-B256C445DFFB') {
dlData.Dataset('GenderID') = '264EF705-6CC4-4E2F-9611-45531D04CBE7';
}
}

}

[/javascript]

Если бы Вы запустили debugger, то сразу бы поняли причину, почему не срабатывает этот код.
Попробуйте добавить Ваш код в начало обработчика.

Показать все комментарии