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

СГРУППИРОВАТЬ ПО
	НарядСтивидораСписокРаботников.Ссылка,
	НарядСтивидораСписокРаботников.Точка,
	НарядСтивидораСписокРаботников.Работник,
	НарядСтивидораСписокРаботников.РодЗанятости,
	НарядСтивидораСписокРаботников.ВидРабот,
	НарядСтивидораСписокРаботников.ОтработаноЧасов,
	НарядСтивидораСписокРаботников.ОтработаноЧасовПоГрафику,
	ВложенныйЗапрос.ТранспортноеСредство

Как сделать, чтобы вложенный запрос работал только если РодЗанятости содержит "Водитель".
Спасибо.
1 Волшебник
 
23.05.23
17:07
во вложенный запрос добавьте поле "Водитель" КАК РодЗанятости

в условия соединения надо добавить:
И ВложенныйЗапрос.РодЗанятости = НарядСтивидораСписокРаботников.РодЗанятости 
2 azernot
 
23.05.23
17:07
Вложенный запрос будет работать как работал. Там нет Рода занятости. А вот из результата соединения ненужные записи вложенного запроса можно исключить добавив это в условия соединения.
3 Масянька
 
23.05.23
17:11
(1) ВЫБРАТЬ
    НарядСтивидораСписокРаботников.Ссылка,
    НарядСтивидораСписокРаботников.Точка,
    НарядСтивидораСписокРаботников.Работник,
    НарядСтивидораСписокРаботников.РодЗанятости,
    НарядСтивидораСписокРаботников.ВидРабот,
    СУММА(НарядСтивидораСписокРаботников.ОтработаноЧасовПоДвойномуТарифу) КАК ОтработаноЧасовПоДвойномуТарифу,
    НарядСтивидораСписокРаботников.ОтработаноЧасов,
    НарядСтивидораСписокРаботников.ОтработаноЧасовПоГрафику,
    ВложенныйЗапрос.ТранспортноеСредство
ПОМЕСТИТЬ ВТРасчетИзНарядов
ИЗ
    Документ.НарядСтивидора.СписокРаботников КАК НарядСтивидораСписокРаботников
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СводПутевыхЛистовПутевыеЛисты.Ссылка КАК Ссылка,
            СводПутевыхЛистовПутевыеЛисты.Ссылка.ТранспортноеСредство КАК ТранспортноеСредство,
            СводПутевыхЛистовПутевыеЛисты.ФИО КАК ФИО,
            СводПутевыхЛистовПутевыеЛисты.ДатаВремяВыезд КАК ДатаВремяВыезд,
            СводПутевыхЛистовПутевыеЛисты.ДатаВремяВозврат КАК ДатаВремяВозврат,
            "Водитель" КАК Водитель
        ИЗ
            Документ.СводПутевыхЛистов.ПутевыеЛисты КАК СводПутевыхЛистовПутевыеЛисты) КАК ВложенныйЗапрос
        ПО НарядСтивидораСписокРаботников.Работник = ВложенныйЗапрос.ФИО
            И НарядСтивидораСписокРаботников.НачалоРабот >= ВложенныйЗапрос.ДатаВремяВыезд
            И НарядСтивидораСписокРаботников.ОкончаниеРабот <= ВложенныйЗапрос.ДатаВремяВозврат
            И НарядСтивидораСписокРаботников.РодЗанятости = ВложенныйЗапрос.Водитель
ГДЕ
    НарядСтивидораСписокРаботников.Ссылка.НачалоНаряда МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    НарядСтивидораСписокРаботников.Ссылка,
    НарядСтивидораСписокРаботников.Точка,
    НарядСтивидораСписокРаботников.Работник,
    НарядСтивидораСписокРаботников.РодЗанятости,
    НарядСтивидораСписокРаботников.ВидРабот,
    НарядСтивидораСписокРаботников.ОтработаноЧасов,
    НарядСтивидораСписокРаботников.ОтработаноЧасовПоГрафику,
    ВложенныйЗапрос.ТранспортноеСредство
Пусто.
4 Волшебник
 
23.05.23
17:11
РодЗанятости - строка?
5 Мультук
 
23.05.23
17:14
(3)

1) Конечно пусто. Вы же там во временную таблицу положили результат

2)
    СУММА(НарядСтивидораСписокРаботников.ОтработаноЧасовПоДвойномуТарифу) КАК ОтработаноЧасовПоДвойномуТарифу,
    НарядСтивидораСписокРаботников.ОтработаноЧасов,
    НарядСтивидораСписокРаботников.ОтработаноЧасовПоГрафику,

Почему агреггирование только двойному тарифу ? Дискриминация ?
6 Масянька
 
23.05.23
17:15
(2) Их не надо исключать.
Есть две таблицы.
Первая
01.01.23 19:00   01.01.23 21:00  Иванов  Водитель а/м
01.01.23 21:00   02.01.23 00:00  Иванов  Грузчик
Вторая
01.01.23 19:00   02.01.23 00:00  Иванов  Погрузчик
Нужно получить
01.01.23 19:00   01.01.23 21:00  Иванов  Водитель а/м   Погрузчик
01.01.23 21:00   02.01.23 00:00  Иванов  Грузчик
7 Масянька
 
23.05.23
17:16
(4) Да.
8 Масянька
 
23.05.23
17:16
(5) Требования такие.
9 azernot
 
