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

Vip-интерфейс

Добавлено: 30 май 2006, 14:59
aika
Помогите настроить правильно vip. Лицензия на Vip есть,
версия Гал-8,00, Support-5.1.
Написали простой txoapi, не можем скомпилировать выдается ошибка Неизвестное имя объектного интерфейса ObjTxoIdentPlugin
Что нужно сделать, или какие настройки нужны для компиляции интерфейсов?
Заранее благодарна за помощь

Добавлено: 30 май 2006, 15:49
Max_Fin
А у вас описание ObjTxoIdentPlugin есть?

Добавлено: 31 май 2006, 07:11
Алексей
Сдается мне *.vih от ТХО АПИ подключить надобно

Добавлено: 31 май 2006, 10:42
aika
Подключаем #include c:\txovip.vih. Выдает ошибку Ожидалось имя или описание типа (стр.67, поз.26 в c:\txovip.vih)
Компилируем через support-Компилятор интерфейсов.

Добавлено: 31 май 2006, 10:45
Алексей
:) Вы бы хоть показали что на стр.67 в позиции 26 находится :)

А вообще лучше выложите текс виха сюда.

Добавлено: 31 май 2006, 10:59
aika
TXOAPI.vih:
/*
╔═══════════════════════════════════════════════════════════════════════════╗
║ (c) 1994,2000 корпорация ГАЛАКТИКА ║
║ Проект : ГАЛАКТИКА ║
║ Система : Бухгалтерский контур ║
║ Версия : 5.8x ║
║ Назначение : Базовая функуиональность TXO API ║
║ Ответственный : Ларин Михаил Николаевич (larin@galaktika.by) ║
║ Параметры : есть ║
╚═══════════════════════════════════════════════════════════════════════════╝
*/

#ifndef __TXOAPI_VIH__
#define __TXOAPI_VIH__

/****************************************************************************************
TXO API (application programming interface) дает возможность сторонним разработчикам
оперативно расширять вычислительные возможности идентификатров ТХО.

Для реализации своих специфических расчетов нужно написать свой VipInterface,
который будет реализовывать функции объектного интерфейса ObjTxoIdentPlugin.

VipInterface MyInterface implements ObjTxoIdentPlugin;

Чтобы все заработало, нужно написать реализацию функции StoreCycles, которая будет
закачивать данные в ТХО при помощи специальных сервисных функций: TxoBodyAddKau,
TxoBodySetSum, TxoBodyInsert.

Чтобы использовать это в расчетах ТХО, нужно в шаблоне ТХО в формуле написать
идентификатор:
&VIP_[OBJ:"MyInterface"]

Иденитфикатор &VIP может быть как циклическим (&VIP_[OBJ:"MyInterface"]),
так и нециклическим (&VIP[OBJ:"MyInterface"])
****************************************************************************************/

// ****************************************************************************
// ** То, что помечено как 'to do' - пока не работает или будет переделано **
// ****************************************************************************

// Данные о текущем сеансе разноски ТХО
type TTxoApiInfoDoc = record
cSoprHoz : comp; // Журнал хозопераций
TiDkGal : word; // Тип документа системный
TiDk : word; // Тип документа пользоватеьский
cSoprDoc : comp; // Документ

cHozOper : comp; // ТХО
cPlansSch : comp; // Регистр учета
KodReg : word; // Код регистра учета
cObor : comp; // Шаблон ТХО

DatOb : date; // Дата проводки
cValut : comp; // Валюта проводки
dBeginFp : date; // Начало периода документа
dEndFp : date; // Конец периода документа
end;

// TTxoInfoCloSch -Дополнительная информация о текущем состоянии сеанса
// закрытия счетов. Если в порядке закрытия счетов установлено
// "рассчитывать исходящее сальдо=Да", то bufCloSch заполняется
// из рассчитанного сальдо. Если сальдо не/ рассчитывается, то
// в bufCloSch переносится информация из настрои
// порядка закрытия счетов.
type TTxoInfoCloSch = record
cPlansSch : comp; // Ссылка на план счетов закрываемого счета.
Schet : tSchet3; // Код плана счетов + закрываемый счет
DbSchet : tSchet19;// Закрываемый счет без кода плана счетов
SubSch : tSubSch; // Субсчет закрываемого счета
wKau_1 : word; // код КАУ1 закрываемого счета
wKau_2 : word; // код КАУ2 закрываемого счета
wKau_3 : word; // код КАУ3 закрываемого счета
wKau_4 : word; // код КАУ4 закрываемого счета
wKau_5 : word; // код КАУ5 закрываемого счета
wKau_6 : word; // код КАУ6 закрываемого счета
cKau_1 : comp; // Значение КАУ1 закрываемого счета
cKau_2 : comp; // Значение КАУ2 закрываемого счета
cKau_3 : comp; // Значение КАУ3 закрываемого счета
cKau_4 : comp; // Значение КАУ4 закрываемого счета
cKau_5 : comp; // Значение КАУ5 закрываемого счета
cKau_6 : comp; // Значение КАУ6 закрываемого счета
cPodr : comp; // Подразделение закрываемого счета
cGoNewPer : comp; // Ссылка на настройку порядка закрытия счетов
cSaldoNm : comp; // Ссылка на текущую позицию исходящего сальдо
BuhSprNo : tNoDok; // Номер бухсправки закрывающей счет
end;

