Технические вопросы
Разработка

Отображение данных в одном поле из разных справочников

Добрый день, Уважаемые знатоки CRM.

У меня вот какая проблема. Заказщик хочет видеть в одном поел данные с разных справочников. Поле ФИО я переименовал в Полное Имя. создал дополнительные поля от дельно для Имени и Фамилии. Теперь нужно все данные с этих полей вставлять автоматически в поле (Полное Имя). А как это сделать немного затрудняюсь.
Кто сталкивался раньше с такой проблемой, подскажиет пожалуйста как вы ее решили.

Благодарю за скорый ответ.

Нравится

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

При заполнении полей Имя и Фамилия заполнять поле Полное Имя автоматически (по анологии с заполнение поля "обращение") и выводить его как основное поля для отображения.
Если я правильно понял вопрос.

да именно так.

Используйте событие OnDataGhange используемого Dataset-а.

Позвольте уточнить. Событие на wnd_ContactEdit?!
Проверил все события и такой функции что-то не нашел.

Событие на ds_Contact.

Получается на Поле(Name) его событие(OnDatasetChangeDataField)и там как я понял нужно писать скрипт?!

Вот нужное вам событие:
[javascript]
function SelfOnDatasetDataChange(DataField) {
if ((Contact.IsUpdating || !Assigned(DataField) ||
(IsEmpty(DataField.Value)))) {
return;
};
var Dataset = DataField.ParentDataFields.ParentDataset;
Contact.IsUpdating = true;
try {
if (DataField.Name == 'Name') {
var Dear = GetDearFromName(DataField.Value);
Dataset.Values('Dear') = Dear;
return;
}
if (!Assigned(DataField.LookupDataset)) {
return;
}
if ((DataField.LookupDataset.State == dstInactive) &&
(DataField.Name != 'CountryID')) {
return;
}
if (DataField.Name == 'JobID') {
var JobTitle = DataField.LookupDataset.Values('Name');
Dataset.DataFields('JobTitle').Value = JobTitle;
return;
}
if (DataField.Name == 'AccountID') {
var LookupDataset = DataField.LookupDataset;
if (!IsEmptyStr(DataField.DisplayValue)) {
FillInformationBySelectedItem(Dataset, LookupDataset,
DoYouWantToFillContactEntriesMessage);
}
return;
}
ProcessAddressFieldChanged(DataField);
} finally {
Contact.IsUpdating = false;
}
}
[/javascript]

Всетаки придется писать скрипт((( А с этим у меня проблема:exclaim: Я по администраторской части больше.
Может вы мне сможете помощь?! Буду вам признателе и благодарен.

Вячеслав, добрый день.

Допустим, Вы создали два дополнительных поля для имени и фамилии с названиями FirstName и LastName. Поле "Полное имя" у Вас носит название Name.

Для реализации необходимой Вам функциональности Вам необходимо добавить примерно такой код в вышеупомянутую функцию SelfOnDatasetDataChange:

[javascript]
if ((DataField.Name == 'FirstName') || (DataField.Name == 'LastName')) {
var FirstName = Dataset.ValAsString('FirstName');
var LastName = Dataset.ValAsString('LastName');
if ((FirstName != '') && (LastName) != '') {
FirstName = FirstName + ' ';
}
Dataset.Values('Name') = FirstName + LastName;
return;
}
[/javascript]

Этот код необходимо вставить перед строчкой ProcessAddressFieldChanged(DataField);

Данный код приводится в качестве примера. Для корректной работы в Вашей конфигурации его необходимо отредактировать (например, заменить 'FirstName' и 'LastName' на названия полей в Вашей конфигурации).

Олег Лабьяк,
разработчик,
3-я линия Службы поддержки Terrasoft.

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