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

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

Нравится

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 подставил правильно, не понимаю почему не работает?

	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';
} 
}

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

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

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';
} 
}
 
}
 

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

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