// Все пользовательские алгоритмы ТХО должны реализовывать этот объектный интерфейс ObjTxoIdentPlugin
// начиная с версии 5.85 все реализации должны начинатся с префикаса "Txo_" это необходимо
// для ускорения сканирования ресурсов при поиске всех реализаций
ObjInterface ObjTxoIdentPlugin;
//GetInfo - получить описание алгоритма расчета, используется в интерфейсе выбора идентификаторов ТХО
function GetInfo : string;

// ParamMaster - вызвать мастер и получить список дополнительных параметров [Param1:"Value1"][Param2:"Value2"]
function ParamMaster : string;

// StoreCycles - запустить алгоритм расчета и построить выгрузку
// hTxo - ссылка на текущий сервис ТХО
// buf - структура, содержит важные данные о текущем сеансе разноски ТХО
procedure StoreCycles(hTxo : longint; buf : TTxoApiInfoDoc);
end;

// начиная с версии 5.85 ТХО API позволяет сторонним разработчикам
// так же добавлять свои собственные режимы и давать им человеческие
// названия, для этогослужат объекты ObjTxoMenuServer и ObjTxoMenuPlugin
// рекомендуемый диапазон для пользовательских режимов 5000..9999

// ObjTxoMenuServer - предоставляет доступ к сервисам менеджера динамических МЕНЮ
// котрый который используется в настройке ТХО
ObjInterface ObjTxoMenuServer;
// добавить пункт меню и наименование пользовательского режима формирования значения аналитики
// TypeMenu - тип меню, одна из констант mnuFlKau=1; mnuFlUserKau=2; mnuFlSchSub=9;
// to do - остальные типы меню лучше пока не трогать
// wKau - код каталога аналитки, если нужно чтобы этот режим был лоступен для всех каталогов
// аналитки то нужно передавать 0. Для типов меню вообще не касающихся аналитки
// нпример для счетов/субсчетов нужно так же передавать 0
// flKau - номер режима формирования аналитки, под пользовательский режим теперь можно
// резервировать любую константу по желанию, главное что бы она не пересекалась
// с системными режимами wFlKau_ХХХХХХ, рекомендуемый диапазон 5000..9999
// NameMenu, NameField - это шаблон строки для названия режима (понятный человеку)
// который будет использован при выборе меню и при высветке поля в интерфейсах
// в шаблоне можно использовать макрос %Name в место него будет автоматически
// подставлятся наимнование каталога аналитки. Что бы добавить разделитель
// в NameMenu нужно указать строку 'separator'
// Примеры: AddTxoMenu(mnuFlKau, 0, 0, 'separator', '');
// AddTxoMenu(mnuFlKau, 0, wFlKau_Auto, 'формировать ~а~втоматически', '<авто - %Name>');
// AddTxoMenu(mnuFlKau, cgKau_KatPodr, wFlKau_DogCO, 'Ответственное подразделение за договор','<авто - ответств. подразделение за договор>');
function AddTxoMenu(TypeMenu, wKau, flKau : word; NameMenu, NameField : string):boolean;

// изменяет признак доступа к пункту меню на Enable;
function EnableMenu(TypeMenu, wKau, flKau : word) : boolean;

// изменяет признак доступа к пункту меню на Disable;
function DisableMenu(TypeMenu,wKau,flKau : word) : boolean;
end;

// ObjTxoMenuPlugin - вызвается менеджером меню в момент построения списка всех доступных
// режимов формирования значений аналитки при настройке ТХО. Сторонние разработчики могут
// могут написать свои реализации этого объектного интерфейса чтобы дополнить список
// режимов формирования значений аналитики. Все реализации должны начинатся с префикса "TxoMenu_"
ObjInterface ObjTxoMenuPlugin;
// эта процедура вызвается в момент построения списка режимов формирования значений аналитки
// hMenu - ссылка на менеджер меню используемый в ТХО, для обратной связи
procedure OnMakeMenu(hMenu : ObjTxoMenuServer);
procedure OnSetEnableMenu(hMenu : ObjTxoMenuServer; TiDkGal, SysOper : word);
end;


