Имя: Пароль:
1C
1С v8
Ошибка выполнения запроса у пользователя с неполными правами.
, ,
0 4eKucT
 
07.08.15
14:51
Здравствуйте. Обрисую следующую проблему. Есть внешний отчет. Этот отчет не устраивает одного пользователя и для его нужд данный отчет модифицируется. После изменений мы добавляем этот отчет с новым названием. В отчете прописали доступ для групп пользователей в которые он входит. И теперь у администратора или у любого другого пользователя с полными правами отчет выполняется. А под правами данного пользователя выдает ошибку:
{Форма.ФормаОтчета.Форма(758)}: Ошибка при вызове метода контекста (Выполнить)
    Возврат Запрос.Выполнить();
по причине:
Ошибка выполнения запроса
по причине:
Запрос невозможно исполнить

Подскажите в чем может быть проблема ставил в запросе разрешенные не помогло. Если будет необходимо выложу текст запроса, но он огромный.
1 alexei366
 
07.08.15
14:55
(0) Так ты его пока в консоли запроса от обычного пользователя затесть, мож чего напишет поподройней или сам догадаешься
2 pavelul73
 
07.08.15
15:05
ВЫБРАТЬ РАЗРЕШЕННЫЕ?
3 4eKucT
 
07.08.15
15:15
Попробовал запустить в консоли запроса под правами пользователя аналогичный результат.
[URL=http://www.radikal.ru][IMG]http://s018.radikal.ru/i520/1508/a5/86a46d1fc5bf.jpg[/IMG][/URL]
4 4eKucT
 
07.08.15
15:16
5 4eKucT
 
07.08.15
15:17
6 4eKucT
 
07.08.15
15:18
Извиняюсь наспамил хотел вставить картинку прямо тут. В общем такая же ошибка. В запросе стоят выбрать разрешенные но не видно никакого изменения.
7 ДенисЧ
 
07.08.15
15:18
Фиговый из тебя чекист )))
В самое главное место не посмотрел - в логи.
8 4eKucT
 
07.08.15
15:20
Можно поподробнее что за логи?
9 rbcvg
 
07.08.15
15:24
(8) ЖУрнал Регистрации, походу
10 blopp
 
07.08.15
18:02
(0) Это весь текст из исключения?
После "Запрос невозможно исполнить" точно ничего нет?

P.S. Логи в данном случае вряд ли помогут.
А какая кстати СУБД используется ?
11 4eKucT
 
10.08.15
12:50
СУБД SQL какая версия и тд не могу знать. К таким данным не допущен. И да при выполнении запроса выдает именно эту фразу без всяких других вариантов. Суть в том что при полных правах отчет выполняется без проблем но при ограниченных начинается вот такая ересь хотя прав у данного пользователя хватает открывать любой объект указанный в запросе. Да забыл упомянуть, конфигурация УПП, хотя думаю это не суть важно.
12 blopp
 
10.08.15
13:43
Ну в общем смысл в том что результирующий запрос (в совокупности с RLS) сильно переусложнен.
13 4eKucT
 
10.08.15
13:50
У меня такая мысль промелькнула а может это из-за вложенного запроса? В запросе изначальном все делалось временными таблицами, а я для вывода всех ныне работающих сотрудников сделал через вложенный. Может если его на временную таблицу изменить исправится положение?
14 shuhard_серый
 
10.08.15
13:54
(13) бери запрос и упрощай его, пока не локализуешь проблему

в журнал 1С конечно надо позырить, там часто пишется к чему конкретно нет доступа

и нет ключевого - это СКД или что ?
15 blopp
 
10.08.15
13:59
(13) Может быть и даже скорее всего.
16 4eKucT
 
11.08.15
16:12
Ниже Текст запроса под полными правами без проблем выполняется под правами ограниченными никак могу прислать запрос который был из начально.

ВЫБРАТЬ
    ВЫБОР
        КОГДА НЕ УвольнениеИзОрганизаций.Ссылка = ЗНАЧЕНИЕ(Документ.УвольнениеИзОрганизаций.ПустаяСсылка)
            ТОГДА ВЫБОР
                    КОГДА РабОргСрезПос.Сотрудник.ДатаУвольнения >= КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ)
                        ТОГДА РабОргСрезПос.Сотрудник.Ссылка
                КОНЕЦ
        ИНАЧЕ РабОргСрезПос.Сотрудник.Ссылка
    КОНЕЦ КАК Сотрудник
