// Скрипт проверяет цены закупки во всех первичных карточках и выставляет их равными этим ценам (поле cena) var table :ttable; tapr_t,tars_t,tapr_n,tars_n :Ttable; ID :integer; ID1 :integer; pCycle :integer; recc :integer; cnt_changed :integer; tm :tdatetime; Field :TField; begin tm := now; table := ttable.create(nil); with TMyWait.create('Идет проверка данных') do try tapr_t := ttable.create(table); tars_t := ttable.create(table); tapr_n := ttable.create(table); tars_n := ttable.create(table); try table.databasename := 'dbkassa'; table.tablename := 'pr_tovar'; table.open; begin tapr_t.close; tapr_t.databasename := table.databasename; tapr_t.tablename := 'pr_tovar.db'; tapr_t.open; tapr_n.close; tapr_n.databasename := table.databasename; tapr_n.tablename := 'pr_nakl.db'; tapr_n.open; tars_t.close; tars_t.databasename := table.databasename; tars_t.tablename := 'rs_tovar.db'; tars_t.open; tars_n.close; tars_n.databasename := table.databasename; tars_N.tablename := 'rs_nakl.db'; tars_n.open; progressbarmax := table.recordcount; cnt_changed := 0; //Query.disablecontrols; try table.first; while not table.eof do begin if tapr_t.findkey([table.fieldbyname('id').asinteger]) // просто синхронизация and tapr_n.findkey([table.fieldbyname('id_nakl').asinteger]) and ((pos('П',tapr_n.fieldbyname('osnov').asstring)=1) or (pos('В',tapr_n.fieldbyname('osnov').asstring)=1)) then begin // первичная карточка pcycle := 0; while true do begin pcycle := pcycle + 1; if pcycle >1000 then break; if tapr_n.findkey([tapr_t.fieldbyname('id_nakl').asinteger]) and ((pos('П', tapr_n.fieldbyname('osnov').asstring)=1) or (pos('В', tapr_n.fieldbyname('osnov').asstring)=1) ) and tars_t.findkey([tapr_t.fieldbyname('id_rs').asinteger]) and tapr_t.findkey([tars_t.fieldbyname('id_pr').asinteger]) then id := tapr_t.fieldbyname('id').asinteger else break; end; if (tapr_t.fieldbyname('id').asinteger <> table.fieldbyname('id').asinteger) and (tapr_t.fieldbyname('cena').asfloat<> table.fieldbyname('cena').asfloat) then begin table.edit; table.fieldbyname('cena').asfloat := tapr_t.fieldbyname('cena').asfloat; table.post; cnt_changed := cnt_changed + 1; advancedtext := 'Изменено позиций: '+inttostr(cnt_changed); end; end; table.next; incprogress; end; finally //Query.enablecontrols; end; //CreateHint('Пройдено'); application.processmessages; end; table.close; CreateHIntI('Операция завершена за '+timetostr(now-tm)+#13+'Изменено позиций: '+inttostr(cnt_changed),'',0); except bvMessageError(ExceptionMessage); end finally free; table.free; end end.