Имя: Пароль:
1C
1С v8
Запрос конструкция В не отрабатывает
,
0 Пеппи
 
11.07.12
00:00
Имеется запрос
   |    ВЫБРАТЬ
   |        ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо,
   |        СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК ЗарПлата,
   |        СУММА(ВЫБОР
   |                КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&ТарифнаяЧасть)
   |                    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.Результат
   |            КОНЕЦ) КАК ТарифныйЗаработок,
   |        СУММА(ВЫБОР
   |                КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&РК)
   |                    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.Результат
   |            КОНЕЦ) КАК РК,
   |        СУММА(ВЫБОР
   |                КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.ЗачетОтработанногоВремени
   |                    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.ОтработаноЧасов
   |                ИНАЧЕ ОсновныеНачисленияРаботниковОрганизаций.ОтработаноЧасов
   |            КОНЕЦ) КАК ОтработаноЧасов1,
   |        СУММА(ОсновныеНачисленияРаботниковОрганизаций.НормаЧасов) КАК НормаЧасов,
   |        ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Должность.КатегорияСтатистическогоУчета КАК СотрудникДолжностьКатегорияСтатистическогоУчета
   |    ИЗ
   |        РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
   |    ГДЕ
   |        ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &НачалоПериода
   |        И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец <= &КонецПериода
   |        И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
   |        И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В(&КодНачислений)

   СписокНачислений = Новый СписокЗначений;
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00003"));    
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00006"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00007"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00011"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00012"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00013"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00018"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00019"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00023"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00029"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00031"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00046"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00048"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00049"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00035"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00036"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00039"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00045"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("04"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00008"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00021"));          

   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00042"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00052"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00072"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00047"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00010"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00015"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00016"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоКоду("00034"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00044"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ДополнительныеНачисленияОрганизаций.НайтиПоКоду("00054"));          
   СписокНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.НайтиПоКоду("00065"));          
   
   Запрос.УстановитьПараметр("КодНачислений",СписокНачислений);

Видно что не все начисления указанные в СписокНачислений попадают в запрос. Список Значений слишком большой? И как быть тогда? Мне нужны только эти начисления.
1 France
 
11.07.12
00:03
а найти по коду всегда срабатывает?? а сделать цикл и проверять не судьба??
2 Пеппи
 
11.07.12
00:05
Если уменьшить количество значений в СписокЗначений то отрабатывает, запрос выводит их.
3 andrewks
 
11.07.12
00:05
"Видно что не все начисления указанные в СписокНачислений попадают в запрос"
мне не видно
4 Пеппи
 
11.07.12
00:05
вот мне и непонятно почему так.
5 Пеппи
 
11.07.12
00:06
(3) я проверяю же результат запроса.
6 дущ
 
11.07.12
00:06
(0) Может в регистре расчета тупо нет ВСЕХ указанных видов расчета за этот период по этой организации?
7 Пеппи
 
11.07.12
00:07
(6) да, это так. это имеет значение?
8 acsent
 
11.07.12
00:08
СписокНачислений вообще нет в запросе
9 Пеппи
 
11.07.12
00:09
(8) параметру КодНачислений присваивается
10 дущ
 
11.07.12
00:10
(7) естественно, ты же вроде как записи из регистра выбираешь, а уже НА ВЫБРАННЫЕ накладываешь ограничение. И если их нет в исходной выборке, откуда ж они появятся?
11 andrewks
 
11.07.12
00:12
(10) чего-чего?
12 Пеппи
 
11.07.12
00:13
(10) не так, всех перечисленных видов расчета может и не быть в этом периоде, но основные то точно есть- по окладу например. я собираю отработанные часы в этом периоде. ну и увидела что часы у некоторых нулевые, т.е. оклад не попал в выборку почему то.
13 Maniac
 
11.07.12
00:14
эээ а у тебя точно все они элементы? или есть группы
14 andrewks
 
11.07.12
00:14
релиз платформы какой?
15 Maniac
 
11.07.12
00:14
и почему внизу есть разные типы значений
16 Пеппи
 
11.07.12
00:14
или мне только совет в (1) поможет?
17 Пеппи
 
11.07.12
00:16
(15) я не показала запрос для регистра ДополнительныеНачисленияРаботниковОрганизаций. я использую объединение запросов.
18 acsent
 
11.07.12
00:16
а без фильтра попадают?
19 Пеппи
 
11.07.12
00:16
(14) 8.2.15
20 Maniac
 
11.07.12
00:16
(17) и парамтр для них одинаковый чтоли?
21 Пеппи
 
11.07.12
00:16
(18) конечно
22 andrewks
 
11.07.12
00:17
(19) мало цифр
(17) мало кода
23 Пеппи
 
11.07.12
00:17
(20) да, один использую. нельзя так?
24 andrewks
 
11.07.12
00:17
(21) зер шлехт
25 Maniac
 
11.07.12
00:21
Мне кажется из за смешанных типов в параметре. плюс проверить есть ли там группы тк условие уже тогда должно быть другим.
26 Пеппи
 
11.07.12
00:21
v8: условие в тексте запроса

Оператор В позволяет проверить, совпадает ли значение выражения, указанного справа от него, с одним из значений, описанных слева. Если совпадает хотя бы с одним – результатом оператора будет Истина, иначе – Ложь.


Вроде должно работать
27 Пеппи
 
11.07.12
00:22
(25) да, спасибо. поняла. попробую.
28 Maniac
 
11.07.12
00:23
И вообще является ли ВИД РАСЧЕТА типом ОсновныеНачисленияОрганизаций
А то я хоть зарплату ни бум бум но интуиция подсказывает что это вообще две РАЗНЫЕ вещи.
29 Maniac
 
11.07.12
00:24
да если условие не работает это сто пудово ставится условие по какому то левому типу значений.
30 Maniac
 
