Необхідна ця функція, щоб працювати з даними відібраними користувачем. Достатньо просто передати посилання на датасет.
Зауважу, потрібно ще підключити scr_WindowUtils і scr_Processings.
Використовую цю функцію:
function WriteFieldValueToDataset(Dataset, FieldName, FieldValue) {
var ProgressBar = new Object;
ProgressBar.Caption = 'Внесення змін';
ProgressBar.Prompt = ' Виконується...';
ProgressBar.Window = System.EmptyValue;
var DatasetCount = Dataset.RecordsCount;
var OldFetchSetting = Dataset.FetchRecordsCount;
var StartCount = DatasetCount;
var i = 0;
BeginProcessingProgress(ProgressBar.Window, ProgressBar.Caption,
ProgressBar.Prompt, true, false);
Dataset.DisableEvents();
Dataset.FetchRecordsCount = -1;
RefreshDataset(Dataset);
Dataset.GotoFirst();
while (!Dataset.IsEOF){
Dataset.Edit();
Dataset(FieldName) = FieldValue;
Dataset.Post();
Dataset.GotoNext();
var ProgressWindow = MoveProcessingProgress(ProgressBar.Window,
(i++)*100/StartCount, true);
if (ProgressWindow.Attributes('CancelledByUser')) break;
}
Dataset.FetchRecordsCount = OldFetchSetting;
RefreshDataset(Dataset);
Dataset.EnableEvents();
EndProcessingProgress(ProgressBar.Window, true);
}
Мав проблему з тим, що датасет по замовчуванню вибирає частину записів. Тому потрібно тимчасово виконати:
Dataset.FetchRecordsCount = -1;
RefreshDataset(Dataset);
А потім повернути старе значення. Інакше будуть "тормоза".
Дякую, Денису Масалову за вчасну пораду!