Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Выборка из подчиненного справочника по конкретному владельцу (число прочтений - 2561 )
ajax
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 28. Ноября 2008
Выборка из подчиненного справочника по конкретному владельцу
13. Мая 2010 :: 15:44
Печать  
Всем доброго времени суток.

Вот такой запрос не работает:
Код
Выбрать все
ТекстЗапроса="
	|SELECT
	|	Невыходы.ParentExt AS [Владелец $Справочник.Сотрудники],
	|	$Невыходы.Расчет AS [ВР $ВидРасчета],
	|	$Невыходы.ДатаНевыхода AS [ДатаНевыхода],
	|	SUM($Невыходы.ЧасовНевыхода) AS [ЧасовНевыхода],
	|	SUM($Невыходы.ПолныйДень) AS [ДнейНевыхода]
	|FROM
	|	$Справочник.НевыходыЧасовые AS Невыходы (nolock)
	|WHERE
	|	Невыходы.ParentExt = :ВыбСотрудник~
	|	AND $Невыходы.Расчет <> :ВыбРасчет~
	|GROUP BY Невыходы.ParentExt,$Невыходы.ДатаНевыхода,$Невыходы.Расчет
	|";

	Запрос.УстановитьТекстовыйПараметр("ВыбСотрудник", лОбъект);
	Если Без095 <> 0 Тогда
		Запрос.УстановитьТекстовыйПараметр("ВыбРасчет", ВидРасчета.ОтгулДляСдельщиков095);
	КонецЕсли; 


Т.е. ошибки не выдает, но в результате пустая таблица.
А если ВыбСотрудник уложить во временную таблицу, то выдает нужные данные. Почему, можно ли сделать запрос без предварительной укладки сотрудников в таблицу?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #1 - 13. Мая 2010 :: 15:59
Печать  
Код
Выбрать все
ТекстЗапроса="
	|SELECT
	|	Невыходы.ParentExt AS [Владелец $Справочник.Сотрудники],
	|	$Невыходы.Расчет AS [ВР $ВидРасчета],
	|	$Невыходы.ДатаНевыхода AS [ДатаНевыхода],
	|	SUM($Невыходы.ЧасовНевыхода) AS [ЧасовНевыхода],
	|	SUM($Невыходы.ПолныйДень) AS [ДнейНевыхода]
	|FROM
	|	$Справочник.НевыходыЧасовые AS Невыходы (nolock)
	|WHERE
	|	Невыходы.ParentExt = :ВыбСотрудник
	|";

	Запрос.УстановитьТекстовыйПараметр("ВыбСотрудник", лОбъект);
	Если Без095 <> 0 Тогда
	     ТекстЗапроса = ТекстЗапроса + "
	     |	AND $Невыходы.Расчет <> :ВыбРасчет
	     |";
	     Запрос.УстановитьТекстовыйПараметр("ВыбРасчет", ВидРасчета.ОтгулДляСдельщиков095);
	КонецЕсли;
	ТекстЗапроса = ТекстЗапроса + "
	|GROUP BY Невыходы.ParentExt,$Невыходы.ДатаНевыхода,$Невыходы.Расчет
	|";

 

  
Наверх
 
IP записан
 
ajax
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 28. Ноября 2008
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #2 - 13. Мая 2010 :: 16:15
Печать  
А почему не работал мой вариант? Разве имеет значение когда устанавливать параметр?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #3 - 13. Мая 2010 :: 16:33
Печать  
В твоем Варианте когда Без095 = 0 то параметр не определяется а сравнение происходит

Второе вместо :ВыбСотрудник~  надо использовать
:ВыбСотрудник
т.е. тип параметров для where с типом параметра как он определен в sql.
C :ВыбРасчет~    аналогично.


  
Наверх
 
IP записан
 
ajax
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 28. Ноября 2008
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #4 - 13. Мая 2010 :: 16:34
Печать  
Всё заработало, спасибо. А вообще рекомендуется устанавливать текстовый параметр сразу после его объявления, или это не имеет значения?
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #5 - 13. Мая 2010 :: 16:35
Печать  
ajax писал(а) 13. Мая 2010 :: 16:34:
Всё заработало, спасибо. А вообще рекомендуется устанавливать текстовый параметр сразу после его объявления, или это не имеет значения?

не имеет значения. главное чтобы правильно установить ( до выполнения запроса)
  
Наверх
 
IP записан
 
ajax
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 28. Ноября 2008
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #6 - 13. Мая 2010 :: 16:41
Печать  
И тогда еще один вопрос в каком случае необходимо использовать "~" при написании запроса, а в каком нет в тильде надобности?
В документе "Эффективное использование MSSQL при помощи ВК 1С" пишут так :
1)Справочник.ХХХ > Справочник, аналогично для документов
2)Какой-то тип > Неопределенный

Первый записывается так :ИмяПараметра~, второй :ИмяПараметра* или :ИмяПараметра~~
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #7 - 13. Мая 2010 :: 19:29
Печать  
Если напишешь просто :ИмяПараметра - то это сработает для поля, в котором указана полная типизация, Например для измерения регистра с типом "Справочник.Номенклатура". При этом в данном поле будет находится ID указанного элемента Если же у этого поля тип просто "Справочник", то уже придетс кроме ID, указывать еще и тип Справочника, иначе непонятно - а чей это ИД-шник. Поэтому к Прарметру надо добавить тильду ~. Если же тип поля регистра - Неопределенный, то указывать надо две тильды, тогда указанное значение преобразуется к нужному виду
  
Наверх
ICQ  
IP записан
 
ajax
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 27
Зарегистрирован: 28. Ноября 2008
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #8 - 14. Мая 2010 :: 04:53
Печать  
Большое спасибо всем ответившим. Тема закрыта.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Выборка из подчиненного справочника по конкретному владельцу
Ответ #9 - 14. Мая 2010 :: 04:55
Печать  
ajax писал(а) 13. Мая 2010 :: 16:41:
И тогда еще один вопрос в каком случае необходимо использовать "~" при написании запроса, а в каком нет в тильде надобности?
В документе "Эффективное использование MSSQL при помощи ВК 1С" пишут так :
1)Справочник.ХХХ > Справочник, аналогично для документов
2)Какой-то тип > Неопределенный

Первый записывается так :ИмяПараметра~, второй :ИмяПараметра* или :ИмяПараметра~~


Справочник.ХХХ  :ИмяПараметра        сhar(9)
Справочник         :ИмяПараметра~     char(13)
Неопределенный  :ИмяПараметра* или :ИмяПараметра~~   точно не помню но вроде char(23)

Для твоего примера parenExt  это char(9) и ссылка на конкретный справочник сотрудники значит надо писать :ВыбСотрудник
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать