Мне нужно переопределить метод GotoNext() датасета, чтобы он выполнял помимо стандартной своей функции еще одно дополнительное действие. Переопределение метода позволит избежать масштабных единообразных изменений в коде.

Есть ли такая возможность в Terrasoft 3.X?

Буду благодарен за примеры.

Нравится

4 комментария

Это не оно?

function ds_AccountOnDatasetBeforePositionChange(Dataset) {
	//TODO
}
 
function ds_AccountOnDatasetAfterPositionChange(Dataset) {
	//TODO
}

Или нужно во всех таблицах сразу?

"Зверев Александр" написал:Или нужно во всех таблицах сразу?

Это могут быть разные датасеты, не один какой-то конкретный, а какой попадется в тот момент.
В принципе, можно присвоить свой обработчик на событие AfterPositionChange.

Есть функция SetObjectEventDispatcher.

Пример в конфигурации:

//-------------------------------------
// wnd_MailTemplateLinkGridAreaScript
//-------------------------------------
 
...
 
 
function FillDataset(Dataset) {
...
}
 
 
function DoAdd() {
	var Dataset = MailTemplateLinkGridArea.ColumnsDataset;
	if (!Dataset) {
		Dataset = GetSingleItemByCode('mds_DictionaryTemplate', 
			'wnd_MailTemplateLinkGridAreaScript');
		Dataset.Caption = "Поле для связи сообщения";
		SetObjectEventDispatcher(Self, Dataset, Dataset.Name, 'OnDatasetAfterOpen',
			'FillDataset');
...
}

спасибо, пригодится

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

Может кто-нибудь пояснить мне разницу между методами получения значения полей данных в датасете:
* Dataset.ValAsGUID('') (ValAsStr, ValAsFloat etc)
* Dataset.Values('')
* Dataset('')

Например, я знаю, что Dataset.Values('') передает null, а ValAs... как правило нет

Нравится

1 комментарий

ValAsStr - конвертирует к строке
ValAsFloat - конвертирует к дробному числу
ValAsGUID - конвертирует к GUID (строка)
Если хранится null в поле, тогда он вернет либо пустую строку либо 0.

Dataset('') тоже самое что и Dataset.Values

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