АяяяЯA{ program GroupProgram; var typeb,typer,nac,okr,new_part_id, infor,mmbsh: string; trn, trn1, query, query1, query2: cardinal; flag : boolean; nac5 : double; PosStr,PosStr1,PosStr2,i : integer; // позиция поиска подстроки в строке Саша 18-07-2011 begin i := 0; trn:=CREATEIBTRANSACTION; STARTIBTRANSACTION(trn,1); infor := ''; try //Проверяем режим действуюший наценки query:=ExecIBQuery(trn,'select PARAM_VALUE from PARAMS where PARAM_ID=''PARAMS_NAC''',1); if not IBQUERY_EOF(query) then if (IBQuery_FieldByName_i(query, 'PARAM_VALUE')=1) then begin //m_Manager.logit('ВНИМАНИЕ: Операция наценки ЗАПРЕЩЕНА действующими глобальными настройками'); ShowMessage('ВНИМАНИЕ: Операция наценки ЗАПРЕЩЕНА действующими глобальными настройками'); exit; end; //m_Manager.logit('***Начинаем операцию наценки***'); query:=ExecIBQuery(trn,'select * from PARAMS WHERE (parent_id =-50) or (param_id=''MIN_NAC'') or (param_id=''MAX_NAC'')',1); while not(IBQUERY_EOF(query)) do begin if trim(IBQuery_FieldByName_s(query, 'param_id'))='NAC5' then nac5 := IBQuery_FieldByName_f(query, 'param_value'); IBQuery_Next(query); end // делаем запрос по текущему активному документу query:=ExecIBQuery(trn,'select * from vw_doc_detail_active where doc_id='+inttostr(m_activedoc.ID)+' order by id',1); while not IBQUERY_EOF(query) do begin i := i+1; begin //i := i+1; infor := infor +IntToStr(i)+'- Препарат '+IBQuery_FieldByName_s(query, 'sname')+', '; mmbsh := IBQuery_FieldByName_s(query, 'MMBSH'); //Группа ЖНВЛС PosStr := Pos('ЖНВЛС',Trim(mmbsh)); //Группа Дет. Пит. PosStr1 := Pos('2={',Trim(mmbsh)); PosStr2 := Pos('79={',Trim(mmbsh)); if PosStr1>0 then begin nac := FloatToStr(nac5); infor := infor +'Группа товара - Дет. питание, '; end // Если группа не нашли группу применяем базовые наценки else if PosStr2>0 then begin nac := '45'; infor := infor +'Группа товара - БАД, '; end else if PosStr > 0 Then nac := '100' else nac := '35'; infor := infor +'Применяем базовые правила наценки '+nac; m_activedoc.FULLMAKEPRICEBYNAC(StrToFloat(NAC),IBQuery_FieldByName_i(query, 'id')); end; // m_Manager.logit(infor); infor := ''; IBQUERY_NEXT(query); if (i mod 10) = 0 then begin // m_Manager.logit('обновляемся ... '); Application.ProcessMessages; end; end; // Удаляем транзацию EndIBTransaction(trn,1); except ShowMessage('Операция не завершена! Ошибка!'); EndIBTransaction(trn,0); end; FREEIBQUERY(query); FREEIBTRANSACTION(trn); m_activedoc.REFRESHDATA; end.IFPSЏ TAPPLICATIONЏTFRAMECUSTOMDOCЏTSELECTЏTFRAMEDOCARCHIVEЏTFRMMANAGERXP2Џ TFRAMEMONEYЏ TSTRINGLISTЏ TFRAMEAGENTSЏTFRAMENVGPANEL  С2 CREATEIBTRANSACTIONSTARTIBTRANSACTION EXECIBQUERY IBQUERY_EOFIBQUERY_FIELDBYNAME_I SHOWMESSAGETRIMIBQUERY_FIELDBYNAME_SIBQUERY_FIELDBYNAME_F IBQUERY_NEXTINTTOSTRclass:TFRAMECUSTOMDOC|ID|POS FLOATTOSTR-class:TFRAMECUSTOMDOC|FULLMAKEPRICEBYNAC| STRTOFLOAT%class:TAPPLICATION|PROCESSMESSAGES|ENDIBTRANSACTION FREEIBQUERYFREEIBTRANSACTION$class:TFRAMECUSTOMDOC|REFRESHDATA| APPLICATION M_ACTIVEDOCM_SELECT M_DOCARCHIVE M_MANAGERM_CASHDOCARCHIVEPROGRAM_RESULTM_AGENTS M_NVGPANEL   `  ` яяяя$ яяяя‰ `  ` :select PARAM_VALUE from PARAMS where PARAM_ID='PARAMS_NAC' ` ````О ` PARAM_VALUE `` `` `d ` IВНИМАНИЕ: Операция наценки ЗАПРЕЩЕНА действующими глобальными настройками `  ` [select * from PARAMS WHERE (parent_id =-50) or (param_id='MIN_NAC') or (param_id='MAX_NAC') ` ```Х` ` param_id ``` `` NAC5`= ` param_value `  ` ююяя `  ` 0select * from vw_doc_detail_active where doc_id= `` ` ``` order by id ` ```В` `` ` ` `` ``` - Препарат ` sname ````` , ` ` MMBSH ` `` ` ЖНВЛС  `` ` 2={  `` ` 79={  ` `l `  `` Группа товара - Дет. питание, `Н ` `W  45 `` Группа товара - БАД, `O ` `  100  35 `` "Применяем базовые правила наценки ` ` ` id ``  ` ``` ` `  `` `` ` `ыяя `  ` ` Операция не завершена! Ошибка! ` ` ` ` `