// Начиная с версии 7.11 ТХО API позволяет сторонним разработчикам реализовывать
// собственные алгоритмы извлечения значений аналитики,
// для этого служат объекты ObjTxoExtractKauServer и ObjTxoExtractKauPlugin

// ObjTxoExtractKauServer - предоставляет доступ к методам работы с таблицей в памяти,
// в которой регистрируются пользовательские интерфейсы (реализующие ObjTxoExtractKauPlugin),
// позволяющие извлекать необходимые значения аналитики для заданных типов документов.
// Таблица в памяти хранится до конца работы с Галактикой.

// В vip-интерфейсе TxoExtractKauServer, имплементирующем ObjTxoExtractKauServer,
// реализована процедура InsertTxoExtKauRegister, использование которой
// обязательно при регистрации интерфейсов в OnExtractKau.
// TiDkGal - тип документа, для которого происходит регистрация
// ifcName - имя интерфейса, для которого происходит регистрация
ObjInterface ObjTxoExtractKauServer;
procedure InsertTxoExtKauRegister(TiDkGal : word; ifcName : string);
end;

// ObjTxoExtractKauPlugin - вызвается в момент получения информации из документа.
// Сторонние разработчики могут написать свои реализации этого объектного интерфейса для извлечения значений аналитики
// Все реализации должны начинаться с префикса "TxoKau_".
// Например:
// VipInterface TxoKau_MyInterface implements ObjTxoExtractKauPlugin;
ObjInterface ObjTxoExtractKauPlugin;
// Процедура реализует регистрацию нужных типов документов в таблице в памяти. Для этого нужно использовать
// процедуру InsertTxoExtKauRegister объекта hKau.
// Процедура вызвается в момент первого обращения системы к таблице регистрации интерфейсов извлечения значений аналитики.
// Если необходимо, чтобы аналитика извлекалась для любого типа документа, то зарегистрировать интерфейс для TiDkGal = 0.
// Например,
// hKau.InsertTxoExtKauRegister(0,'TxoKau_MyInterface');
// hKau - ссылка на объект работы с таблицей регистрации интерфейсов, для обратной связи.
procedure OnRegisterKauExtractor(hKau : ObjTxoExtractKauServer);
// Процедура реализует извлечение аналитики из документа с заданным типом.
// hTxo - ссылка на сервис ТХО (!!! следует всегда использовать то, что передается в OnExtractKau !!!)
// TiDkGal - тип документа
// cSoprHoz - ссылка на текущую запись ЖХО
// cSoprDoc - ссылка на документ, по которому сформирована текущая запись ЖХО
// Добавлять аналитику в буфер нециклических значений КАУ нужно с помощью процедуры
// procedure TxoHeadAddKau(hTxo : longint; flKau, wKau : word; cKau : Comp);
procedure OnExtractKau(hTxo : longint; TiDkGal : word; cSoprHoz, cSoprDoc : comp);
end;

// ******************** Сервисные функции TxoApi *****************************
// ******* следует использовать только при реализации StoreCycles *******
// ******* рализованы в G_Txo.DLL описание хранится в extfun.res *******
// *****************************************************************************

// ****************** общие параметры сервисных функций ************************
// hTxo - ссылка на сервис ТХО (!!! следует всегда использовать то, что передается в StoreCycles !!!)
// flKau - код режима формирования значения КАУ из шаблона ТХО
// wKau - код КАУ
// cKau - значение КАУ

// Перекачка нециклической аналитки из шапки разносимых документов:

// Очистить буфер нециклических значений КАУ
// procedure TxoHeadClear (hTxo : longint);

// Добавить аналитику в буфер нециклических значений КАУ
// procedure TxoHeadAddKau(hTxo : longint; flKau, wKau : word; cKau : Comp);

// Для перекачки циклической аналитики и сумм, а также формирования выгрузки по
// результатам расчета служат следующие функции:

// Очистить промежуточный буфер циклической обработки
// procedure TxoBodyClear(hTxo : longint);

// Добавить значение КАУ в промежуточный буфер циклической обработки
// procedure TxoBodyAddKau(hTxo : longint; flKau, wKau : word; cKau : Comp);

