"Имеется база 1С81 ЗБУ релиз 1.0.17.1. При расчете среднего заработка в документе Начисление отпуска программа задумывается на 1.5-2 минуты. У других клиентов та же процедура проходит за 5-10 секунд. Обращались в поддержу 1С, но нам ответили, что сами не знают почему так и сейчас заниматься этим не будут. Просмотр кода показал, что стопор идет в Общем модуле ПроведениеРасчетовПереопределяемый, когда идет выполнение запроса в стр. 2234. Что может так тормозить программу? Кто-нибудь может пролить свет на этот вопрос?<br>*****************************ТЕКСТ ЗАПРОСА**************************************<br>ВЫБРАТЬ<br> РасчетСреднегоЗаработка.НомерСтроки,<br> РасчетСреднегоЗаработка.ДатаНачалаСобытия,<br> РасчетСреднегоЗаработка.ДатаНачалаРасчетногоПериода,<br> РасчетСреднегоЗаработка.ДатаОкончанияРасчетногоПериода,<br> РасчетСреднегоЗаработка.ПериодРасчетаСреднегоЗаработка,<br> РасчетСреднегоЗаработка.ПериодРегистрации,<br> РасчетСреднегоЗаработка.БазовыйПериодНачало,<br> РасчетСреднегоЗаработка.БазовыйПериодКонец,<br> РасчетСреднегоЗаработка.Сотрудник КАК Сотрудник,<br> РасчетСреднегоЗаработка.Сотрудник.Физлицо КАК ФизЛицо,<br> РасчетСреднегоЗаработка.Сотрудник.Организация КАК Организация,<br> РасчетСреднегоЗаработка.ВидРасчета КАК ВидРасчета,<br> СреднийЗаработокБазовыеВидыРасчета.ВидРасчета КАК БазовыйВидРасчета<br>ПОМЕСТИТЬ ВТСтрокиСреднегоЗаработка<br>ИЗ<br> РегистрРасчета.РасчетСреднегоЗаработка КАК РасчетСреднегоЗаработка<br> ЛЕВОЕ СОЕДИНЕНИЕ ПланВидовРасчета.СреднийЗаработок.БазовыеВидыРасчета КАК СреднийЗаработокБазовыеВидыРасчета<br> ПО РасчетСреднегоЗаработка.ВидРасчета = СреднийЗаработокБазовыеВидыРасчета.Ссылка<br>ГДЕ<br> РасчетСреднегоЗаработка.Регистратор = &парамРегистратор<br><br>ИНДЕКСИРОВАТЬ ПО<br> Сотрудник,<br> ВидРасчета<br>;<br><br>////////////////////////////////////////////////////////////////////////////////<br>ВЫБРАТЬ<br> СтраховыеВзносыСведенияОДоходахОбороты.Период КАК Период,<br> СтраховыеВзносыСведенияОДоходахОбороты.ФизЛицо КАК ФизЛицо,<br> СтраховыеВзносыСведенияОДоходахОбороты.Организация КАК Организация,<br> СтраховыеВзносыСведенияОДоходахОбороты.ВидДохода КАК ВидДохода,<br> СтраховыеВзносыСведенияОДоходахОбороты.СкидкаОборот<br>ПОМЕСТИТЬ ВТДанныеУчетаСкидок<br>ИЗ<br> РегистрНакопления.СтраховыеВзносыСведенияОДоходах.Обороты(<br> &парамДатаС,<br> &парамДатаПо,<br> Месяц,<br> (ФизЛицо, Организация) В<br> (ВЫБРАТЬ<br> СтрокиСреднегоЗаработка.ФизЛицо,<br> СтрокиСреднегоЗаработка.Организация<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК СтрокиСреднегоЗаработка)<br> И ВидДохода В (ЗНАЧЕНИЕ(Справочник.ДоходыПоСтраховымВзносам.Матпомощь), ЗНАЧЕНИЕ(Справочник.ДоходыПоСтраховымВзносам.МатпомощьПриРожденииРебенка))) КАК СтраховыеВзносыСведенияОДоходахОбороты<br>ГДЕ<br> СтраховыеВзносыСведенияОДоходахОбороты.Период >= &ДатаЗакона213ФЗ<br><br>ОБЪЕДИНИТЬ ВСЕ<br><br>ВЫБРАТЬ<br> НАЧАЛОПЕРИОДА(ЕСНСведенияОДоходах.Период, МЕСЯЦ),<br> ЕСНСведенияОДоходах.ФизЛицо,<br> ЕСНСведенияОДоходах.Организация,<br> ЕСНСведенияОДоходах.КодДоходаЕСН,<br> СУММА(ЕСНСведенияОДоходах.Скидка)<br>ИЗ<br> РегистрНакопления.ЕСНСведенияОДоходах КАК ЕСНСведенияОДоходах<br>ГДЕ<br> (ЕСНСведенияОДоходах.ФизЛицо, ЕСНСведенияОДоходах.Организация) В<br> (ВЫБРАТЬ<br> СтрокиСреднегоЗаработка.ФизЛицо,<br> СтрокиСреднегоЗаработка.Организация<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК СтрокиСреднегоЗаработка)<br> И ЕСНСведенияОДоходах.КодДоходаЕСН В (ЗНАЧЕНИЕ(Справочник.ДоходыЕСН.Матпомощь), ЗНАЧЕНИЕ(Справочник.ДоходыЕСН.МатпомощьПриРожденииРебенка))<br> И ЕСНСведенияОДоходах.Период МЕЖДУ &парамДатаС И &парамДатаПо<br> И ЕСНСведенияОДоходах.Период < &ДатаЗакона213ФЗ<br><br>СГРУППИРОВАТЬ ПО<br> ЕСНСведенияОДоходах.ФизЛицо,<br> ЕСНСведенияОДоходах.Организация,<br> ЕСНСведенияОДоходах.КодДоходаЕСН,<br> НАЧАЛОПЕРИОДА(ЕСНСведенияОДоходах.Период, МЕСЯЦ)<br><br>ИНДЕКСИРОВАТЬ ПО<br> Период,<br> ВидДохода,<br> ФизЛицо,<br> Организация<br>;<br><br>////////////////////////////////////////////////////////////////////////////////<br>ВЫБРАТЬ<br> БазаДополнительныеНачисления.РезультатБаза,<br> БазаДополнительныеНачисления.ПериодРасчетаСреднегоЗаработка,<br> БазаДополнительныеНачисления.НомерСтроки,<br> БазаДополнительныеНачисления.ФизЛицо КАК ФизЛицо,<br> БазаДополнительныеНачисления.Организация КАК Организация,<br> ВЫБОР<br> КОГДА БазаДополнительныеНачисления.БазовыйПериодНачало < &ДатаЗакона213ФЗ<br> ТОГДА БазаДополнительныеНачисления.ВидРасчетаРазрез.КодДоходаЕСН<br> ИНАЧЕ БазаДополнительныеНачисления.ВидРасчетаРазрез.КодДоходаСтраховыеВзносы<br> КОНЕЦ КАК КодДоходаСтраховыеВзносы,<br> БазаДополнительныеНачисления.Сотрудник.ВидЗанятости КАК ВидЗанятости,<br> БазаДополнительныеНачисления.БазовыйПериодНачало КАК БазовыйПериодНачало<br>ПОМЕСТИТЬ ВТБазаДопНачисленийПоБЛ<br>ИЗ<br> РегистрРасчета.РасчетСреднегоЗаработка.БазаДополнительныеНачисленияРаботниковОрганизаций(<br> &парамИзмерения,<br> &парамИзмерения,<br> &парамРазрезыБЛ,<br> Регистратор = &парамРегистратор<br> И ВидРасчета В (ЗНАЧЕНИЕ(ПланВидовРасчета.СреднийЗаработок.ПоЗаработкуПособийС2010), ЗНАЧЕНИЕ(ПланВидовРасчета.СреднийЗаработок.ПоПремиямПособийС2010))) КАК БазаДополнительныеНачисления<br><br>ИНДЕКСИРОВАТЬ ПО<br> БазовыйПериодНачало,<br> КодДоходаСтраховыеВзносы,<br> ФизЛицо,<br> Организация<br>;<br><br>////////////////////////////////////////////////////////////////////////////////<br>ВЫБРАТЬ<br> ЕСТЬNULL(СУММА(База.РезультатБаза), 0) КАК РезультатБаза,<br> База.ЧислоМесяцев,<br> База.ПериодРасчетаСреднегоЗаработка,<br> База.НомерСтроки КАК НомерСтроки,<br> База.ОшибкаВводаСводногоТабеля,<br> ЕСТЬNULL(СУММА(База.СкидкаПоСтраховымВзносам), 0) КАК СкидкаПоСтраховымВзносам<br>ИЗ<br> (ВЫБРАТЬ<br> БазаОсновныеНачисления.РезультатБаза КАК РезультатБаза,<br> 1 КАК ЧислоМесяцев,<br> БазаОсновныеНачисления.ПериодРасчетаСреднегоЗаработка КАК ПериодРасчетаСреднегоЗаработка,<br> БазаОсновныеНачисления.НомерСтроки КАК НомерСтроки,<br> ВЫБОР<br> КОГДА ОтработанноеВремя.Период ЕСТЬ НЕ NULL <br> ТОГДА ИСТИНА<br> ИНАЧЕ ЛОЖЬ<br> КОНЕЦ КАК ОшибкаВводаСводногоТабеля,<br> 0 КАК СкидкаПоСтраховымВзносам<br> ИЗ<br> РегистрРасчета.РасчетСреднегоЗаработка.БазаОсновныеНачисленияРаботниковОрганизаций(<br> &парамИзмерения,<br> &парамИзмерения,<br> &парамРазрезы,<br> Регистратор = &парамРегистратор<br> И ВидРасчета В (&парамЗаработок)<br> И (БазовыйПериодНачало <> НАЧАЛОПЕРИОДА(БазовыйПериодНачало, МЕСЯЦ)<br> ИЛИ БазовыйПериодКонец <> КОНЕЦПЕРИОДА(БазовыйПериодКонец, МЕСЯЦ))) КАК БазаОсновныеНачисления<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.РабочееВремяРаботниковОрганизаций КАК ОтработанноеВремя<br> ПО БазаОсновныеНачисления.Сотрудник = ОтработанноеВремя.Сотрудник<br> И (НАЧАЛОПЕРИОДА(БазаОсновныеНачисления.БазовыйПериодНачало, МЕСЯЦ) = ОтработанноеВремя.Период)<br> И (ОтработанноеВремя.ВидИспользованияРабочегоВремени = ЗНАЧЕНИЕ(Справочник.КлассификаторИспользованияРабочегоВремени.Работа))<br> И (ОтработанноеВремя.ВЦеломЗаПериод)<br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> ОсновныеНачисленияРаботниковОрганизаций.Результат,<br> 1,<br> РасчетСреднегоЗаработка.ПериодРасчетаСреднегоЗаработка,<br> РасчетСреднегоЗаработка.НомерСтроки,<br> ЛОЖЬ,<br> 0<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК РасчетСреднегоЗаработка<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций<br> ПО РасчетСреднегоЗаработка.БазовыйВидРасчета = ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета<br> И РасчетСреднегоЗаработка.Сотрудник = ОсновныеНачисленияРаботниковОрганизаций.Сотрудник<br> И (ОсновныеНачисленияРаботниковОрганизаций.ПериодДействия = НАЧАЛОПЕРИОДА(РасчетСреднегоЗаработка.БазовыйПериодНачало, МЕСЯЦ))<br> И (ОсновныеНачисленияРаботниковОрганизаций.ПериодРегистрации <= РасчетСреднегоЗаработка.ПериодРегистрации)<br> ГДЕ<br> РасчетСреднегоЗаработка.ВидРасчета В(&парамЗаработок)<br> И РасчетСреднегоЗаработка.БазовыйПериодНачало = НАЧАЛОПЕРИОДА(РасчетСреднегоЗаработка.БазовыйПериодНачало, МЕСЯЦ)<br> И РасчетСреднегоЗаработка.БазовыйПериодКонец = КОНЕЦПЕРИОДА(РасчетСреднегоЗаработка.БазовыйПериодКонец, МЕСЯЦ)<br> И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета ЕСТЬ НЕ NULL <br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> БазаДополнительныеНачисления.РезультатБаза,<br> ВЫБОР<br> КОГДА БазаДополнительныеНачисления.ЧислоМесяцевРазрез = 0<br> ТОГДА 1<br> ИНАЧЕ БазаДополнительныеНачисления.ЧислоМесяцевРазрез<br> КОНЕЦ,<br> БазаДополнительныеНачисления.ПериодРасчетаСреднегоЗаработка,<br> БазаДополнительныеНачисления.НомерСтроки,<br> ЛОЖЬ,<br> 0<br> ИЗ<br> РегистрРасчета.РасчетСреднегоЗаработка.БазаДополнительныеНачисленияРаботниковОрганизаций(<br> &парамИзмерения,<br> &парамИзмерения,<br> &парамРазрезыДоп,<br> Регистратор = &парамРегистратор<br> И ВидРасчета В (&парамЗаработокБезБольничных)) КАК БазаДополнительныеНачисления<br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> БазаДополнительныеНачисления.РезультатБаза - ЕСТЬNULL(ВЫБОР<br> КОГДА ЕСТЬNULL(ДанныеУчетаСкидок.СкидкаОборот, 0) = 0<br> ТОГДА 0<br> КОГДА БазаДополнительныеНачисления.РезультатБаза > ДанныеУчетаСкидок.СкидкаОборот<br> ТОГДА ДанныеУчетаСкидок.СкидкаОборот<br> ИНАЧЕ БазаДополнительныеНачисления.РезультатБаза<br> КОНЕЦ, 0),<br> 1,<br> БазаДополнительныеНачисления.ПериодРасчетаСреднегоЗаработка,<br> БазаДополнительныеНачисления.НомерСтроки,<br> ЛОЖЬ,<br> ЕСТЬNULL(ВЫБОР<br> КОГДА ЕСТЬNULL(ДанныеУчетаСкидок.СкидкаОборот, 0) = 0<br> ТОГДА 0<br> КОГДА БазаДополнительныеНачисления.РезультатБаза > ДанныеУчетаСкидок.СкидкаОборот<br> ТОГДА ДанныеУчетаСкидок.СкидкаОборот<br> ИНАЧЕ БазаДополнительныеНачисления.РезультатБаза<br> КОНЕЦ, 0)<br> ИЗ<br> ВТБазаДопНачисленийПоБЛ КАК БазаДополнительныеНачисления<br> ЛЕВОЕ СОЕДИНЕНИЕ ВТДанныеУчетаСкидок КАК ДанныеУчетаСкидок<br> ПО БазаДополнительныеНачисления.ФизЛицо = ДанныеУчетаСкидок.ФизЛицо<br> И БазаДополнительныеНачисления.Организация = ДанныеУчетаСкидок.Организация<br> И БазаДополнительныеНачисления.КодДоходаСтраховыеВзносы = ДанныеУчетаСкидок.ВидДохода<br> И (БазаДополнительныеНачисления.ВидЗанятости <> ЗНАЧЕНИЕ(Перечисление.ВидыЗанятостиВОрганизации.ВнутреннееСовместительство))<br> И БазаДополнительныеНачисления.БазовыйПериодНачало = ДанныеУчетаСкидок.Период<br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> Дополнительные.Результат,<br> 12,<br> РасчетСреднегоЗаработка.ПериодРасчетаСреднегоЗаработка,<br> РасчетСреднегоЗаработка.НомерСтроки,<br> ЛОЖЬ,<br> 0<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК РасчетСреднегоЗаработка<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК Дополнительные<br> ПО РасчетСреднегоЗаработка.БазовыйВидРасчета = Дополнительные.ВидРасчета<br> И РасчетСреднегоЗаработка.Сотрудник = Дополнительные.Сотрудник<br> И (НАЧАЛОПЕРИОДА(Дополнительные.ПериодРегистрации, МЕСЯЦ) <= РасчетСреднегоЗаработка.ПериодРегистрации)<br> И (ГОД(Дополнительные.БазовыйПериодНачало) = ГОД(РасчетСреднегоЗаработка.ДатаНачалаСобытия) - 1)<br> ГДЕ<br> РасчетСреднегоЗаработка.ВидРасчета В(&парамПоГодовойПремии)<br> И Дополнительные.ВидРасчета ЕСТЬ НЕ NULL <br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> ОсновныеНачисления.Результат,<br> 12,<br> РасчетСреднегоЗаработка.ПериодРасчетаСреднегоЗаработка,<br> РасчетСреднегоЗаработка.НомерСтроки,<br> ЛОЖЬ,<br> 0<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК РасчетСреднегоЗаработка<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления<br> ПО РасчетСреднегоЗаработка.БазовыйВидРасчета = ОсновныеНачисления.ВидРасчета<br> И РасчетСреднегоЗаработка.Сотрудник = ОсновныеНачисления.Сотрудник<br> И (ОсновныеНачисления.ПериодРегистрации <= РасчетСреднегоЗаработка.ПериодРегистрации)<br> И (ГОД(ВЫБОР<br> КОГДА ОсновныеНачисления.ВидРасчета.ПериодДействияБазовый<br> ТОГДА ОсновныеНачисления.ПериодДействияНачало<br> ИНАЧЕ ОсновныеНачисления.БазовыйПериодНачало<br> КОНЕЦ) = ГОД(РасчетСреднегоЗаработка.ДатаНачалаСобытия) - 1)<br> ГДЕ<br> РасчетСреднегоЗаработка.ВидРасчета В(&парамПоГодовойПремии)<br> И ОсновныеНачисления.ВидРасчета ЕСТЬ НЕ NULL <br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> Дополнительные.Результат,<br> 12,<br> РасчетСреднегоЗаработка.ПериодРасчетаСреднегоЗаработка,<br> РасчетСреднегоЗаработка.НомерСтроки,<br> ЛОЖЬ,<br> 0<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК РасчетСреднегоЗаработка<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК Дополнительные<br> ПО РасчетСреднегоЗаработка.БазовыйВидРасчета = Дополнительные.ВидРасчета<br> И РасчетСреднегоЗаработка.Сотрудник = Дополнительные.Сотрудник<br> И (НАЧАЛОПЕРИОДА(Дополнительные.ПериодРегистрации, МЕСЯЦ) <= РасчетСреднегоЗаработка.ПериодРегистрации)<br> И (ГОД(Дополнительные.БазовыйПериодНачало) = ГОД(РасчетСреднегоЗаработка.ДатаНачалаСобытия) - 1)<br> И (Дополнительные.ПериодРегистрации МЕЖДУ РасчетСреднегоЗаработка.БазовыйПериодНачало И РасчетСреднегоЗаработка.БазовыйПериодКонец<br> ИЛИ РасчетСреднегоЗаработка.БазовыйПериодНачало = РасчетСреднегоЗаработка.ДатаНачалаРасчетногоПериода<br> И Дополнительные.ПериодРегистрации < РасчетСреднегоЗаработка.ДатаНачалаРасчетногоПериода<br> ИЛИ КОНЕЦПЕРИОДА(РасчетСреднегоЗаработка.БазовыйПериодКонец, ДЕНЬ) = КОНЕЦПЕРИОДА(РасчетСреднегоЗаработка.ДатаОкончанияРасчетногоПериода, ДЕНЬ)<br> И Дополнительные.ПериодРегистрации > РасчетСреднегоЗаработка.ДатаОкончанияРасчетногоПериода)<br> ГДЕ<br> РасчетСреднегоЗаработка.ВидРасчета В(&парамПоГодовойПремииИндексируемые)<br> И Дополнительные.ВидРасчета ЕСТЬ НЕ NULL <br> <br> ОБЪЕДИНИТЬ ВСЕ<br> <br> ВЫБРАТЬ<br> ОсновныеНачисления.Результат,<br> 12,<br> РасчетСреднегоЗаработка.ПериодРасчетаСреднегоЗаработка,<br> РасчетСреднегоЗаработка.НомерСтроки,<br> ЛОЖЬ,<br> 0<br> ИЗ<br> ВТСтрокиСреднегоЗаработка КАК РасчетСреднегоЗаработка<br> ЛЕВОЕ СОЕДИНЕНИЕ РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисления<br> ПО РасчетСреднегоЗаработка.БазовыйВидРасчета = ОсновныеНачисления.ВидРасчета<br> И РасчетСреднегоЗаработка.Сотрудник = ОсновныеНачисления.Сотрудник<br> И (ОсновныеНачисления.ПериодРегистрации <= РасчетСреднегоЗаработка.ПериодРегистрации)<br> И (ГОД(ВЫБОР<br> КОГДА ОсновныеНачисления.ВидРасчета.ПериодДействияБазовый<br> ТОГДА ОсновныеНачисления.ПериодДействияНачало<br> ИНАЧЕ ОсновныеНачисления.БазовыйПериодНачало<br> КОНЕЦ) = ГОД(РасчетСреднегоЗаработка.ДатаНачалаСобытия) - 1)<br> И (ОсновныеНачисления.ПериодРегистрации МЕЖДУ РасчетСреднегоЗаработка.БазовыйПериодНачало И РасчетСреднегоЗаработка.БазовыйПериодКонец<br> ИЛИ РасчетСреднегоЗаработка.БазовыйПериодНачало = РасчетСреднегоЗаработка.ДатаНачалаРасчетногоПериода<br> И ОсновныеНачисления.ПериодРегистрации < РасчетСреднегоЗаработка.ДатаНачалаРасчетногоПериода<br> ИЛИ КОНЕЦПЕРИОДА(РасчетСреднегоЗаработка.БазовыйПериодКонец, ДЕНЬ) = КОНЕЦПЕРИОДА(РасчетСреднегоЗаработка.ДатаОкончанияРасчетногоПериода, ДЕНЬ)<br> И ОсновныеНачисления.ПериодРегистрации > РасчетСреднегоЗаработка.ДатаОкончанияРасчетногоПериода)<br> ГДЕ<br> РасчетСреднегоЗаработка.ВидРасчета В(&парамПоГодовойПремииИндексируемые)<br> И ОсновныеНачисления.ВидРасчета ЕСТЬ НЕ NULL ) КАК База<br><br>СГРУППИРОВАТЬ ПО<br> База.ЧислоМесяцев,<br> База.ПериодРасчетаСреднегоЗаработка,<br> База.НомерСтроки,<br> База.ОшибкаВводаСводногоТабеля<br><br>УПОРЯДОЧИТЬ ПО<br> НомерСтроки"