Страница 1 из 1

Блокировка таблицы

Добавлено: 29 июн 2006, 13:31
aleks1232321
Доброго времени суток всем.
В интерфесе используется функция блокировки таблиц
ProtectRecord(#BaseDoc, true);
ProtectRecord(#SpStep, true);
ProtectRecord(#StepDoc, true);
Но при этом необходимо, чтобы одно из полей, например, BaseDoc.Name, было доступно для модификации. Как это сделать, кто-нибудь знает?

Методы типа: SetFieldOption, ClearFieldOption не проходят, пробовал

Заранее спасибо

Добавлено: 04 июл 2006, 09:00
Maverick
ProtectRecord блокирует СРАЗУ ВСЕ ПОЛЯ записи от ввода. Поэтому ни одна из функций не снимет эту защиту частично.
Не проще ли при описании скрина/броуза ненужным полям установить атрибут Protect, а нужным NoProtect ???

Добавлено: 07 сен 2007, 12:50
Гаврилюк Марина
где лежит найти описание функции protectrecord?

Добавлено: 07 сен 2007, 16:46
aleks1232321
Процедура ProtectRecord (integer, boolean)

Назначение

Устанавливает или снимает защиту от ввода для всей записи.

Описание

procedure ProtectRecord (iTable : integer; protect : boolean);
Параметры

iPanel : integer - номер панели.

protect : boolean - установить /снять защиту.

Добавлено: 10 сен 2007, 10:50
san
aleks1232321

ProtectRecord блокирует работу с буфером записи указанной таблицы, вы ни как не сделаете что бы часть буфера не блокировалось, т.к. это свойство одно для всей записи.

Добавлено: 11 сен 2007, 11:35
Гаврилюк Марина
procedure ProtectRecord (iTable : integer; protect : boolean);
Параметры

iPanel : integer - номер панели.
Что такое номер панели, извините?

Добавлено: 11 сен 2007, 11:47
aleks1232321
Описание взял из документации, даже не прочитав его, прошу простить.
:) Там конечно опечатка: не iPanel, а iTable - номер таблицы.
Вот несколько примеров

if (isProtected(#Oborot)) ProtectRecord(#Oborot,false);


if (CalPlan.Status <> 0)
ProtectRecord(#SpDocNal, true)
else
ProtectRecord(#SpDocNal, false);

Добавлено: 11 сен 2007, 13:07
Гаврилюк Марина
const
#include Tunes.inc
end;
#include CrTune.vih


VipInterface CreateTunePatch_USER Implements ObjCreateTunePlugin;

Interface CreateTunePatch_User;
var wState : word;
create view;

Public function SetLastDateModTune : date;
{
SetLastDateModTune := Cur_Date;
}

Public Procedure AddTunePatch(TR : objCreateTune);
{
TR.AddTune(ttUserTune,'RGHTBL.NOUPDATE.KLVAL','RGHTBL.NOUPDATE','каталога курсов валют',ftBoolean,'1','',0);
TR.SetNextNumberTune (5001);
TR.SetParent('0065000000000017h');
}
end.

#include TuneSpec.vih

VipInterface PostTunePatch_user implements ObjPostTunePlugin;

Interface PostTunePatch_user;
Create view;

Public Function PostUpdatePatch (TuneRef : TuneFuncObj; TuneCode : string; TuneObj : word; TuneUser : comp) : boolean;
{

PostUpdatePatch := true;

case UpCase(TuneCode) of
'RGHTBL.NOUPDATE.KLVAL':
{
if boGetTuneEx('RGHTBL.NOUPDATE.KLVAL',0,0065000000000017h)=1
{ _loop x$users
{
ProtectRecord(#CURSVAL, true);
^
неверная функция, параметр или метод
ProtectRecord(#KLVAL, true);
}
}
else
{_loop x$users
{
NoProtectRecord(#CURSVAL, true);
NoProtectRecord(#KLVAL, true);
}
}
else
PostUpdatePatch := false;
end; // case

} // PostUpdatePatch

end. // интерфейс

Ну и как с этим бороться?

Добавлено: 11 сен 2007, 13:10
PViP
попробуйте префикс tn вместо #.

Добавлено: 11 сен 2007, 13:50
Bulat-bash
попробуйте указать таблицы в create view