Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Как сделать связь по неопределенному полю в прямом запросе?: (число прочтений - 3348 )
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Как сделать связь по неопределенному полю в прямом запросе?:
22. Сентября 2010 :: 07:33
Печать  
INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON ТарифныеРазряды.ID = $ПоследнееЗначение.Сотрудники.Оклад(Сотрудники.ID, :ВыбДата)
не работает... Оклад - неопределенный тип
  
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #1 - 22. Сентября 2010 :: 07:47
Печать  
Код
Выбрать все
INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON ТарифныеРазряды.ID = SUBSTRING($ПоследнееЗначение.Сотрудники.Оклад(Сотрудники.ID, :ВыбДата),7,9) 



Но SUBSTRING гораздо замедляет выборку.
  
Наверх
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #2 - 22. Сентября 2010 :: 07:55
Печать  
Не выбирает
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #3 - 22. Сентября 2010 :: 07:56
Печать  
pvase

Думаешь, неопределённый тип там просто так?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #4 - 22. Сентября 2010 :: 07:58
Печать  
Пробовал:
INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON е.Сотрудники.Оклад(Сотрудники.ID, :ВыбДата),7,9)

тоже ничего не выбирает
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #5 - 22. Сентября 2010 :: 08:23
Печать  
Если неопределённый тип:

INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON 'B1' + $ВидСправочника36.ТарифныеРазряды+ТарифныеРазряды.ID=$ПоследнееЗначени
е.Сотрудники.Оклад(Сотрудники.ID, :ВыбДата)

Если неопределённый вид - 'B1' убрать.
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #6 - 22. Сентября 2010 :: 08:34
Печать  
не помогло...
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #7 - 22. Сентября 2010 :: 08:45
Печать  
Оклад - точно периодический реквизит неопределенного типа ?
А может он неопределенного вида ?
  
Наверх
 
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #8 - 22. Сентября 2010 :: 08:49
Печать  
точно периодический реквизит неопределенного типа... "ЗиК" -  справочник Сотрудники
  
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #9 - 22. Сентября 2010 :: 08:52
Печать  
И там точно хранятся ссылки на элементы справочника ТарифныеРазряды?
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #10 - 22. Сентября 2010 :: 08:58
Печать  
Да.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #11 - 22. Сентября 2010 :: 08:59
Печать  
А покажи весь текст запроса, особенно, где ты справочник Сотрудники определяешь.
  
Наверх
 
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #12 - 22. Сентября 2010 :: 09:00
Печать  
     Мета = СоздатьОбъект("MetaDataWork");
     СЗначисления = СоздатьОбъект("СписокЗначений");

     Для Индекс = 1 По ГруппаРасчетов.ВсеНачисления.Количество() Цикл
           еНачисления.ПолучитьРасчет(Индекс)), 27, 13)));
     КонецЦикла;
     Список = Мета.ПолучитьСтрокуИзСЗ(СЗначисления);            
     
     рс = СоздатьОбъект("ODBCRecordset");
     //Данный фрагмент построен конструктором.
     //При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
     ТекстЗапроса = "-- qryMaker:Отчет1.2010.09.21.13.18.02
           |SELECT Зарплата.IDALG [ВидРасчета $ВидРасчета]
           |      , $Подразделения.ВидПроизводства [ВидПроизводства $Справочник.ВидыПроизводства]
           |      , ТарифныеРазряды.PARENTID [ТарифныеРазрядыРодитель $Справочник.ТарифныеРазряды]
           |      , LEFT(RIGHT(Должности.CODE, 3), 2) ДолжностиКод
           |      , Sum(Зарплата.RESULT) СуммаРезультат
           |FROM $Справочник.Сотрудники AS Сотрудники
           |      INNER JOIN $Справочник.Должности AS Должности ON $ПоследнееЗначение.Сотрудники.Должность(Сотрудники.ID, :ВыбДата) = Должности.ID
           |      INNER JOIN $Справочник.Подразделения AS Подразделения ON $ПоследнееЗначение.Сотрудники.Подразделение(Сотрудники.ID, :ВыбДата) = Подразделения.ID
           //|      INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON е.Сотрудники.Оклад(Сотрудники.ID, :ВыбДата),5,9)
           |      INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON ки.Оклад(Сотрудники.ID, :ВыбДата)
           |      INNER JOIN $ЖурналРасчетов.Зарплата AS Зарплата ON Зарплата.IDS = Сотрудники.ID
           |WHERE Зарплата.IDALG IN (" + Список + ")
           |      AND (Зарплата.period='"+Формат(НачМесяца(ДатаНач),"Д ГГГГММДД") + "M')
           |      AND (Зарплата.RESULT <> 0)
           |GROUP BY $Подразделения.ВидПроизводства
           |      , ТарифныеРазряды.PARENTID
           |      , Должности.CODE
           |      , Зарплата.IDALG
           |ORDER BY $Подразделения.ВидПроизводства
           |      , ТарифныеРазряды.PARENTID
           |      , Должности.CODE
           |";
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #13 - 22. Сентября 2010 :: 09:04
Печать  
Для, начала, вот так работает ?

Код
Выбрать все
  |SELECT
  | Сотрудники.id
  |FROM $Справочник.Сотрудники AS Сотрудники
  |INNER JOIN $Справочник.ТарифныеРазряды AS ТарифныеРазряды ON 'B1' + $ВидСправочника36.ТарифныеРазряды+ТарифныеРазряды.ID=$ПоследнееЗначени
е.Сотрудники.Оклад(Сотрудники.ID, :ВыбДата) 




ЗЫ: да и в ЗиКе, туда же обычно число лепят..
  
Наверх
 
IP записан
 
Vladik69
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 21
Зарегистрирован: 22. Сентября 2010
Re: Как сделать связь по неопределенному полю в прямом запросе?:
Ответ #14 - 22. Сентября 2010 :: 09:16
Печать  
Ошибку выдал:
State 42000, native 107, message [Microsoft][ODBC SQL Server Driver][SQL Server]The column prefix 'ВидСправочника36' does not match with a table name or alias name used in the query.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать