Добрый день. Понадобилось для бухгалтерии изменить РазделительУчета с ЮрЛица на фирмы. Этот процесс в принципе понятен и реализуется стандартными 1С средствами. Но появилась необходимость формировать бух движения и итоги по СпискуЗначений. Помятуя о подмене запросов попытался это действо совершить с помощью vk_hook :)
Код того, что отправляется на SQL во время генерации ОСВ [code]Select * from _1SACCS(NOLOCK INDEX=CODE) where PLANID=? order by PLANID,SCHKOD Select COUNT(*) from _1SACCS(NOLOCK) where PLANID=? and SCHKOD<=? SELECT ACCID,CURRID,FLAGS=MAX(FLAGS),SUM_=SUM(SUM_),CURSUM=SUM(CURSUM) FROM ( SELECT ACCID,CURRID,FLAGS,SUM_=CASE KIND WHEN '4' THEN SD ELSE 0 END,CURSUM=CASE KIND WHEN '5' THEN SD ELSE 0 END FROM _1SBKTTL BKTTL(NOLOCK) WHERE DATE='20120101' AND PLANID=7984 AND SP32733=? AND (KIND = '4' OR KIND = '5') ) AS SD GROUP BY ACCID,CURRID HAVING SUM(SUM_)<>0 OR SUM(CURSUM)<>0! !SELECT M(CURSUMDT),CURSUMKT=SUM(CURSUMKT) FROM ( SELECT ACCID,CURRID,FLAGS,DATE=CONVERT( DATETIME, '20120101' ),SUMDT=CASE KIND WHEN '4' THEN OBDT1 ELSE 0 END,SUMKT=CASE KIND WHEN '4' THEN OBKT1 ELSE 0 END,CURSUMDT=CASE KIND WHEN '5' THEN OBDT1 ELSE 0 END,CURSUMKT=CASE KIND WHEN '5' THEN OBKT1 ELSE 0 END FROM _1SBKTTL BKTTL(NOLOCK)
WHERE DATE='20120101' AND PLANID=7984 AND SP32733=? AND KIND>='4' AND KIND<='6') AS OB GROUP BY ACCID,CURRID,DATE HAVING SUM(SUMDT)<>0 OR SUM(SUMKT)<>0 OR SUM(CURSUMDT)<>0 OR SUM(CURSUMKT)<>0 ORDER BY DATE[/code]
В общем то в нем все понятно. Добавил подмену запроса: [code] vk_hook.НовыйSQL=" |create table #P1 (val varchar(9)) |insert into #P1 values(' F ') |--insert into #P1 values(' 6 ') | |SELECT ACCID,CURRID,FLAGS=MAX(FLAGS),SUM_=SUM(SUM_),CURSUM=SUM(CURSUM) |FROM |( |SELECT ACCID,CURRID,FLAGS,SUM_=CASE KIND WHEN '4' THEN SD ELSE 0 END,CURSUM=CASE KIND WHEN '5' THEN SD ELSE 0 END |FROM _1SBKTTL BKTTL(NOLOCK) |WHERE DATE='20120101' AND PLANID=7984 AND (SP32733 in (SELECT val from #P1)) AND (KIND = '4' OR KIND = '5') |) AS SD |GROUP BY ACCID,CURRID |HAVING SUM(SUM_)<>0 OR SUM(CURSUM)<>0 | |drop table #P1 |"; [/code] и [code] vk_hook.НовыйSQL=" |create table #P1 (val varchar(9)) |insert into #P1 values(' F ') |--insert into #P1 values(' 6 ') | |SELECT M(CURSUMDT),CURSUMKT=SUM(CURSUMKT) | FROM | ( |SELECT ACCID,CURRID,FLAGS,DATE=CONVERT( DATETIME, '20121001' ),SUMDT=CASE KIND WHEN '4' THEN OBDT1+OBDT2+OBDT3 ELSE 0 END,SUMKT=CASE KIND WHEN '4' THEN OBKT1+OBKT2+OBKT3 ELSE 0 END,CURSUMDT=CASE KIND WHEN '5' THEN OBDT1+OBDT2+OBDT3 ELSE 0 END,CURSUMKT=CASE KIND WHEN '5' THEN OBKT1+OBKT2+OBKT3 ELSE 0 END |FROM _1SBKTTL BKTTL(NOLOCK) |WHERE DATE>='20121001' AND DATE<='20121001' AND PLANID=7984 AND (SP32733 in (SELECT val from #P1)) AND KIND>='4' AND KIND<='6') AS OB | GROUP BY ACCID,CURRID,DATE |HAVING SUM(SUMDT)<>0 OR SUM(SUMKT)<>0 OR SUM(CURSUMDT)<>0 OR SUM(CURSUMKT)<>0 ORDER BY DATE | |drop table #P1 |"; [/code]
но в результате получил ошибку :( [img]http://logofree.ru/other/errorcount.jpg[/img]
Я предполагаю, что возможно нужно еще и второй запрос из 4х подменять, но на что? подскажите пожалуйста, как завести сей паровоз? :)
|