Scatter() – читает содержимое текущей записи в массив значений по порядку полей в записи.
Самый лучший способ понять работу функции - провести опыты.
если заявлено, что читает в массив, значит объявляем массив
открываем базу и пробуем scatter() и проверяем результат.
Для примеров, берем Инструментарий разработчика с исходными кодам функций и примерами использования и изучаем.
Для этого делаем поиск файла содержащий текст scatter по всем каталогам с программами (из фара очень удобно, отметить и поиск по отмеченным).
потом из результатов берем и открываем, по f7 сразу попадешь на найденную функцию.
вот к примеру что нашел
Код:
FUNCTION ScatterS(buf)
// запоминает в 2-мерный массив {<имя поля>,<значение>}
IF buf == NIL
buf := ARRAY(FCOUNT())
ENDIF
If LEN(buf)>0
AEVAL(buf,{|x,i| buf[i] := {FIELDNAME(i),FIELDGET(i)} })
EndIF
RETURN (buf)
/**********
* Function: Gather()
* Notes: write to database from array to current record
***/
FUNCTION Gather(aBuf,aLogic)
//[aLogic]-массив длиною как aBuf - значащее поле (.T.) или нет (.F.), в этом случае пмшутся только значащие
LOCAL lRecLock
IF (lRecLock := (ASCAN(dbRLockList(),{|nRec| nRec = RECNO() }) != 0)) .OR. RecLock()
AEVAL(aBuf, {|x,i|IF(EMPTY(aLogic).OR.aLogic[i],FIELDPUT(i,x),NIL)},1,FCOUNT())
IF !lRecLock
dbUnlock()
ENDIF
ENDIF
RETURN (FCOUNT())
Примеров использования много, и понять несложно
скачать инструментарий можно на spb4plus.ru