// Перенести сумму в НДЕ (Nde), в Валюте (Val) и Количество (Kol) в промежуточный
// буфер циклической обработки. Сумма в валюте (Val) должна быть указана в "Валюте проводки". (Валюту проводки
// следует брать из buf.cValut, это значение формируется системой согласно шаблону.
// Количество Kol должно быть указано в учетных единицах измерения.
// procedure TxoBodySetSum(hTxo : longint; Nde, Val, Kol : double);

// Расширенная функция для переноса Суммы в валюте в промежуточный буфер циклической обработки
// Если в шаблоне настроена циклическая обработка по валютам, то "Валюта проводки"
// будет циклически обработана по передаваемым значениям cVal, иначе сумма SumVal
// будет пересчитана в "Валюту проводки" согласно шаблону.
// procedure TxoBodySetSumVal(hTxo : longint; SumVal : double; cVal : comp);

// Расширенная функция для переноса Количества в промежуточный буфер циклической обработки
// Количество SumKol указывается в отпускных единицах измерения cOtpEd и будет
// автоматически пересчитано в учетные единицы измерения.
// procedure TxoBodySetSumKol (pTxo : PTXOProc_Minimum; SumKol : double; cOtpEd : comp);

// Добавить содержимое промежуточного буфера циклической обработки в выгрузку. В этот
// момент будет производиться агрегация сумм, согласно настройке разрезов
// циклической обработки в шаблоне ТХО.
// Результат: true - если вставка прошла успешно
// false - если были какие-либо ошибки
// function TxoBodyInsert(hTxo : longint) : boolean;

// Вывести отладочную информацию в протокол ТХО.
// Настройка -> Бухгалтерский контур -> Типовые проводки -> Уровень детализации
// протокола = '4 отладочная информация'
// procedure TxoDebugMsg(hTxo : longint; Tag, Msg : string);


// Получить список параметров иденитфикатора &VIP[Name1:"Value1"][Name2:"Value2"]
// TxoParamCount - возвращает количество параметров &VIP
// TxoParamName - наменование параметра с номером Num
// TxoParamValue - значение параметра с номером Num
// - наименование и значение возвращаются в верхнем регистре
// - значение, заданное в двойных кавычках, возвращается без кавычек
// - в наименоаниях и значениях параметров нельзя использовать символы
// { пробел, '*', '/', '+', '-', '(', ')', ','}
// function TxoParamCount(hTxo : longint) : word; // external;
// function TxoParamName (hTxo : longint; Num : word) : string; // external;
// function TxoParamValue(hTxo : longint; Num : word) : string; // external;

// Проверка, удовлетворяет ли строка Str маске Mask.
// Описание синтаксиса маски смотри в документации по модулю ХозОперации.
// function MatchesMask(Str, Mask: string): Boolean;

// Определить, является ли маска (Mask) простой или составной.
// В случае простой маски результат будет True, в случае составной - False
// Простая маска - это маска которая не содержит спецсимволов ( * # ? [ ~ ] ; | и т.д. ).
// Функция IsSingleMask будет полезна для оптимизации расчетов,
// в которых для фильтрации записей таблицы используется функция MatchesMask.
// Если в таб-лице по интересующему полю есть индекс, то в случае простой маски,
// для ускорения расчетов можно наложить ограничение на таблицу по этому полю.
// function IsSingleMask(Mask : String) : boolean; //(начиная с версии 5.84)

// Запустить расчет одного ПАТ идентификатора (PatIdent)
// Под ПАТ-идентификаторами подразумеваются стандартные идентификаторы
// (обороты, проводки, сальдо), которые используются в бухгалтерском
// калькуля-торе и бухгалтерской отчетности. Возвращаемые значения
// Сумма в НДЕ (vNde), Сумма в Валюте (vVal) и Количество (vKol).
// В случае успешного расчета ре-зультат функции будет True, в случае
// каких либо ошибок в процессе расчета (например, неправильный синтаксис
// идентификатора) результат функции будет False.
// function TxoExecPat(hTxo : longint; PatIdent : string; //(начиная с версии 5.84)
// var vNde, vVal, vKol : double) : boolean;

// Получить дополнительную информацию о текущем состоянии сеанса закрытия
// счетов в переменную bufCloSch. Если в порядке закрытия счетов установлено
// Рассчитывать исходящее сальдо = Да, то bufCloSch заполняется из рассчитанного
// сальдо. Если сальдо не рассчитывается, то в bufCloSch перено-сится информация
// из настройки порядка закрытия счетов. В случае успеха ре-зультат функции
// принимает значение True, в случае каких либо ошибок (напри-мер, если
// применить для buf.TiDkGal не равным 777) результат функции - False.
// function TxoGetInfoCloSch(hTxo : longint; var bufCloSch : TTxoInfoCloSch) : boolean; //(начиная с версии 5.84)

