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

Не работает Calc_NewSaldo :(

Добавлено: 06 сен 2005, 15:46
ikav
Не могу рассчитать бух. сальдо на дату, подскажите, плиз, в чем проблема?
Создал тестовый интерфейсик, но ничего не вижу в таблице :-?

interface pl_CalcSaldoOnDate 'Интерфейс расчета бухгалтерского сальдо на дату' Cyan, DoAccept;

var
flagQuit : boolean;

create view as
select * from SaldoNM;

browse bSaldoNM ();
fields
scheto 'Счет' :[10];
subossch 'Субсчет' :[10];
kauos[1] 'КАУ1' :[10];
datesal 'Дата сал':[10];
sums 'Сумма' :[10];
kol 'Кол' :[10];
viob 'Вид об' :[2];
end;

handleEvent
cmInit:
{
//comp(0001000000000002h)
flagQuit := Calc_NewSaldo(1,comp(0001000000000002h),coSaldoNM,60,01,comp(0001000000000D67H),0,0,0,0,0,0,date(01,07,2003),Cur_Date);
}
end;
end.

Добавлено: 06 сен 2005, 15:48
ikav
строчка flagQuit := Calc_NewSaldo(1,comp(0001000000000002h),coSaldoNM,'60','01',comp(0001000000000D67H),0,0,0,0,0,0,date(01,07,2003),Cur_Date);
счет и субсчет с кавычками тоже пробовал, не работает

Добавлено: 07 сен 2005, 05:43
Алексей
1. Счёт субсчет действительно должны быть в кавычках.
2. Надо указывать счет с префикосм плана счетов, с кодом. не '60' а например '460'
3. Ну и сальдо должно существовать, либо обороты.

Добавлено: 07 сен 2005, 12:11
ikav
Мда, попробовал поставить код плана счетов.
Calc_NewSaldo(0,comp(0001000000000002h),coSaldoNM,'660','01',comp(0001000000000D67H),0,0,0,0,0,0,date(01,07,2005),date(31,07,2005));
Стала показывать окошко, что ищет проводки, но ни одной не находит. А сальдо и обороты точно есть! Делал интервал дат и в пределах одного месяца, все равно не считает сальдо и все, показывает пустую таблицу.

Эта функция вообще в галке 5.85.02 работает? :shock:

Добавлено: 07 сен 2005, 12:19
Алексей
Функция точно работает в этой версии. У меня есть отчеты.
Попробуй ввести сальдо (ФРО - ввод сальдо за месяц) например на 31.08.05 и в периодах поставь (01.09.05-30.09.05). В таблице saldonm должно появится то сальдо, которое ты ввёл. Может ты записи в таблице saldonm не обновляешь?

Учти, что если в сальдо будет заполнено подразделение, то его тоже надо указывать при вызове Calc_NewSaldo.

Добавлено: 07 сен 2005, 12:42
ikav
а таблицу как-то по особому нужно обновлять? я делаю так, как в интерфейсе сверху.

Попробовал ввести сальдо на месяц, только на 01.08.2005. Не появилось, попробовал и сальдо на день ввести, тоже не получилось. И подразделений нет ни в сальдо ни в оборотах

Добавлено: 07 сен 2005, 12:58
Алексей
Перечитать записи в таблице - rereadrecord;

if (Calc_NewSaldo( word(0), // Перерасчет сальдо на начало месяца - для вызова из Vip
myPlan,
integer(coSaldoNM),
'4020',
'',
pick.crec,
mySpKauNrec,
comp(0),
comp(0),
comp(0),
comp(0),
comp(0),
if((getlast saldmoun WHERE (('4020' == saldmoun.scheto AND
'' == saldmoun.subossch and
mySpKauNrec == saldmoun.kauos[1] and
pick.crec == saldmoun.kodspo (noindex) //?
)) and myPlan = saldmoun.cplanssch
and saldmoun.datesal<=dbeg) =tsOK,
saldmoun.datesal,date(1,month(dbeg),year(dbeg))),sub_day(dbeg,1)))

Что она делает:
1. Внизу, в датах ищет существующее сальдо в таблице сальдо за месяц и если находит,
то в качестве первой даты берёт ту дату. Если не находит сальдо вообще, то ставит
начало отчетного периода (первое число месяца).
2. Вторая дата это начальная минус одни.

Например ты ввёл сальдо на 1.08.05
если в функции задашь даты, например от 5 до 15 то увидишь во входящем сальдо сальдо на 1-е число.

А в примере ты делаешь от июля по сентябрья, а сальдо введено в августе. оно не попадёт в во входящее сальдо.
А вот если бы были обороты в этот период, то они кстати должны были бы посчитаться, и на текущее число, получил бы
входящее сальдо, состоящее из оборотов.

Удачи... :)

Добавлено: 12 сен 2005, 13:48
ikav
Вот блин, все ведь работало :D , свежим взглядом посмотрел после выходных. Оказалось вместо подразделения КАУ ставил. Начал другой счет проверять, тут-то все и обноружилось! Извините все :?.

Добавлено: 12 сен 2005, 16:39
ikav
Еще вопрос, а эта функция вообще может таблицу заполнять с разными МЦ и разными счетами?
Пытаюсь добавить расчет сальдо еще и по другому счету, а в таблице только одна запись по последнему расчету.
Как сделать, чтобы предыдущий расчет не удалялся, т.е. было две, три и т.д. записей?

Добавлено: 13 сен 2005, 07:39
Алексей
Ни как. Создаёшь временную таблицу, свою. Делаешь расчет по одному счету, запоминаешь к себе. Делаешь по другому счету, запоминаешь к себе в таблицу. Далее свою таблу наполняем оборотами.
Выводишь на печать и получаешь оборотно-салдовую ведомость.
:)