Раздел: [[Программирование | ]] > [[РаботаСБазойДанных]] ---- BestPractices рекомендует следующий способ обойти все строки [[Класс/FormDataSource]], выделенные в [[Grid | ]] (раздел "Traversing multi selected records in a data source"): void clicked() { xRefReferences xRefReferencesEdit; // есть ли выделенные строки - for (xRefReferencesEdit = xRefReferences_ds.getFirst(1) ? xRefReferences_ds.getFirst(1) : //если есть, получаем первую xRefReferences; //иначе используем текущую запись // продолжаем, пока получаем записи xRefReferencesEdit; // выбираем следующую запись xRefReferencesEdit = xRefReferences_ds.getNext()) { // обработка xRefReferencesEdit ... } } К данной записи приложен [[file:!/Sys_FormDataSourceSelectionEnumerator.7z]], который инкапсулирует этот алгоритм перебора SYS_FormDataSourceSelectionEnumerator i = new SYS_FormDataSourceSelectionEnumerator(EmplTable_ds) while (i.moveNext()) info(int2str(i.current().recID)); === Обработка набора записей, переданных через Args === Если надо перебирать набор записей в классе, вызванным из MenuItem, FormDataSource можно получить так: static void main(Args _args) { FormDataSource ds=_args.record().dataSet(); EmplTable empl; ; // есть ли выделенные строки - for (empl = ds.getFirst(1) ? ds.getFirst(1) : _args.record(); empl; empl = ds.getNext()) { // обработка empl ... } }