UserGetZpGosUzizpId(Uzizp) // todo Вычисление этого идентификатора нужно и в шарпе (например, при валидачии редактируемых данных). Скорее всего его нужно сделать в шарпе (чтобы бы единый вариант). // Идентификатор трудового договора для ЗЛ (для одного Item) (для отдельного элемента блока УЗиЗП) { string contractId = ""; string separator = "~"; if ( (zpgosHowMakeIdUzizp & 0x01)==0 ) { var db = CreateObject("KDate"); var de = CreateObject("KDate"); db.SetVariantDate(Uzizp.Period.DateBeg); de.SetVariantDate(Uzizp.Period.DateEnd); contractId += db.GetStr(); contractId += separator + de.GetStr(); } contractId += separator + Uzizp.Podr.Name; contractId += separator + to_string(Uzizp.Podr.Oid); contractId += separator + Uzizp.PositionCode; for ( int i = 0; i < Uzizp.SouzItems.Count; i++ ) { var souzItem = Uzizp.SouzItems.Get(i); contractId += separator + souzItem.Code; contractId += separator + to_string(souzItem.Value); } contractId += separator + to_string(Uzizp.Contract.Kind); contractId += separator + to_string(Uzizp.Contract.Time); contractId += separator + Uzizp.Qualification.Code; contractId += separator + to_string(Uzizp.Qualification.Level); if ( (zpgosHowMakeIdUzizp & 0x02)==0 ) contractId += separator + to_string(Uzizp.Qualification.StaffUnit); /* for ( int i = 0; i < Uzizp.Qualification.FixedItems.Count; i++ ) contractId += separator + to_string(Uzizp.Qualification.FixedItems.Get(i).Value); */ return contractId; } GetProfName(Prof) { char s[256]; GetValueClassif("T_GUIDE\\prof.tab",Prof,s,255,"Value","Kod"); return s; } Message ( &Arg, &pcT, W, A) ////////////////////////////////////////////////////////////////// // Сообщение(парам1,парам2) // парам1 - текст сообщения // парам2 - заголовок окна ////////////////////////////////////////////////////////////////// { var FuncParam = CreateObject("ParamFuncRW"); FuncParam.IInitial(static_cast_to_string(Arg),",",10); int CountParam=FuncParam.Count(); if ( CountParam ) { AmbaMessageBox(FuncParam.Get(0),FuncParam.Get(1),1); } return pcT; } ToLeft( &Arg, &pcT, W, A) ////////////////////////////////////////////////////////////////// // Выравнивание числа по левому краю ////////////////////////////////////////////////////////////////// { double Sum = atof(GetVarValue(Arg)); char StrTmp[W+256]; sprintf(StrTmp,"%-*.*f",W,A,Sum); Text_Text(pcT,StrTmp,W); return pcT; } UserCombineRefF2(&buffer,bufsize,handle,&C_Params) { // функция для вызова справочника совместительств из таблицы // у поля Совместительство в таблице настройки написать в функции предварительной обработки: // CLASSIF(S:UserCombineRefF2) // ЧИТАЕТ ЛИЦЕВОЙ СЧЕТ с табельным номером взятым из поля C_FIO char ss[bufsize+1]; CharToOem(buffer,ss); var CTabl=CreateObject("CurPrnTbl"); CTabl.Initial(C_Params.pTabl); int Tn=atoi(CTabl.TextS("C_FIO",CTabl.Get_N_Rcr())); int er=LSRead(Tn,2); if (er==1) { int rc=ShowCombineRef(ss,ss, 2, 5, 70, 15); if (rc!=ESC) { OemToChar(ss, buffer); return 1; } } return 0; }