ПОМЕСТИТЬ ВТВсеРаб
ИЗ
    РегистрСведений.РаботникиОрганизаций.СрезПоследних КАК РабОргСрезПос
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.УвольнениеИзОрганизаций КАК УвольнениеИзОрганизаций
        ПО РабОргСрезПос.Регистратор = УвольнениеИзОрганизаций.Ссылка
            И РабОргСрезПос.ПервичныйДокумент = УвольнениеИзОрганизаций.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостояниеРаботниковОрганизаций КАК СостРабОрг
        ПО РабОргСрезПос.Сотрудник = СостРабОрг.Сотрудник
            И РабОргСрезПос.Период = СостРабОрг.Период
ГДЕ
    РабОргСрезПос.Сотрудник.ДатаПриемаНаРаботу <= КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ)
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    мстРезервОтпусков.Организация КАК Организация,
    мстРезервОтпусков.Сотрудник КАК Сотрудник,
    СУММА(мстРезервОтпусков.СуммаРезерваОтпусков) КАК СуммаРезерваОтпусков,
    СУММА(мстРезервОтпусков.СуммаСтраховыхВзносов) КАК СуммаСтраховыхВзносов,
    СУММА(мстРезервОтпусков.СуммаСтраховыхВзносовНС) КАК СуммаСтраховыхВзносовНС,
    СУММА(мстРезервОтпусков.СуммаДопСтраховыхВзносов) КАК СуммаДопСтраховыхВзносов,
    мстРезервОтпусков.ВидЕжегодногоОтпуска.ВидОтпуска КАК ВидОтпуска
ПОМЕСТИТЬ ВТРезервОтпуска
ИЗ
    РегистрНакопления.мстРезервОтпусковОрганизаций КАК мстРезервОтпусков
ГДЕ
    НАЧАЛОПЕРИОДА(мстРезервОтпусков.Период, МЕСЯЦ) = НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ)
    И ТИПЗНАЧЕНИЯ(мстРезервОтпусков.Регистратор) = ТИП(Документ.ОтражениеЗарплатыВРеглУчете)
    И мстРезервОтпусков.Инвентаризация = &ПризнакИнвентаризации
    И мстРезервОтпусков.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
    И мстРезервОтпусков.Организация = &Организация

СГРУППИРОВАТЬ ПО
    мстРезервОтпусков.Организация,
    мстРезервОтпусков.Сотрудник,
    мстРезервОтпусков.ВидЕжегодногоОтпуска.ВидОтпуска

ИНДЕКСИРОВАТЬ ПО
    Организация,
    Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    мстСведенияРезерваОтпусковОрганизации.Организация КАК Организация,
    мстСведенияРезерваОтпусковОрганизации.Сотрудник КАК Сотрудник,
    СУММА(мстСведенияРезерваОтпусковОрганизации.Количество) КАК Количество,
    мстСведенияРезерваОтпусковОрганизации.ВидЕжегодногоОтпуска.ВидОтпуска КАК ВидОтпуска
ПОМЕСТИТЬ ВТСведенияРезерваОтпуска
ИЗ
    РегистрНакопления.мстСведенияРезерваОтпусковОрганизации КАК мстСведенияРезерваОтпусковОрганизации
ГДЕ
    НАЧАЛОПЕРИОДА(мстСведенияРезерваОтпусковОрганизации.Период, МЕСЯЦ) = НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ)
    И мстСведенияРезерваОтпусковОрганизации.ВидОперации = ЗНАЧЕНИЕ(Перечисление.ВидыДвиженийПриходРасход.Приход)
    И мстСведенияРезерваОтпусковОрганизации.Регистратор.ВидОперации = &ВидОперации
    И мстСведенияРезерваОтпусковОрганизации.Организация = &Организация
    И мстСведенияРезерваОтпусковОрганизации.Количество <> 0

СГРУППИРОВАТЬ ПО
    мстСведенияРезерваОтпусковОрганизации.Организация,
    мстСведенияРезерваОтпусковОрганизации.Сотрудник,
    мстСведенияРезерваОтпусковОрганизации.ВидЕжегодногоОтпуска.ВидОтпуска