11.07.12
00:25
какой тип значения имеет вид расчета? ты уверена что начисления? как то даже по слуху это две разные вещи.
31 Пеппи
 
11.07.12
00:26
(30) да конечно. видимо проблема в (25). Групп точно нет.
32 Maniac
 
11.07.12
00:29
да хрень у тебя в запросе

КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&ТарифнаяЧасть)

плюс еще в ГДЕ

одно исключает другое в принципе
33 Maniac
 
11.07.12
00:32
или полный текст тогда показывай со всеми параметрами
34 Пеппи
 
11.07.12
00:35
Да это не мой запрос, корректирую его под себя.
   //Начисления
   Запрос.Текст =
   "ВЫБРАТЬ
   |    Начислено.ФизЛицо КАК ФизЛицо,
   |    СУММА(Начислено.ЗарПлата) КАК ЗарПлата,
   |    СУММА(Начислено.ТарифныйЗаработок) КАК ТарифныйЗаработок,
   |    СУММА(Начислено.РК) КАК РК,
   |    СУММА(Начислено.НормаЧасов) КАК НормаЧасов,
   |    СУММА(Начислено.ОтработаноЧасов1) КАК ОтработаноЧасов
   |ПОМЕСТИТЬ Начисления
   |ИЗ
   |    (ВЫБРАТЬ
   |        ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо КАК ФизЛицо,
   |        СУММА(ОсновныеНачисленияРаботниковОрганизаций.Результат) КАК ЗарПлата,
   |        СУММА(ВЫБОР
   |                КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&ТарифнаяЧасть)
   |                    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.Результат
   |            КОНЕЦ) КАК ТарифныйЗаработок,
   |        СУММА(ВЫБОР
   |                КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В (&РК)
   |                    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.Результат
   |            КОНЕЦ) КАК РК,
   |        СУММА(ВЫБОР
   |                КОГДА ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета.ЗачетОтработанногоВремени
   |                    ТОГДА ОсновныеНачисленияРаботниковОрганизаций.ОтработаноЧасов
   |                ИНАЧЕ ОсновныеНачисленияРаботниковОрганизаций.ОтработаноЧасов
   |            КОНЕЦ) КАК ОтработаноЧасов1,
   |        СУММА(ОсновныеНачисленияРаботниковОрганизаций.НормаЧасов) КАК НормаЧасов,
   |        ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Должность.КатегорияСтатистическогоУчета КАК СотрудникДолжностьКатегорияСтатистическогоУчета
   |    ИЗ
   |        РегистрРасчета.ОсновныеНачисленияРаботниковОрганизаций КАК ОсновныеНачисленияРаботниковОрганизаций
   |    ГДЕ
   |        ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияНачало >= &НачалоПериода
   |        И ОсновныеНачисленияРаботниковОрганизаций.ПериодДействияКонец <= &КонецПериода
   |        И ОсновныеНачисленияРаботниковОрганизаций.Организация = &Организация
   |        И ОсновныеНачисленияРаботниковОрганизаций.ВидРасчета В(&КодНачислений)
   |    
   |    СГРУППИРОВАТЬ ПО
   |        ОсновныеНачисленияРаботниковОрганизаций.ФизЛицо,
   |        ОсновныеНачисленияРаботниковОрганизаций.Сотрудник.Должность.КатегорияСтатистическогоУчета
   |    
   |    ОБЪЕДИНИТЬ
   |    
   |    ВЫБРАТЬ
   |        ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо,
   |        СУММА(ДополнительныеНачисленияРаботниковОрганизаций.Результат),
   |        СУММА(ВЫБОР
   |                КОГДА ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета В (&ТарифнаяЧасть)
   |                    ТОГДА ДополнительныеНачисленияРаботниковОрганизаций.Результат
   |            КОНЕЦ),
   |        NULL,
   |        NULL,
   |        NULL,
   |        ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность.КатегорияСтатистическогоУчета
   |    ИЗ
   |        РегистрРасчета.ДополнительныеНачисленияРаботниковОрганизаций КАК ДополнительныеНачисленияРаботниковОрганизаций
   |    ГДЕ
   |        ДополнительныеНачисленияРаботниковОрганизаций.ПериодРегистрации МЕЖДУ &НачалоПериода И &КонецПериода
   |        И ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета В(&КодНачислений)
   |        И ДополнительныеНачисленияРаботниковОрганизаций.Организация = &Организация
   |        И ДополнительныеНачисленияРаботниковОрганизаций.ВидРасчета В(&КодНачислений)
   |    
   |    СГРУППИРОВАТЬ ПО
   |        ДополнительныеНачисленияРаботниковОрганизаций.ФизЛицо,
   |        ДополнительныеНачисленияРаботниковОрганизаций.Сотрудник.Должность.КатегорияСтатистическогоУчета) КАК Начислено
   |
   |СГРУППИРОВАТЬ ПО
   |    Начислено.ФизЛицо";


Конструкция Выбор используется для другого, сначала отрабатывает условие ГДЕ
35 Пеппи
 
11.07.12
00:38
СпВидовНачислений = Новый СписокЗначений;
   СпВидовНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоДням);    
   СпВидовНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ОкладПоЧасам);    
   СпВидовНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифДневной);    
   СпВидовНачислений.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.ТарифЧасовой);    
   Запрос.УстановитьПараметр("ТарифнаяЧасть", СпВидовНачислений);
   
   СпВидовНачислений_РК = Новый СписокЗначений;
   СпВидовНачислений_РК.Добавить(ПланыВидовРасчета.ОсновныеНачисленияОрганизаций.РайонныйКоэффициент);    
   Запрос.УстановитьПараметр("РК", СпВидовНачислений_РК);
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.