// Добавить ссылку на счет/субсчет в буфер циклической и нецикличесой обработки
// function TxoHeadAddSchet (pTxo : PTXOProc_Minimum; flSchSub: word; Schet : tSchet3; SubSch : tSubSch):boolean;
// function TxoBodyAddSchet (pTxo : PTXOProc_Minimum; flSchSub: word; Schet : tSchet3; SubSch : tSubSch):boolean;
// Эти функции реализована начиная с версии 5.85. С из помощью можно управлять значением счета и субсчета
// в формируемых бухгалтерских проводках (также как и аналитикой). Работают по аналогии
// с функциями TxoHeadAddKau и TxoBodyAddKau.
// Параметры:
// hTxo - ссылка на сервер ТХО
// flSchSub - номер режима формирования счета субсчета (одна из констант wFlKau_Mode0.. wFlKau_Mode9)
// Schet - ссылка на счет (в формате "код плана счетов" + "номер счета"
// SubSch - ссылка на субсчет
// В случае если такой счет/субсчет (Schet+SubSch) действиетельно существует возвращает TRUE иначе FALSE

#endif

Наш Vip:


//#include c:\dictypes.def
#include c:\txoapi.vih

VipInterface TXO_Met implements ObjTxoIdentPlugin;
Interface TXO_Met;
create view
var
CurSoprDoc : comp;
as select kol2
from Katsopr,SpSopr
where((CurSoprDoc == KatSopr.Nrec
and KatSopr.nrec == SpSopr.cSopr
));
end.

Добавлено: 31 май 2006, 11:04
aika
67 строка из Txoapi.vih:

Schet : tSchet3; // Код плана счетов + закрываемый счет

Добавлено: 31 май 2006, 11:05
Алексей
В проект подключите ещё вот что:

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

const
#include inc\Tpp_Key.inc
#include inc\KauConst.inc
#include inc\GloConst.inc
end;
#include inc\DicTypes.def

Добавлено: 31 май 2006, 11:11
Max_Fin
достаточно подключения

#include glotypes.inc

Добавлено: 31 май 2006, 11:14
KATZ
aika писал(а):Наш Vip:

//#include c:\dictypes.def
#include c:\txoapi.vih
А зачем DICTYPES.DEF закомментирован? Потому и ошибка при компиляции, что в TXOAPI.VIH используются нестандартные типы данных, предварительно описанные в DICTYPES.DEF.

Добавлено: 31 май 2006, 11:15
aika
Подключили,
все равно выдает ошибку:
Неизвестное имя объектного интерфейса ObjTxoIdentPlugin

Добавлено: 31 май 2006, 11:18
aika
Делаем так:

const
#include c:\vip\Tpp_Key.inc
#include c:\vip\KauConst.inc
#include c:\vip\GloConst.inc
end;
#include c:\vip\DicTypes.def
#include c:\vip\txoapi.vih

Выдает ошибку:
Тип уже определен:TNREC(стр.12,поз.8 в c:\vip\DicTypes.def
)

Добавлено: 31 май 2006, 11:29
Алексей
Ну значит где то два раза определён этот тип :)
Ищите... у меня в файле dicttupes нет типа tnrec.

Версии видимо разные.

Добавлено: 05 июн 2006, 11:52
siteadmin
DicTypes.def уже подключается в gloconst.inc потому его повторный инклюд - явно лишний.

вообще же там описаны словарные типы данных, для удобства создания словаря.

Re: Vip-интерфейс

Добавлено: 19 мар 2012, 09:36
n0where
Здравствуйте...
Проблема при определении констант

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

  wFlKau_Oborot_Debit        = 215; // Cчет/субсчет/Аналитика из дебета проводок
  wFlKau_Oborot_Credit       = 216; // Счет/субсчет/Аналитика из кредита проводок  
  wFlKau_Mode0 = 160;
  wFlKau_Mode1 = 161;
...
TxoBodyAddSchet(CurhTxo, wFlKau_Oborot_Debit, 'ХХХ', 'ХХ' )
TxoBodyAddKau(CurhTxo, wFlKau_Oborot_Debit, XX, XX); 
Если ставлю
wFlKau_Oborot_Debit - и в настройке ТХО ставлю авто из дебета проводок - проводки не формируются - пишет не определён Счет
wFlKau_Mode0 - все нормально формируется
...

Ещё нюанс, если не ставлю TxoBodyAddKau, то проводки формируются без ошибки счета...

Как так? в чем ошибка?