Окно выбора руководителя

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

Окно выбора руководителя

Сообщение novichok »

Подскажите, пожалуста, как сделать, чтобы перед печатью формы frm или rtf появлялось окно выбора руководителя?
Мне нужно изменить приказ на командировку и командировочное удостоверение, чтобы в них была подпись не директора, как сейчас, а того, кого выберет пользователь.
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Окно выбора руководителя

Сообщение Алексей »

диалог вызвать. но там каждый раз перед печатью надо будет писать вручную... точно так же можно прямо в форме править... это если frm
novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

Re: Окно выбора руководителя

Сообщение novichok »

Алексей писал(а):диалог вызвать. но там каждый раз перед печатью надо будет писать вручную... точно так же можно прямо в форме править... это если frm
А есть какие-нибудь функции, типа выбора комиссии, похожие?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Окно выбора руководителя

Сообщение edward_K »

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

var
 iCommission : Commission;
 sCommission:string ;

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

чего т там
   if (NullVipRef(iCommission))
   { LoadVipInterface(iCommission);
     iCommission.InitCommission(cgCommission_Sklad ); //cgCommission_OS
   }
   if cCommission>0
   {  iCommission.SetCommission(cgCommission_Sklad,cCommission)
   }
   set sCommission := iCommission.GetSelectionName;
   iCommission.RunWindowSelection(word(1));
   set sCommission := iCommission.GetSelectionName;
   set cCommission := iCommission.GetSelection
        wCommissionCount := iCommission.GetComponentsCount;
     wnum_dolg:=1 ;
//    if iCommission.GetCommissionChairMan
     For (wcommissionNum := 0; wcommissionNum <= wcommissionCount; wcommissionNum := wcommissionNum + 1)
     {  wdolg:=iCommission.GetComponentPost(wcommissionNum)  ;
        wfio:=iCommission.GetComponentFIO (wcommissionNum) ;
        case wcommissionNum of
Можно просто запускать окно с выбором чела - вам же одна подпись нужна, а выбор сохранять в DSK.
Ну еще вариант использовать подписантов из СФ.
novichok
Постоянный гость
Сообщения: 79
Зарегистрирован: 10 апр 2013, 09:24

Re: Окно выбора руководителя

Сообщение novichok »

Можно просто запускать окно с выбором чела - вам же одна подпись нужна, а выбор сохранять в DSK.
А как это сделать для rtf ?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Окно выбора руководителя

Сообщение edward_K »

Либо фейс стартануть - что лучше, либо диалог - но обработку придется делать в RTF
Если собираете проектом, то лучше использовать объекты - в проект включате vih объекта, а в фейсе переменную с типом = фейс объекта.
Для выбора проще юзать igetkau - поиск. Судя по вопросу свои фейсы вы делать не умеете. Можете кадровский подобрать какой нибудь из приказов - параметры в папке exe\galdoc\имя компоненты. Будет неясно с параметрами спрашивайте(нужно getifccurrentfieldname в фейсе выбора)
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

Re: Окно выбора руководителя

Сообщение Алексей »

ещё, как вариант, сделать настройку пользовательскую, куда писать человека и при печати просто читать настройку.
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Окно выбора руководителя

Сообщение RAJAH »

edward_K писал(а):фейс стартануть - что лучше
:cool: Z_STAFF::ChoiseYourPersons, к примеру...
ded_gambit
Сообщения: 18
Зарегистрирован: 21 май 2015, 13:10
Откуда: Слободской, Кировская обл.

Re: Окно выбора руководителя

Сообщение ded_gambit »

edward_K писал(а):

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

var
 iCommission : Commission;
 sCommission:string ;

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

чего т там
   if (NullVipRef(iCommission))
   { LoadVipInterface(iCommission);
     iCommission.InitCommission(cgCommission_Sklad ); //cgCommission_OS
   }
   if cCommission>0
   {  iCommission.SetCommission(cgCommission_Sklad,cCommission)
   }
   set sCommission := iCommission.GetSelectionName;
   iCommission.RunWindowSelection(word(1));
   set sCommission := iCommission.GetSelectionName;
   set cCommission := iCommission.GetSelection
        wCommissionCount := iCommission.GetComponentsCount;
     wnum_dolg:=1 ;
//    if iCommission.GetCommissionChairMan
     For (wcommissionNum := 0; wcommissionNum <= wcommissionCount; wcommissionNum := wcommissionNum + 1)
     {  wdolg:=iCommission.GetComponentPost(wcommissionNum)  ;
        wfio:=iCommission.GetComponentFIO (wcommissionNum) ;
        case wcommissionNum of
а есть такой же интерфейс, но для выбора не комиссии, а группы подписантов?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Окно выбора руководителя

Сообщение edward_K »

Ctrl+F4
Getifccurrentfieldname
Потом ищите его в exe\Galdoc\!GSDK.chm или сразу в компонента.chm
За деталями ищите vih в FRM\компонента.zip Как правило имя vih совпадает с именем фейса, но бывают исключения, поэтому при неудачном поиске по имени поищите еще по содержимому.
Наверное вы про FreeSigner или как его там. 8)
ded_gambit
Сообщения: 18
Зарегистрирован: 21 май 2015, 13:10
Откуда: Слободской, Кировская обл.

Re: Окно выбора руководителя

Сообщение ded_gambit »

edward_K писал(а):Ctrl+F4
Getifccurrentfieldname
Потом ищите его в exe\Galdoc\!GSDK.chm или сразу в компонента.chm
За деталями ищите vih в FRM\компонента.zip Как правило имя vih совпадает с именем фейса, но бывают исключения, поэтому при неудачном поиске по имени поищите еще по содержимому.
Наверное вы про FreeSigner или как его там. 8)
спасибо, будем искать.

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

