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

Добавить поле конфигуратором

Добавлено: 15 фев 2008, 19:32
Sytin
Необходимо в реестре заявок добавить поле конфигуратором, чтобы была возможность сортировки по этому полю. В свойствах поля при конфигурации я такого не нашел. Возможно нужен какой-то индекс? Хотя поиск по этому полю работает... Или возможно как-нибудь это реализовать програмно... Очень надо. Буду очень признателен за помощь.

Добавлено: 16 фев 2008, 00:16
edward_K
ну конфигуратором вряд ли вы сортировку организуете.
alter interface - быть может.
ну а для затравки у меня такой примерчик завалялся.
работать правда статус строка

interface test9 (,,scSort) DoAccept;
create view as select * from X$Files
order ByName by xf$Name
order ByCode by xf$Code;

browse DepBrowse1;
fields
xf$name 'Имя файла ';
xf$code 'Код файла';
end;

handleevent
cmInit : ClearColumnsSorting(DepBrowse1);
cmColumnClicked : {
case GetColumnSorting(DepBrowse1,Target) of
0: {
SetColumnSorting(DepBrowse1,Target,-1);
if Target=#xf$Name then SetOrder(tiByName)
else SetOrder(tiByCode);
RescanPanel(DepBrowse1);
}
-1: {
SetColumnSorting(DepBrowse1,Target,0);
}
end;
}
end;
end.

Добавлено: 26 фев 2008, 14:40
Sytin
Попробовал alter interface.

#component "M_MNPLAN"

alter Interface BOOKINGS;

create view
//as select INDENT.NOPER
order byColumn by INDENT.NOper (Desc);

handleevent
cmColumnClicked : {
if (Target=#INDENT.NOPER){
SetOrder(tiByColumn);
}
}
end;
end.

При нажатии на шапку колонки пишет что "Внешняя выгрузка на мемополях не работает"...((((

Добавлено: 26 фев 2008, 14:55
edward_K
1.добавте еще message. чтобы точно быть уверенным.
2. просто одну колонку добавлять не хорошо - надо бы что бы order совпало с фильтрами - чтобы не уйти на внешнюю выгрузку.
3. В выборке есть таблица с мемополем. Потренеруйтесь, на чем нибудь попроще.
4. view там вообще то называется Bookings_v.

Добавлено: 28 фев 2008, 17:20
Sytin
Еще вопрос. Можно ли троссировать свои интерфейсы, и как это делать? У меня при попытке троссировки пишет, что функции родительского интерфейса не загрузились. И еще вопрос : что такое символьная информация интерфейса???

Добавлено: 28 фев 2008, 17:28
edward_K
свои можно - имея исходники в сапорте через компилятор фейсов. где то была подробная дока как настраивать(ну или vip /r), вроде можно и в галке потом, тока нужно ключики при компиляции( год назад баловался с этим - уже не помню - мне logstrtofile ближе). А вот стандартные врядли. Что такое "симв" фиг его знает - вы где сие увидели?

Добавлено: 28 фев 2008, 17:38
Sytin
Я про троссировку наверно неправильно выразился... Я имел ввиду докомпиляцию для своих интерфейсов. Я свой интерфейс регестрирую в репозитарии, а потом пытаюсь сделать для него докомпиляцию при помощи alter interface. Пишет, что функции родительского интерфейса не загрузились. А про символьную информацию это из доки по докомпиляции. Там написано, что докомпилировать интерфейс можно только при наличии у интерфейса символьной информации...

Добавлено: 28 фев 2008, 21:42
edward_K
ну там рядом написано - Compilers.InhSaveLevel=3

Добавлено: 29 фев 2008, 14:59
Sytin
Спасибо огромное за помощь! Что хотел все получилось))

Добавлено: 29 фев 2008, 19:09
Sytin
Возник еще один вопросик.
Я докомпилирую интерфейс и создаю в нем при помощи функций конфигуратора кнопку. Хочу этой кнопке назначить свое событие. Его надо сначала как-то зарегистрировать??

Добавлено: 29 фев 2008, 21:17
edward_K
кусок текста в студию.
вообще можете использовать cmValue1 - cmValuе61 - если уверены что в фейсе не используется.

Добавлено: 29 фев 2008, 21:33
Sytin
Да вроде с этим разобрался. Тупо добавил папочку INC в свой проект и дописал там в константах свою cmButSP. У меня теперь другая проблема. Я добавил кнопку не в скрин интерфейса, а в скрин его окна. Теперь хочу обработать событие нажатия кнопки, как сейчас не работает((

Вот код:


#component "L_DOGOVOR"

alter Interface Dogovor;

var aList: array [1..1] of string;
var i, n, rc, self: longInt;
var fullName, cont, objType: string;
var ButSP : longint;


handleevent
cmInit:{
inherited :: handleEvent (cmInit);
}

cmButSP:{
inherited :: handleEvent (cmButSP);
message('opa');
CloseInterface(cmDefault);
stop;
}

cmValue2:{
message('opaopa');
inherited :: handleEvent (cmButSP);
}

cmDefault:{
if (KATVIDD.NAME='Подряд'){
cfsSetProp('WIDOGOVOREDITMAIN','RectB_X',188);
cfsSetProp('scDogovorEditMainHead','RectB_X',188);
cfsSetProp('SCDOGOVOREDITMAIN','RectB_X',188);

cfsCreateObject ('button','scDogovorEditMainHead','butSP',FALSE,ButSP);
cfsSetProp('butSP','Origin_X',830);
cfsSetProp('butSP','Origin_Y',40);
cfsSetProp('butSP','Size_X',200);
cfsSetProp('butSP','Size_Y',40);
cfsSetProp('butSP','Title','Доровора субподряда');

cfsSetProp('butSP','StatusCtx',sci13Esc);
cfsSetProp('butSP','Command',cmButSP);

}else{
cfsSetProp('WIDOGOVOREDITMAIN','RectB_X',88);
cfsSetProp('scDogovorEditMainHead','RectB_X',88);
cfsSetProp('SCDOGOVOREDITMAIN','RectB_X',88);
}
inherited :: handleEvent (cmDefault);
}

end;

end.

Там в этом окне кнопка "Контрагент1" вызывает событие cmValue2. Таким образом перегрузить тоже не получилось...

Добавлено: 06 мар 2008, 14:33
Sytin
Поясню свою проблему подробней.
Докомпилирую интерфейс Dogovor.
В нем есть окно 'WIDOGOVOREDITMAIN'.
В этом окне обрабатывается событие cmValue2.
Я хочу перегрузить обработку этого события.
В обработчике HandleEvent главного окна перегрузка не работает...

Возможно надо как-то указать принадлежность обработчика к этому окну?? Че-нить вроде WIDOGOVOREDITMAIN::cmValue2{} или cmValue2(WIDOGOVOREDITMAIN){}. Просто в хелпе не могу найти ничего подобного...

Добавлено: 06 мар 2008, 15:23
Ged

Код: Выделить всё

#component "L_DOGOVOR"

Alter Interface Dogovor;

Window wiDogovorEditMain EscClose;
 HandlEevent // wiDogovorEditMain
  cmValue2:
     {
      Message('Overloading!!!')
       if(Inherited::HandleEvent(cmValue2) = heOk)
      {
        Message('После отработки основного события!');
      }
     }
  end;// HandlEevent
end;//wiDogovorEditMain

/*
HandlEevent // Interface
End;//HandlEevent Interface
*/
end.

Добавлено: 07 мар 2008, 16:21
Sytin
Спасибо огромное!!! Все получилось)))