Страница 1 из 1
Обработка изменения настройки
Добавлено: 26 июн 2017, 14:12
Masygreen
Есть некоторая настройка
XXXX ftBoolean, надо чтоб после её
if (not boGetTune('XXXX')) изменения ряд настроек становились недоступными
TR.SetRghTune('XXXXX.YYYY',ttREAD);, и обратно если true
Вроде как есть
ObjPostTuneComponent, но как им пользоваться не пойму..хелп???
Код: Выделить всё
VipInterface ObjPostTune_mi_tune implements ObjPostTuneComponent licensed (FREE);
Interface ObjPostTune_mi_tune; // Cacheable;
Create view;
//------------------------------------------------------------------------------
// TR - ссылка на интерфейс TuneFunc.
// Возвращает False если обработка не производилась, иначе true
Public Function PostUpdateComponent(TR: TuneFuncObj; TuneCode: string; TuneObj: LongInt;
TuneUser: comp): boolean;
// Локальные переменные
var
vbSetChildTunesOn: boolean; //
var
vsTune_UpdRight: string; //
{
Re: Обработка изменения настройки
Добавлено: 26 июн 2017, 20:03
edward_K
Помимо всего подписывается обработчик (макроопределение в TuneSpec.vih)
Код: Выделить всё
#include TuneSpec.vih
#include PostFunc.vih
VipInterface PostTune_L_Sklad implements ObjPostTuneComponent licensed (FREE);
// Обработчик точки расширения epPostTuneComponentGetVipName
#HandlerPointExtPostTuneGetVipName(L_Sklad,48)
#doc
Дополнительные действия после редактирования настройки в компоненте L_Sklad
#end
Interface PostTune_L_Sklad;
Create view From
x$users
;
//******************************************************************************
#include ReesFunc.vpp
var ifcPost : PostFunc;
// Возвращает False если обработка не производилась, иначе true
Public Function PostUpdateComponent (TR : TuneFuncObj; TuneCode : string; TuneObj: LongInt; TuneUser : comp) : boolean;
{
//******************************************************************************
// Дополнительные действия после редактирования настройки
//******************************************************************************
// Входные параметры
// TuneCode: string - код настройки
// TuneObj: LongInnt - офис и/или филиал пользователя ( использовать функцию UserOfficeFilial(x$Users.atl_nrec))
// TuneUser: comp - ID пользователя
//******************************************************************************
// !!! Внимание !!!
// Строковые констаты кода настройки в CASE писать только в верхнем регистре
// 'UKS.FORMCODE.AUTOCODE': - правильно
// 'UKS.FormCode.RuleCode': - НЕправильно - Ваш пост-метод не сработает
// В остальных местах коды настроек можно писать в смешанном регистре.
//******************************************************************************
// !!! при изменении системной настройки и необходимости изменить связанную
// с ней пользовательскую, делать это ДЛЯ ВСЕХ пользователей,
// используя _LOOP x$users
//******************************************************************************
// !!! следует использовать TuneEdit_ для настройки возможности редактирования
// или TuneDisplay___ для настройки отображаемости значения настройки поля
// в зависимости от того, актуально ли ее значение при ее недоступности
// для редактирования
//******************************************************************************
// !!! В коде крайне желательно использовать комментарии
//******************************************************************************
var b : boolean;
var tmpWord : word;
PostUpdateComponent := true;
case TuneCode of
//******************************************************************************
'OPER.L_F':
{
var wT: word;
wT:= wGetTuneEx(TuneCode, TuneObj, TuneUser);
_loop x$users
{
if ( wT = 3 ) // ФИФО по складам
TR.TuneEditOn( 'Oper.CarryPartyLF', UserOfficeFilial(x$Users.atl_nrec), x$users.atl_nRec)
else
TR.TuneEditOff ('Oper.CarryPartyLF', UserOfficeFilial(x$Users.atl_nrec), x$users.atl_nRec);
}
}
.......
// если не зашли в case
else // case
PostUpdateComponent := false;
end; // case
//******************************************************************************
} // PostUpdateComponent
end. // интерфейс
Re: Обработка изменения настройки
Добавлено: 27 июн 2017, 12:36
Masygreen
Спасибо - дело в заглавных буквах было ...ппц .. как до этого можно догадаться???
Код: Выделить всё
/******************************************************************************
// !!! Внимание !!!
// Строковые констаты кода настройки в CASE писать только в верхнем регистре
// 'UKS.FORMCODE.AUTOCODE': - правильно
// 'UKS.FormCode.RuleCode': - НЕправильно - Ваш пост-метод не сработает
// В остальных местах коды настроек можно писать в смешанном регистре.
//******************************************************************************
Re: Обработка изменения настройки
Добавлено: 27 июн 2017, 12:46
edward_K
Найдите указанный vih - поймете. Иногда лучше придерживаться стандарта, а не делать свое.
На вход HandlerPointExtPostTuneGetVipName подаете любую(!) фразу (F_UserReportMY - она же должна быть в имени интерфейса), не совпадающую со стандартными компонентами, + номер побольше, типа 210. обработчики не должны пересекаться по номеру
Re: Обработка изменения настройки
Добавлено: 12 июл 2017, 11:00
Masygreen
edward_K писал(а):Найдите указанный vih - поймете. Иногда лучше придерживаться стандарта, а не делать свое.
На вход HandlerPointExtPostTuneGetVipName подаете любую(!) фразу (F_UserReportMY - она же должна быть в имени интерфейса), не совпадающую со стандартными компонентами, + номер побольше, типа 210. обработчики не должны пересекаться по номеру
а вот такой неожиданны вопрос как все левые "
" разрегистрировать? достаточно отключить ресурс и пересчитать настройки или где-то надо почистить еще ?
Re: Обработка изменения настройки
Добавлено: 12 июл 2017, 11:12
edward_K
достаточно ресурс отключить.