по приходной накладной надо сформировать проводки так, чтобы:
- счет/субсчет по дебету определялся складом, на который приходуется
- субсчет по кредиту определялся партией
- КАУ1 дебета определялось из пользовательской аналитики в соответствии с партией
- КАУ2 кредита определялось из каталога МЦ в соответствии со складом оприходования (есть некая виртуальная связь склад - матценность).
Большая просьба, не выяснять, почему так криво поставлен учет. Объяснить все равно не смогу, принимаем как данность.
Пытаюсь написать ТХО АРИ.
Добавление в меню:
Код: Выделить всё
VipInterface TxoMenu_SlideIn implements ObjTxoMenuPlugin;
Interface TxoMenu_Slidein;
create view;
procedure OnMakeMenu(hMenu : ObjTxoMenuServer);
{
hMenu.AddTxoMenu(mnuFlUserKau, 0, 0, 'separator', '');
hMenu.AddTxoMenu(mnuFlUserKau, 0,6002, '<авто - текст/слайд>', '<Из КАУ 152>');
hMenu.AddTxoMenu(mnuFlUserKau,0,6003, '<авто - № издания>', '<По KatMC>');
hMenu.AddTxoMenu(mnuFlSchSub, 0, 0, 'separator', '');
hMenu.AddTxoMenu(mnuFlSchSub, 0,6000 , '<авто - номер № или в РП>', '<режим №>');
hMenu.AddTxoMenu(mnuFlSchSub, 0,6001 , '<авто - откуда>', '<режим источника>');
}
procedure OnSetEnableMenu(hMenu : ObjTxoMenuServer; TiDkGal, SysOper : word);
{
// определить доступность добавленных нами режимов формирования счета и аналитики
//
if TidkGal=word(101)
{
hMenu.EnableMenu(mnuFlUserKau, 0, 6002);
hMenu.EnableMenu(mnuFlUserKau, 0, 6003);
hMenu.EnableMenu(mnuFlSchSub, 0, 6000);
hMenu.EnableMenu(mnuFlSchSub, 0, 6001);
}
else
{
hMenu.DisableMenu(mnuFlUserKau, 0, 6002);
hMenu.DisableMenu(mnuFlUserKau, 0, 6003);
hMenu.DisableMenu(mnuFlSchSub, 0, 6000);
hMenu.DisableMenu(mnuFlSchSub, 0, 6001);
}
}
end.
Код: Выделить всё
create view SlideIn
var
CurSoprDoc : comp;
sumPr : double;
as select
*
from
sklorder, sporder, katparty
where
((
// ордера, склады и партии
CurSoprDoc == sklorder.csopr
and Sklorder.nrec == sporder.csklorder
and sklorder.cpodr == katpodr.nrec
and sporder.cparty == katparty.nrec
))
;
procedure StoreCycles(hTxo: longint; buf: TTxoApiInfoDoc);
{
//установим ограничения на логическую таблицу
set CurSoprDoc := buf.cSoprDoc;
s_sch_deb:=''; s_subsch_deb:=''; s_sch_kr:=0; s_subsch_kr:='';
all_correct:=false;
if (getfirst Sklorder = tsOK) then
if (getfirst katpodr = tsOK) then
if (getfirst katparty = tsOK) then
all_correct:=substr(katpodr.kod,1,4)='1602';
if all_correct then {
_loop sklorder {
_loop sporder {
// формирование счетов и субсчетов
s_sch_deb:=Schet_debet(...);
s_subsch_deb:=SubSch_Debet(...);
s_sch_kr:=Schet_Kredit(...);
s_subSch_kr:=SubSch_Kredit(...);
TXOBodyClear(hTxo);
TxoBodyAddSchet(hTxo, 6000, s_sch_deb, s_subsch_deb);
TxoBodyAddSchet(hTxo, 6001, s_sch_kr, s_subsch_kr);
// формируем КАУ по партии и МЦ
if instr('что-то там', katpodr.name)=0 then {
if RunInterface('Sel_KAU_MC',katpodr.kod,katpodr.name,ckau_MC)<> cmCancel then {
if katparty.kod=own_slide then
TXOBodyAddKau(htxo,0,tbl_kau_20,ckau_slide);
if katparty.kod=own_text then
TXOBodyAddKau(htxo,0,tbl_kau_20,ckau_text);
TXOBodyAddKau(htxo,0,cgKau_KatMC,ckau_mc);
}
}
//для 'что-то там' КАУ не формируется
// формирование суммы
sum_pr:=sporder.kol*sporder.srprice;
TXOBodySetSum(htxo,sum_pr,0,sporder.kol);
TXOBodyInsert(htxo);
}
}
}
}
Настройка ТХО:
Дебет: счет <режим №> субсчет <режим №>
Кредит: счет <режим источника> субсчет <режим источника>
Алгоритм - &VIP_[Obj:"мой интерфейс"]
Циклическая обработка счет/субсчет, КАУ152, Материальные ценности
Проблемы:
- КАУ не формируется категорически
- при оприходовании на 2 разных склада выдается ошибка "Проводка не сформирована, т.к. не определен счет по дебету"
Все константы описаны, все функции отрабатывают (строчки с TXODebugMSG я сознательно убрала)
Где и чего я напортачила, подскажите, пожалуйста