@GetDocField( documentUNID; fieldName)
возвращает значение поля с именем fieldName документа с уникальным номером documentUNID
@SetDocField( documentUNID ; fieldName ; newValue)
присваивает значение newValue полю с именем fieldName документа с уникальным номером documentUNID
вся фенька в том, где взять этот самый documentUNID (дальше буду писать UNID, заебало =))
первый вариант - функция
@DocumentUniqueID которая возвращает UNID текущего документа, то есть нам надо сформировать список документов с полями, содержащими UNID, вывести эти самые иды в представлениях и вывести ещё один столбец - ну, допустим, тоже имя ... продолжим маразм?..
1. итак, создаём computed-поле (UNID) c формулой @DocumentUniqueID (картинку не буду показывать, это вы знаете) и скроем его от лишних глаз (предпоследняя закладка, Hide paragraf from/Notes 4.6 or later)
2. добавляем во view 4-ую колонку (UNID) с выводом значения поля UNID документа (сначала используйте формулу @Text(UNID), чтобы увидеть, задалось ли оно для старых значений)
3. пройдитесь по всем документам в представлении, пересохранив их, должны появляться значения в столбце UNID примерно такого вида:

впринципе, юзеру это поле не нужно, так что скроем его =)
теперь что? попробуем использовать это значение? =)
создадим новую форму (adm), пихнём туда поле"new name" (text, editable) и кнопку "change!" (create-hotspot-button)
теперь, - программирование нажатия кнопки, по которой что сделаем?
1. создадим два массива для имён и unid'ов (чтобы искать unid по имени)
names:=@DbColumn("":"NoCache";@DbName;"ex_vw";2);
UNIDs:=@DbColumn("":"NoCache";@DbName;"ex_vw";4);
2. запросим у пользователя, какое имя бы он хотел изменить
needName:=@Prompt([OkCancelList];oldName+"select name, who change";"";"";names+", "+UNIDs);
так как мы использовали список с unid'ами (типа для наглядности), приведём взятое значение (то, которое вернула prompt) к только имени
needName:=@Left(needName;",");
3. узнаем, каким стоит выбранное имя в списке имён (его UNID - с тем же номером в другом масиве)
n:=@Member(needName;names);
unid:=UNIDs[n];
4. выводим подтверждение действия
answ:=@Prompt([YesNo];"sure?";"selected name is " + needName+" (unid: "+@Text(unid)+") true?");

и если мы соглашаемся, то устанавливаем новое значения поля
@If(answ;@SetDocField(unid;"name";newName);"");
проверяем, правда ли оно установилось...
@Prompt([ok];"new value is:";@GetDocField(unid;"name"));

обновяем представление и хоп - смотрим, обновилось!! =) работает ) ы.















