Добрый день! помогите сделать в карточке контакты следующую вещь, при выборе приветствие чтобы сразу выпадал пол согласно приветствие, так как показано на скриншоте.
Нравится
Здравствуйте, Виталий!
Для реализации такой функциональности нужно в обработчике 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, то сразу бы поняли причину, почему не срабатывает этот код.
Попробуйте добавить Ваш код в начало обработчика.