.declare
#include FeeSigners.vih
.enddeclare
.var
iFeeSigners : FeeSigners;
.endvar

...
iFeeSigners.InitFeeSigners(cgReport_VZachet);

// подписанты собственной организации

if (iFeeSigners.FindFeeSignersByNRec(cSigners))
  if (iFeeSigners.GetSignerFirst)
    do
    {
      SignCount := SignCount + 1;
        wfio := iFeeSigners.GetSignerFIO(7);
        wdolg := iFeeSigners.GetSignerRole;
        if (wdolg = '') wdolg := iFeeSigners.GetSignerPosition(1);
        if wdolg+wfio!='' 
           .............
    }
 while (iFeeSigners.GetSignerNext);

добавил в пути путь на FeeSigners.vih
ругается
Ошибка: Нет такой функции, поля или метода : CGREPORT_VZACHET
правильно ли я понимаю, что нужно подключить \FRM\AllGal.FrmSrc\SRC\Inc\Reports.inc
Последний раз редактировалось ded_gambit 11 май 2017, 10:57, всего редактировалось 1 раз.
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5188
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Окно выбора руководителя

Сообщение edward_K »

Лучше исходники в FRM распаковывать
Ищем там по содержимому, в Reports.inc
cgReport_VZachet = 7313; // отчеты модуля "Расчеты с поставщиками и получателями"
поскольку вы не компилите проектом, вам проще вставить значение константы.
ded_gambit
Сообщения: 18
Зарегистрирован: 21 май 2015, 13:10
Откуда: Слободской, Кировская обл.

Re: Окно выбора руководителя

Сообщение ded_gambit »

edward_K писал(а):Лучше исходники в FRM распаковывать
Ищем там по содержимому, в Reports.inc
cgReport_VZachet = 7313; // отчеты модуля "Расчеты с поставщиками и получателями"
поскольку вы не компилите проектом, вам проще вставить значение константы.
т.е.

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

iFeeSigners.InitFeeSigners(7313);
насколько я понимаю, в этом месте должен вызваться интерфейс выбора подписантов?
при проверке интерфейс выбора подписантов не показывается :?
upd насколько я понял, это установка ограничения на уже выбранных где-то в другом месте групп подписантов.
Den
Местный житель
Сообщения: 1844
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Ярославская область ОАО "Часовой завод Чайка" г. Углич
Контактная информация:

Re: Окно выбора руководителя

Сообщение Den »

FeeSigners.vih

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

...
  Расширение объекта для работы с подписантами
#end
ObjInterface ObjFeeSignersExt;
#doc
  Открытие главного окна с возвратом результата закрытия
#end
// RunMainWindow = true - была выбрана группа подписантов
Function RunMainWindow(wType: word) : boolean;
end;
...
VipInterface FeeSigners Implements 
ObjFeeSigners, 
ObjFeeSignersExt, 
ObjFeeSignersExt2, 
ObjFeeSignersExt3, 
ObjFeeSignersExt4,
ObjFeeSignersExt5 

ded_gambit
Сообщения: 18
Зарегистрирован: 21 май 2015, 13:10
Откуда: Слободской, Кировская обл.

Re: Окно выбора руководителя

Сообщение ded_gambit »

Den писал(а):FeeSigners.vih
моя не понимать :?
никак не взлетает.

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

iFeeSigners.RunWindowFeeSigners (7313);;
эта строчка пролетает без вызова окна

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

iFeeSigners.RunMainWindow (7313);
эта при запуске выдает ошибку
Возникло необработанное исключение
ExObjIfcNoLoad (ExRef)
ошибка загрузки объекта из ресурсного файла (FeeSigners)

в Commission.vih все так чотко по полкам с примерами расписано, а здесь - нет.
может быть, кинете куском кода? во всех формах, которые нахожу у себя интерфейс окна выбора подписантов вызывается до запуска формы.
и/или где почитать про подключение стандартных интерфейсов в свои формы
Ответить