ИНДЕКСИРОВАТЬ ПО
    Организация,
    Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Итоги.Сотрудник КАК Сотрудник,
    Итоги.Организация КАК Организация,
    ВЫРАЗИТЬ(ВЫБОР
            КОГДА Итоги.Количество = 0
                ТОГДА 0
            ИНАЧЕ Итоги.СуммаРезерваОтпусков / Итоги.Количество
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СреднийЗаработок,
    ВЫРАЗИТЬ(100 * ВЫБОР
            КОГДА Итоги.СуммаРезерваОтпусков = 0
                ТОГДА 0
            ИНАЧЕ Итоги.СуммаСтраховыхВзносов / Итоги.СуммаРезерваОтпусков
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СтавкаСтраховыхВзносов,
    ВЫРАЗИТЬ(100 * ВЫБОР
            КОГДА Итоги.СуммаРезерваОтпусков = 0
                ТОГДА 0
            ИНАЧЕ Итоги.СуммаСтраховыхВзносовНС / Итоги.СуммаРезерваОтпусков
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СтавкаСтраховыхВзносовНС,
    ВЫРАЗИТЬ(100 * ВЫБОР
            КОГДА Итоги.СуммаРезерваОтпусков = 0
                ТОГДА 0
            ИНАЧЕ Итоги.СуммаДопСтраховыхВзносов / Итоги.СуммаРезерваОтпусков
        КОНЕЦ КАК ЧИСЛО(15, 2)) КАК СтавкаДопСтраховыхВзносов,
    Итоги.Категория,
    Итоги.ДатаДопОтпуска
ПОМЕСТИТЬ ВТПоказатели
ИЗ
    (ВЫБРАТЬ
        ВТРезервОтпуска.Организация КАК Организация,
        СУММА(ВТСведенияРезерваОтпуска.Количество) КАК Количество,
        СУММА(ВТРезервОтпуска.СуммаРезерваОтпусков) КАК СуммаРезерваОтпусков,
        СУММА(ВТРезервОтпуска.СуммаСтраховыхВзносов) КАК СуммаСтраховыхВзносов,
        СУММА(ВТРезервОтпуска.СуммаСтраховыхВзносовНС) КАК СуммаСтраховыхВзносовНС,
        СУММА(ВТРезервОтпуска.СуммаДопСтраховыхВзносов) КАК СуммаДопСтраховыхВзносов,
        ВТРезервОтпуска.Сотрудник КАК Сотрудник,
        ДопДанныеПоСотруднику.Категория КАК Категория,
        ДопДанныеПоСотруднику.ДатаДопОтпуска КАК ДатаДопОтпуска
    ИЗ
        ВТРезервОтпуска КАК ВТРезервОтпуска
            ЛЕВОЕ СОЕДИНЕНИЕ ВТСведенияРезерваОтпуска КАК ВТСведенияРезерваОтпуска
            ПО (ВТСведенияРезерваОтпуска.Организация = ВТРезервОтпуска.Организация)
                И ВТРезервОтпуска.Сотрудник = ВТСведенияРезерваОтпуска.Сотрудник
            ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                ЗначенияСвойствОбъектов.Значение КАК Категория,
                ФизическиеЛица.Ссылка КАК ФизЛицо,
                ИзвлечениеДатыДопОтпуска.ДатаДопОтпуска КАК ДатаДопОтпуска
            ИЗ
                Справочник.ФизическиеЛица КАК ФизическиеЛица
                    ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
                    ПО ФизическиеЛица.Ссылка = ЗначенияСвойствОбъектов.Объект
                    ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                        ФизическиеЛицаСтажи.ДатаОтсчета КАК ДатаДопОтпуска,
                        ФизическиеЛицаСтажи.Ссылка КАК Ссылка
                    ИЗ
                        Справочник.ФизическиеЛица.Стажи КАК ФизическиеЛицаСтажи
                    ГДЕ
                        ФизическиеЛицаСтажи.ВидСтажа.Наименование = "Стаж на дополнительный отпуск (непрерывный стаж)") КАК ИзвлечениеДатыДопОтпуска
                    ПО ФизическиеЛица.Стажи.Ссылка = ИзвлечениеДатыДопОтпуска.Ссылка
            ГДЕ
                ЗначенияСвойствОбъектов.Свойство.Наименование = "Категория") КАК ДопДанныеПоСотруднику
            ПО ВТРезервОтпуска.Сотрудник.Физлицо = ДопДанныеПоСотруднику.ФизЛицо
    
    СГРУППИРОВАТЬ ПО
        ВТРезервОтпуска.Организация,
        ВТРезервОтпуска.Сотрудник,
        ДопДанныеПоСотруднику.Категория,
        ДопДанныеПоСотруднику.ДатаДопОтпуска) КАК Итоги

ИНДЕКСИРОВАТЬ ПО
    Организация,
    Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТВсеРаб.Сотрудник КАК Сотрудник,
    СУММА(ВТСведенияРезерваОтпуска.Количество) КАК Количество,
    СУММА(ВТРезервОтпуска.СуммаРезерваОтпусков) КАК СуммаРезерваОтпусков,
    СУММА(ВТРезервОтпуска.СуммаСтраховыхВзносов + ВТРезервОтпуска.СуммаДопСтраховыхВзносов) КАК СуммаСтраховыхВзносов,
    СУММА(ВТРезервОтпуска.СуммаСтраховыхВзносовНС) КАК СуммаСтраховыхВзносовНС,
    ВТПоказатели.СреднийЗаработок КАК СреднийЗаработок,
    ВТПоказатели.СтавкаСтраховыхВзносов КАК СтавкаСтраховыхВзносов,
    ВТПоказатели.СтавкаСтраховыхВзносовНС КАК СтавкаСтраховыхВзносовНС,
    ВТПоказатели.СтавкаДопСтраховыхВзносов,
    ВЫБОР
        КОГДА ВТРезервОтпуска.Сотрудник ЕСТЬ NULL
            ТОГДА ВТСведенияРезерваОтпуска.ВидОтпуска
        ИНАЧЕ ВТРезервОтпуска.ВидОтпуска
    КОНЕЦ КАК ВидОтпуска,
    ВТПоказатели.Категория,
    ВТПоказатели.ДатаДопОтпуска
ПОМЕСТИТЬ ВТРезервОтпусков
ИЗ
    ВТВсеРаб КАК ВТВсеРаб,
    ВТРезервОтпуска КАК ВТРезервОтпуска
        ЛЕВОЕ СОЕДИНЕНИЕ ВТПоказатели КАК ВТПоказатели
        ПО ВТРезервОтпуска.Организация = ВТПоказатели.Организация
            И ВТРезервОтпуска.Сотрудник = ВТПоказатели.Сотрудник
        ПОЛНОЕ СОЕДИНЕНИЕ ВТСведенияРезерваОтпуска КАК ВТСведенияРезерваОтпуска
        ПО (ВТСведенияРезерваОтпуска.Организация = ВТРезервОтпуска.Организация)
            И ВТРезервОтпуска.Сотрудник = ВТСведенияРезерваОтпуска.Сотрудник
            И ВТРезервОтпуска.ВидОтпуска = ВТСведенияРезерваОтпуска.ВидОтпуска

СГРУППИРОВАТЬ ПО
    ВТПоказатели.СреднийЗаработок,
    ВТПоказатели.СтавкаСтраховыхВзносов,
    ВТПоказатели.СтавкаСтраховыхВзносовНС,
    ВТПоказатели.СтавкаДопСтраховыхВзносов,
    ВТПоказатели.Категория,
    ВЫБОР
        КОГДА ВТРезервОтпуска.Сотрудник ЕСТЬ NULL
            ТОГДА ВТСведенияРезерваОтпуска.ВидОтпуска
        ИНАЧЕ ВТРезервОтпуска.ВидОтпуска
    КОНЕЦ,
    ВТПоказатели.ДатаДопОтпуска,
    ВТВсеРаб.Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ВТРезервОтпусков.Сотрудник КАК Сотрудник
ПОМЕСТИТЬ ВТСотрудники
ИЗ
    ВТРезервОтпусков КАК ВТРезервОтпусков

ИНДЕКСИРОВАТЬ ПО
    Сотрудник
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТСотрудники.Сотрудник КАК Сотрудник,
    ВЫБОР
        КОГДА НЕ ВТСотрудники.Сотрудник = ЗНАЧЕНИЕ(Справочник.СотрудникиОрганизаций.ПустаяСсылка)
            ТОГДА ВТСотрудники.Сотрудник.Код
    КОНЕЦ КАК ТабельныйНомер,
    ФИОФизЛицСрезПоследних.Фамилия + " " + ФИОФизЛицСрезПоследних.Имя + " " + ФИОФизЛицСрезПоследних.Отчество КАК ФИО,
    ВЫБОР
        КОГДА КатегорииОбъектов.Объект ЕСТЬ NULL
            ТОГДА ИСТИНА
        ИНАЧЕ ЛОЖЬ
    КОНЕЦ КАК ПринятиеКНалоговомуУчету,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                    И РАЗНОСТЬДАТ(ВТСотрудники.Сотрудник.ДатаПриемаНаРаботу, КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ), ДЕНЬ) + 1 > 14
                ТОГДА ВТРезервОтпусков_Осн.Количество
            ИНАЧЕ 0
        КОНЕЦ) КАК Количество1,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                    И РАЗНОСТЬДАТ(ВТСотрудники.Сотрудник.ДатаПриемаНаРаботу, КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ), ДЕНЬ) + 1 > 14
                ТОГДА ВТРезервОтпусков_ДопНенорм.Количество
            ИНАЧЕ 0
        КОНЕЦ) КАК Количество2,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                    И РАЗНОСТЬДАТ(ВТСотрудники.Сотрудник.ДатаПриемаНаРаботу, КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ), ДЕНЬ) + 1 > 14
                ТОГДА ВТРезервОтпусков_ДопВредн.Количество
            ИНАЧЕ 0
        КОНЕЦ) КАК Количество3,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                    И РАЗНОСТЬДАТ(ВТСотрудники.Сотрудник.ДатаПриемаНаРаботу, КОНЕЦПЕРИОДА(&НачалоПериода, МЕСЯЦ), ДЕНЬ) + 1 > 14
                ТОГДА ВТРезервОтпусков_ДопВыслуга.Количество
            ИНАЧЕ 0
        КОНЕЦ) КАК Количество4,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА ВТРезервОтпусков_Осн.СуммаРезерваОтпусков
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаРезерваОтпусков1,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА ВТРезервОтпусков_ДопНенорм.СуммаРезерваОтпусков
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаРезерваОтпусков2,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА ВТРезервОтпусков_ДопВредн.СуммаРезерваОтпусков
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаРезерваОтпусков3,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА ВТРезервОтпусков_ДопВыслуга.СуммаРезерваОтпусков
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаРезерваОтпусков4,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА ВТРезервОтпусков_Осн.СуммаСтраховыхВзносов
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносов1,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносов
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносов2,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносов
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносов3,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносов
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносов4,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА ВТРезервОтпусков_Осн.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносовНС1,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносовНС2,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносовНС3,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаСтраховыхВзносовНС4,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА ВТРезервОтпусков_Осн.Количество
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА ВТРезервОтпусков_ДопНенорм.Количество
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА ВТРезервОтпусков_ДопВредн.Количество
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА ВТРезервОтпусков_ДопВыслуга.Количество
            ИНАЧЕ 0
        КОНЕЦ) КАК Количество,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА ВТРезервОтпусков_Осн.СуммаРезерваОтпусков + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносов + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаОсновной,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА ВТРезервОтпусков_ДопНенорм.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаНенормированный,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА ВТРезервОтпусков_ДопВредн.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаВредность,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА ВТРезервОтпусков_ДопВыслуга.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаВыслуга,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА ВТРезервОтпусков_Осн.СуммаРезерваОтпусков + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносов + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА ВТРезервОтпусков_ДопНенорм.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА ВТРезервОтпусков_ДопВредн.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА ВТРезервОтпусков_ДопВыслуга.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносовНС
            ИНАЧЕ 0
        КОНЕЦ) КАК СуммаРезерва,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА (ВТРезервОтпусков_Осн.СуммаРезерваОтпусков + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносов + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ) КАК ОНА_Основной,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА (ВТРезервОтпусков_ДопНенорм.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ) КАК ОНА_Ненормированный,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА (ВТРезервОтпусков_ДопВредн.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ) КАК ОНА_Вредность,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА (ВТРезервОтпусков_ДопВыслуга.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ) КАК ОНА_Выслуга,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
                ТОГДА (ВТРезервОтпусков_Осн.СуммаРезерваОтпусков + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносов + ВТРезервОтпусков_Осн.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
                ТОГДА (ВТРезервОтпусков_ДопНенорм.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопНенорм.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
                ТОГДА (ВТРезервОтпусков_ДопВредн.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВредн.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
                ТОГДА (ВТРезервОтпусков_ДопВыслуга.СуммаРезерваОтпусков + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносов + ВТРезервОтпусков_ДопВыслуга.СуммаСтраховыхВзносовНС) * 20 / 100
            ИНАЧЕ 0
        КОНЕЦ) КАК ОНА_Резерва,
    ВЫБОР
        КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
            ТОГДА ВТРезервОтпусков_Осн.СреднийЗаработок
        КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
            ТОГДА ВТРезервОтпусков_ДопНенорм.СреднийЗаработок
        КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
            ТОГДА ВТРезервОтпусков_ДопВредн.СреднийЗаработок
        КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
            ТОГДА ВТРезервОтпусков_ДопВыслуга.СреднийЗаработок
        ИНАЧЕ 0
    КОНЕЦ КАК СреднийЗаработок,
    ВЫБОР
        КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
            ТОГДА ВТРезервОтпусков_Осн.СтавкаСтраховыхВзносов
        КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
            ТОГДА ВТРезервОтпусков_ДопНенорм.СтавкаСтраховыхВзносов
        КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
            ТОГДА ВТРезервОтпусков_ДопВредн.СтавкаСтраховыхВзносов
        КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
            ТОГДА ВТРезервОтпусков_ДопВыслуга.СтавкаСтраховыхВзносов
        ИНАЧЕ 0
    КОНЕЦ КАК СтавкаСтраховыхВзносов,
    ВЫБОР
        КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
            ТОГДА ВТРезервОтпусков_Осн.СтавкаСтраховыхВзносовНС
        КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
            ТОГДА ВТРезервОтпусков_ДопНенорм.СтавкаСтраховыхВзносовНС
        КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
            ТОГДА ВТРезервОтпусков_ДопВредн.СтавкаСтраховыхВзносовНС
        КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
            ТОГДА ВТРезервОтпусков_ДопВыслуга.СтавкаСтраховыхВзносовНС
        ИНАЧЕ 0
    КОНЕЦ КАК СтавкаСтраховыхВзносовНС,
    СУММА(ВЫБОР
            КОГДА ВТРезервОтпусков_Осн.Сотрудник ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВТРезервОтпусков_Осн.СуммаРезерваОтпусков
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВредн.Сотрудник ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВТРезервОтпусков_ДопВредн.СуммаРезерваОтпусков
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопНенорм.Сотрудник ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВТРезервОтпусков_ДопНенорм.СуммаРезерваОтпусков
        КОНЕЦ + ВЫБОР
            КОГДА ВТРезервОтпусков_ДопВыслуга.Сотрудник ЕСТЬ NULL
                ТОГДА 0
            ИНАЧЕ ВТРезервОтпусков_ДопВыслуга.СуммаРезерваОтпусков
        КОНЕЦ) КАК СуммаРезерваОтпусков,
    ВЫБОР
        КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
            ТОГДА ВТРезервОтпусков_Осн.СтавкаДопСтраховыхВзносов
        КОГДА ВТРезервОтпусков_ДопНенорм.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускНенормированныйДень)
            ТОГДА ВТРезервОтпусков_ДопНенорм.СтавкаДопСтраховыхВзносов
        КОГДА ВТРезервОтпусков_ДопВредн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВредныеУсловия)
            ТОГДА ВТРезервОтпусков_ДопВредн.СтавкаДопСтраховыхВзносов
        КОГДА ВТРезервОтпусков_ДопВыслуга.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ДополнительныйОтпускВыслугаЛет)
            ТОГДА ВТРезервОтпусков_ДопВыслуга.СтавкаДопСтраховыхВзносов
        ИНАЧЕ 0
    КОНЕЦ КАК СтавкаДопСтраховыхВзносов,
    ВЫБОР
        КОГДА ВТРезервОтпусков_Осн.ВидОтпуска = ЗНАЧЕНИЕ(Перечисление.мстВидыОтпуска.ОсновнойОтпуск)
            ТОГДА ВТРезервОтпуско
17 4eKucT
 
11.08.15
16:13
К сожалению при переделке вложенного запроса во временную таблицу толку не дало.
18 Kvant1C
 
11.08.15
16:21
(17) попробуй локализовать проблему путем последовательного выполнения временных запросов от имени пользователя - хотя бы поймешь на чем затыкается, а дальше будешь думать, как решать проблему
19 4eKucT
 
11.08.15
17:32
(18) Да ввиду многочисленных корректировок по требованиям "а нам вот это и вот это нужно" забыл о дополнительных вложенных запросах. Исправит на временные таблицы все заработало. Спасибо всем за помощь никогда бы не подумал что вложенные вопросы могут подвести. Теперь буду иметь ввиду.