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

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

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

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

Нравится

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

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

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

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

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

Событие на ds_Contact.

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

Вот нужное вам событие:

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

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

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

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

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

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

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

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

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

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