0
Отвечен

Как получить по лицевому счету сумму начислений по заданному подразделению за месяц

Алексей Панчихин 1 год назад в Прочее обновлен 1 год назад 8

Как в таблице с помощью функции приема получить по лицевому счету сумму начислений по заданному подразделению за месяц?

предположительно R_Col_S_MV("1","н",60,DT,DT2 ,*) здесь не подходит?

Может есть смысл создать свою таблицу на основе (например развернутой ведомости) и при формировании просто выбрать по подразделениям? Или нужно именно по определенному подразделению?

Image 7111

R_Col_S_MV "потеряет" некоторые суммы (например - если по виду есть суммы, но он по какой-то причине "закрыт" в периоде выборки). 

Лучше использовать CashSumm.

А ещё лучше - взять готовое решение и чуть-чуть допилить его под свои нужды. Например, если вставить в выборку В9 после столбца "код совместительства" столбец "код подразделения" (и, если нужно, "наименование подразделения"):

Image 7112

То получится выборка с разбивкой сумм по подразделениям.

Если нужно, чтобы выборка собирала суммы по заранее заданному подразделению, то в поле 

Image 7113

надо вставить вызов функции запроса кода подразделения. 

З.Ы. А чем не устраивает "Сод по НУ". В нем получить сумму по заданному подразделению ещё проще.

Применил скриптовую ф-ю 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;

}

А зачем тут цикл по сов-вам?

Почему сразу по всем не собрать?

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

Сервис поддержки клиентов работает на платформе UserEcho