23.05.23
17:17
(3) Достаточно в условие соединения прописать что-то типа
И НарядСтивидораСписокРаботников.РодЗанятости Подобно "%Водитель%"
10 Волшебник
 
23.05.23
17:19
(7) "Водитель а/м" <> "Водитель"
11 Волшебник
 
23.05.23
17:20
(9) Это ужасно медленное условие. Лучше так
РодЗанятости Подобно "Водитель%"
12 Мультук
 
23.05.23
17:21
(6)

Это уже кросс-таблица ?
13 azernot
 
23.05.23
17:21
(11) А ещё лучше массив с полным перечнем возможных "водителей" :)
Но хочет человек чтобы было [РодЗанятости содержит "Водитель"] вот пусть и получает это
14 Масянька
 
23.05.23
17:21
(9)
ВЫБРАТЬ
    НарядСтивидораСписокРаботников.Ссылка,
    НарядСтивидораСписокРаботников.Точка,
    НарядСтивидораСписокРаботников.Работник,
    НарядСтивидораСписокРаботников.РодЗанятости,
    НарядСтивидораСписокРаботников.ВидРабот,
    СУММА(НарядСтивидораСписокРаботников.ОтработаноЧасовПоДвойномуТарифу) КАК ОтработаноЧасовПоДвойномуТарифу,
    НарядСтивидораСписокРаботников.ОтработаноЧасов,
    НарядСтивидораСписокРаботников.ОтработаноЧасовПоГрафику,
    ВложенныйЗапрос.ТранспортноеСредство
ПОМЕСТИТЬ ВТРасчетИзНарядов
ИЗ
    Документ.НарядСтивидора.СписокРаботников КАК НарядСтивидораСписокРаботников
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            СводПутевыхЛистовПутевыеЛисты.Ссылка КАК Ссылка,
            СводПутевыхЛистовПутевыеЛисты.Ссылка.ТранспортноеСредство КАК ТранспортноеСредство,
            СводПутевыхЛистовПутевыеЛисты.ФИО КАК ФИО,
            СводПутевыхЛистовПутевыеЛисты.ДатаВремяВыезд КАК ДатаВремяВыезд,
            СводПутевыхЛистовПутевыеЛисты.ДатаВремяВозврат КАК ДатаВремяВозврат
        ИЗ
            Документ.СводПутевыхЛистов.ПутевыеЛисты КАК СводПутевыхЛистовПутевыеЛисты) КАК ВложенныйЗапрос
        ПО НарядСтивидораСписокРаботников.Работник = ВложенныйЗапрос.ФИО
            И НарядСтивидораСписокРаботников.НачалоРабот >= ВложенныйЗапрос.ДатаВремяВыезд
            И НарядСтивидораСписокРаботников.ОкончаниеРабот <= ВложенныйЗапрос.ДатаВремяВозврат
            И НарядСтивидораСписокРаботников.РодЗанятости Подобно "%Водитель%"
ГДЕ
    НарядСтивидораСписокРаботников.Ссылка.НачалоНаряда МЕЖДУ &НачалоПериода И &КонецПериода

СГРУППИРОВАТЬ ПО
    НарядСтивидораСписокРаботников.Ссылка,
    НарядСтивидораСписокРаботников.Точка,
    НарядСтивидораСписокРаботников.Работник,
    НарядСтивидораСписокРаботников.РодЗанятости,
    НарядСтивидораСписокРаботников.ВидРабот,
    НарядСтивидораСписокРаботников.ОтработаноЧасов,
    НарядСтивидораСписокРаботников.ОтработаноЧасовПоГрафику,
    ВложенныйЗапрос.ТранспортноеСредство
Неверные параметры "ПОДОБНО"
15 Волшебник
 
23.05.23
17:22
Можно вложенный запрос вытащить во временную таблицу, станет лучше.
16 Волшебник
 
23.05.23
17:23
(14) запятую пропустили
17 Масянька
 
23.05.23
17:23
(15) Нет. Параметры для выборки в Наряде.
18 Волшебник
 
23.05.23
17:24
строку
И НарядСтивидораСписокРаботников.РодЗанятости Подобно "%Водитель%"


заменить на
ВложенныйЗапрос.РодЗанятости Подобно "%Водитель%"
19 azernot
 
23.05.23
17:25
(14) Значит НарядСтивидораСписокРаботников.РодЗанятости у вас нифига не строка.
20 Волшебник
 
23.05.23
17:26
(19) Масянька бот?
21 Масянька
 
23.05.23
17:27
(16) Где?
22 azernot
 
23.05.23
17:27
(20) Ну, все мы знаем Масяньку. Она просто такая.
23 Fish
 
23.05.23
17:28
(19) Но выглядит то как строка! :)
24 Масянька
 
23.05.23
17:28
А что флуд в тематических ветках уже разрешили? Или только "избранным"?
25 Волшебник
 
23.05.23
17:29
(24) Не отвлекайтесь от стивидоров
26 Масянька
 
23.05.23
17:30
(25) Так запятая-то где?
27 azernot
 
23.05.23
17:31
(24) Откройте в дереве конфигурации Документ.НарядСтивидора, найтите ТЧ СписокРаботников, найдите реквизит "РодЗанятости", кликните правой кнопкой, выберите пункт "Свойства", посмотрите что указано в свойствах в параметре "Тип" и напишите нам.
28 Волшебник
 
23.05.23
18:17
(26) Про запятую я ошибся