Добрый день!
Требуется при создании документа задать некоторые значения. В частности, при создании накладной нужно поле SROKRES установить в текущую дату. Как это можно сделать?
Первым делом решил, что сделаю с помощью триггера. Почитал документацию - вроде как не для этого они, но тем не менее написал следующий триггер:
handler ib1 on trigger KATSOPR after insert [99]
action
{
var buf : record as table KATSOPR;
GetTableBuffer(buf);
buf.SROKRES := cur_date;
SetTableBuffer(buf);
result := true;
}
Не работает... Хотя и выполняется. Подскажите, как быть?
GetTableBufferP почитайте.
объявлять тогда тоже нужно по другому
var buf : record as table KATSOPR with x$position ;
и в SetTableBuffer четко написано, что применять можно тока в before тригерах.
handler ib1 on trigger KATSOPR before insert [99]
action
{
var buf : record as table KATSOPR with x$position;
GetTableBufferP(buf);
set buf.SROKRES := cur_date;
SetTableBuffer(buf);
result := true;
}
handler ib1 on trigger KATSOPR before insert [99]
action
{
var buf : record as table KATSOPR;
GetTableBuffer(buf);
set buf.SROKRES := cur_date;
SetTableBuffer(buf);
result := true;
}
А если использовать настройку
AddTune (ttSysTune, 'Reserv.SrokReserv','OPER.Reserv','Срок резерва (дней) по умолчанию',ftWord,'3','',hcPeriod_SrokReserv), поставив срок резерва = 0?
У нас резервирование вообще не используется, зато остро встает вопрос даты ввода документов в Галактику. Нужно, чтобы эта дата формировалась автоматически и всем была видна. В накладной выбрал неиспользуемое (в нашем случае) поле SROKRES, вывел конфигуратором для просмотра. Поэтому автоматическое резервирование не включаю, а с выключенным ничего не происходит - у нас и так стоит 0.
База у вас случайно не SQL?
Если да, то проще не проще ли изменить триггер на insert?
Объявить переменную, присвоить ей текущую дату и записать ее в требуемое поле
-- Force update header fields:
UPDATE T$KATSOPR SET
F$Atl_LastDate=@LastDate,
F$Atl_LastTime=@LastTime,
F$Atl_LastUser=@LastUser,
F$Atl_OriginOffice=@OriginOffice
<где-нибудь здесь>
FROM Inserted WHERE T$KATSOPR.F$NREC=Inserted.F$NREC