Подсобите с использованием методов L_KatOrg

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

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

Ответить
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Подсобите с использованием методов L_KatOrg

Сообщение Masygreen »

День добрый (гал 8.1)... необходимо получить юридический адрес организации ..
в Галактике есть соответствующие функции .. привожу кусок OrganizationInfo.obj

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

#ifndef _ORGANIZATIONINFO_OBJ_INCLUDED_
#define _ORGANIZATIONINFO_OBJ_INCLUDED_

#ifdef ComponentVersion
  #component "L_KATORG"
#end

#doc
набор методов для выборки информации об организации
загрузка информации об организации по ее номеру записи OrganizationRef
#end
objinterface IOrganizationInfoFinder;

  #doc
  загрузить информации об организации по ее номеру записи OrganizationRef
  #end
  function Seek(OrganizationRef: comp): boolean;
end; 

#doc
набор методов для выборки информации об организации
юридические атрибуты организации
#end
objinterface IOrganizationJuridicalInfo; 

  #doc
  юридический адрес
  #end
  function GetJuridicalAddressStr: string; 
пытаюсь воспользоваться - видимо не втом порядке... выдает ошибку
подкрутите плиз руки :)

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

.var
Rez:Boolean;
OrgJu:IOrganizationJuridicalInfo;
vcatorg:comp;
juraddr:string;
.endvar
.begin
vcatorg:=t2.katorg.nrec;
Rez := OrgJu.Seek(vcatorg);
juraddr:= OrgJu.GetJuridicalAddressStr();
end.
Время ведет!
Алексей
Местный житель
Сообщения: 2896
Зарегистрирован: 24 июн 2005, 12:12
Откуда: Иркутская область

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

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

Компиляция форм с объектными интерфейсами | 17.X.2006 @ 13:56 | Sniper
В версиях Системы "Галактики" 7.12 (с патчем ATL02 и далее) и 8.0 программистами стали применять объектные интерфейсы.
В них описываются переменные для различных элементов системы. 

Пример компиляции формы, где применяется объектный интерфейс ObjInterface IMCOriginCountry; 
Вот его код:
#ifndef __MCORIGINCOUNTRY_VIH
#define __MCORIGINCOUNTRY_VIH
#ifdef ComponentVersion
#component "L_SF"
#endif
ObjInterface IMCOriginCountry;
function getCountryName(cMC: comp; cParty: comp): string;
function getGTDNumber(cParty: comp): string;
end;
VipInterface MCOriginCountry implements IMCOriginCountry
#ifdef ATL51
Licensed (FREE) 
#end
;
#end

Компиляция объектных интерфейсов в компиляторе форм (FCOM) происходит следующим образом: 
1. В синтаксис FCOM формы отчета добавляется секция:
.Declare
.EndDeclare

2. Пример использования для Книги закупок:
.linkform 'BkPrZkF_54_SLK' prototype is 'BkPrZkF'
.NameInList 'Книга покупок в формате Excel'
.Group 'Закупки'
.set filler '-'
.Declare
#ifndef __MCORIGINCOUNTRY_VIH
#define __MCORIGINCOUNTRY_VIH
#ifdef ComponentVersion
#component "L_SF"
#endif
ObjInterface IMCOriginCountry;
function getCountryName(cMC: comp; cParty: comp): string;
function getGTDNumber(cParty: comp): string;
end;
VipInterface MCOriginCountry implements IMCOriginCountry
#ifdef ATL51
Licensed (FREE) 
#end
;
#end
.enddeclare
... // основной код формы 
.endform
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

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

Сообщение edward_K »

для использования в таком виде нужно еще делать loadvipInterface или еще чего аналогочиное. Лучше переменную объявлять в типе что указан в строке с vipinterface ?????????? implements IMCOriginCountry.
А вообще посмотрите формы по СФ и счетам на продажу/закупку - там вроде это использовалось.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

пробовал и так ..
ошибка загрузки объекта из OrganizationJuridicalInfo

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

.var
vcatorg:comp;
OrganizationRef: comp;
JuridicalInfo: IOrganizationJuridicalInfo;
XarAddres:string;
.endvar
.begin
probel:=’ ’;
vcatorg:=t2.katorg.nrec;
LoadVipRef(JuridicalInfo, 'OrganizationJuridicalInfo'); 
GetBoundOrganization(vcatorg, OrganizationRef);
IOrganizationInfoFinder(JuridicalInfo).Seek(OrganizationRef) 
XarAddres := JuridicalInfo.GetJuridicalAddressStr;
Message(XarAddres);
end.
Время ведет!
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Вообще-то, полное имя объектного интерфейса - 'L_KATORG::'IOrganizationJuridicalInfo', его стандартной реализации - 'L_KATORG::'OrganizationJuridicalInfo'. Попробуйте в последнем примере использовать полные имена интерфейсов.
Виталий
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

в общем не получилось с L_Katorg разобраться :( это плохо.
Но тем не менее найден с помощью форума вариант получения юридического адреса через L_Staff
в сцепку добавлено

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

and katorg.nrec==podrinfo.cpodr
в форме

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

.var
XarAddres:string;
addrService : Z_Staff::AddressFunc;
.endvar

.begin
T2.getfirst;
XarAddres:=addrService.GetFullAddressInd(Comp(comp(t2.podrinfo.INSNOMER)));
Message(XarAddres);
end.
хотя на самом деле это через зад .. т.к. в принципе до самого адреса одна сцепка остается

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

comp(podrinfo.INSNOMER) == addressn.nrec
Если у кого идеи появятся заставить работать L_KatOrg пишите :)
Время ведет!
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

Все дело в волшебных пузырьках ... решение найдено простым перебором и включением интуиции ... :)
может кому пригодится .. также в OrganizationJuridicalInfo есть много полезного !!!

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

var OrgInf:OrganizationJuridicalInfo;
IOrganizationInfoFinder(OrgInf).Seek(Katorg.nrec);
message(OrgInf.GetJuridicalAddressStr());
Время ведет!
Screw
Слесарь-системщик
Сообщения: 304
Зарегистрирован: 29 мар 2005, 17:49
Откуда: р.Беларусь, Унитарное предприятие "ТОП СОФТ"
Контактная информация:

Сообщение Screw »

Так в чем же была хитрость?
Виталий
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Сообщение Masygreen »

Так и не понял .. то ли в скобках при вызове функции GetJuridicalAddressStr().. то ли в ненужности GetBoundOrganization(vcatorg, OrganizationRef);

вобщем рабочий кусок представил .. кому пригодится хорошо :)
Время ведет!
Ответить