Переделываю расчет НДФЛ в ЗиК-е на прямой запрос. При выполнении запроса происходит лавинообразное "съедание" памяти и затем падение 1С. Как быть? Вот код: [code]Мета = СоздатьОбъект("MetaDataWork"); СЗначисления = СоздатьОбъект("СписокЗначений");
Для Индекс = 1 По ГруппаРасчетов.ВсеУдержанныеНДФЛ.Количество() Цикл еУдержанныеНДФЛ.ПолучитьРасчет(Индекс)), 27, 13))); КонецЦикла; СтрокаУсловияВсеУдержанныеНДФЛ = Мета.ПолучитьСтрокуИзСЗ(СЗначисления); СЗначисления.УдалитьВсе(); Для Индекс = 1 По ГруппаРасчетов.ВсеИсчисленныеНДФЛ.Количество() Цикл еИсчисленныеНДФЛ.ПолучитьРасчет(Индекс)), 27, 13))); КонецЦикла; СтрокаУсловияВсеИсчисленныеНДФЛ = Мета.ПолучитьСтрокуИзСЗ(СЗначисления); СЗначисления.УдалитьВсе(); Для Индекс = 1 По ГруппаРасчетов.ОсобоеИсчислениеНДФЛ.Количество() Цикл обоеИсчислениеНДФЛ.ПолучитьРасчет(Индекс)), 27, 13))); КонецЦикла; СтрокаУсловияОсобоеИсчислениеНДФЛ = Мета.ПолучитьСтрокуИзСЗ(СЗначисления); СЗначисления.УдалитьВсе(); ЗапросКЖурналуЗарплата = СоздатьОбъект("ODBCRecordset"); ТекстЗапросаДляЖЗ = " |SELECT | ЖР.iddoc AS [Документ $Документ], | j_doc.iddocdef AS Документ_вид, | СпрСотрудников.CODE AS [КодСотрудника], | СпрСотрудников.DESCR AS [НаименованиеСотрудника], | ЖР.FF202 AS [ОсновнойЭлемент $Справочник.Сотрудники], //| $СпрСотрудников.ОсновнойЭлемент AS [ОсновнойЭлемент $Справочник.Сотрудники], | ЖР.idalg AS [ВР $ВидРасчета], | ЖР.period AS ПериодРегистрации, | ЖР.dateb AS НачалоПериодаДействия, | ЖР.datee AS ОкончаниеПериодаДействия, | ЖР.SP1089 AS НомерСтрокиДокумента, | ЖР.Recalc, | CASE | WHEN ЖР.IDALG IN (" + СтрокаУсловияВсеУдержанныеНДФЛ + ") THEN 1 | ELSE 0 | END AS ВходитВВсеУдержанныеНДФЛ, | CASE | WHEN ЖР.IDALG IN (" + СтрокаУсловияВсеИсчисленныеНДФЛ + ") THEN 1 | ELSE 0 | END AS ВходитВВсеИсчисленныеНДФЛ, | CASE | WHEN ЖР.IDALG IN (" + СтрокаУсловияОсобоеИсчислениеНДФЛ + ") THEN 1 | ELSE 0 | END AS ВходитВОсобоеИсчислениеНДФЛ, | SUM (ЖР.result) AS Результат, | $ПоследнееЗначение.Сотрудники.СтатусНеРезидента(ЖР.FF202, :КонГода) AS [СтатусНеРезидента] |FROM | $ЖурналРасчетов.Зарплата AS ЖР (nolock) |INNER JOIN | _1sjourn j_doc (nolock) on j_doc.iddoc = ЖР.iddoc |INNER Join | $Справочник.Сотрудники As СпрСотрудников (nolock) ON СпрСотрудников.ID = ЖР.FF202 |WHERE | (ЖР.FF202 IN (Select Val FROM #Сотрудники)) AND | (ЖР.Result <> 0) AND | ((ЖР.period >= '" + Формат(НачМесяца(НачалоПеродаОсмотра),"Д ГГГГММДД") + "M') AND (ЖР.period <= '" + Формат(НачМесяца(ОкончаниеПеродаОсмотра),"Д ГГГГММДД") + "M')) |GROUP BY дников.DESCR,ЖР.dateb,ЖР.datee,ЖР.SP1089,ЖР.RECALC |ORDER BY СпрСотрудников.CODE |"; ЗапросКЖурналуЗарплата.УложитьСписокОбъектов(Сотрудники,"#Сотрудники"); ЗапросКЖурналуЗарплата.УстановитьТекстовыйПараметр("КонГода",ОкончаниеГода); Предупреждение("Запускаем прямой запрос"); ТЗ = СоздатьОбъект("ИндексированнаяТаблица"); ТЗ = ЗапросКЖурналуЗарплата.ВыполнитьИнструкцию(ТекстЗапросаДляЖЗ); Предупреждение("Запрос выполнился");[/code]
|