0
Отвечен
Как получить по лицевому счету сумму начислений по заданному подразделению за месяц
Как в таблице с помощью функции приема получить по лицевому счету сумму начислений по заданному подразделению за месяц?
предположительно R_Col_S_MV("1","н",60,DT,DT2 ,*) здесь не подходит?
Сервис поддержки клиентов работает на платформе UserEcho
Может есть смысл создать свою таблицу на основе (например развернутой ведомости) и при формировании просто выбрать по подразделениям? Или нужно именно по определенному подразделению?
R_Col_S_MV "потеряет" некоторые суммы (например - если по виду есть суммы, но он по какой-то причине "закрыт" в периоде выборки).
Лучше использовать CashSumm.
А ещё лучше - взять готовое решение и чуть-чуть допилить его под свои нужды. Например, если вставить в выборку В9 после столбца "код совместительства" столбец "код подразделения" (и, если нужно, "наименование подразделения"):
То получится выборка с разбивкой сумм по подразделениям.
Если нужно, чтобы выборка собирала суммы по заранее заданному подразделению, то в поле
надо вставить вызов функции запроса кода подразделения.
З.Ы. А чем не устраивает "Сод по НУ". В нем получить сумму по заданному подразделению ещё проще.
Применил скриптовую ф-ю CashSummProp. и нужное подразделение отобрал при просмотре совместительств, все получилось, спасибо!
Поделились бы "кодиком", для будущих поколений..
// функция приема: сбор суммы по столбцу (здесь ТВХ=73), заданному подразделению и месяцу начисления
getNachPodr(spif,pd,pdmain,dt)
{
// параметры:
//spif - список источников из таблицы, при необходимости можно из него отбирать, ниже закомментарено
//pd - код необходимого подразделения
//pdmain - код осн подр. на случай если в строке вида подразделение=0,
//dt - абсолютный номер месяца
int comb;
int srci=0; // вариант по всем источникам
int subj;
int podr;
int pdi=atoi(pd);
int pdmaini=atoi(pdmain);
int pos;
char src[4];
double res;
string sp=spif;
var CL=CreateObject("CombineList");
var it = CL.CreateIterator();
var prop = CreateObject("APropBE");
int month = dt; //Transl_Date_To_Abs(dt);
res=.0;
//цикл по списку источников
//for (pos=1; pos<=strlen(sp); pos++) if (substr(sp,pos,1)==",") break;
//while (pos<=strlen(sp))
//{
// strcpy(src,trimN(substr(sp,1,pos-1)));
// srci = atoi(src);
for (it.SetBegin();!it.IsEnd();it.Next()) // цикл по совместительствам
{
comb = it.CurKey();
subj = CL.GetIDSubject(comb);
podr = CL.GetPodr(comb);
prop.Init(srci,subj,podr,comb);
if (podr==pdi || (podr==0 && pdi==pdmaini)) res=res+CashSummProp(0,72,month,month,96,CL_COL|CL_SOURCE|CL_NACH|CL_MV,prop);
}
//sp=substr(sp,pos+1);
//if (strlen(sp)==0) break;
//for (pos=1; pos<=strlen(sp); pos++) if (substr(sp,pos,1)==",") break;
//}
return res;
}
А зачем тут цикл по сов-вам?
Почему сразу по всем не собрать?
не уверен, что корректно отберется по подразделению строки, хотя можно и попробовать, просто вчера времени не было на эксперименты, но сейчас можно и допилить.