Вход | Регистрация

  1  2  3  4   
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: 1С++

v7: 1С++
Я
   bananan
 
25.01.13 - 12:16
Всем добрый день, извиняюсь. что новую ветку написал.. но вчеращняя у меня что-то глючит..
Так вот сейчас текст запроса такой:
|SELECT    Сотр.Descr AS Наименование
       |        ,Сотр.Code AS Код   
       |         ,$Сотр.Фирма AS [Фирма $Справочник.Фирмы]
       |         ,$Сотр.ДатаУвольнения AS ДатаУвольнения 
       |         ,$Сотр.ДатаПриема AS ДатаПриема    
       |         ,$Сотр.ДатаРождения AS ДатаРождения
       |         ,$Сотр.ПропискаАдрес AS ПропискаАдрес 
       |         ,$Сотр.ФактАдрес AS ФактАдрес         
       |         ,$Сотр.Пол as [Стать $Перечисление.Пол]
       |         ,$Сотр.Образование AS [Образование $Перечисление.Образование]
       |         ,$Сотр.СемейноеПоложение AS [СемейноеПоложение $Перечисление.СемейноеПоложение]
       |         ,$Сотр.ИНН AS ИНН 
       |         ,$Сотр.ДокВид AS [ДокВид $Перечисление.ВидыДокументов]
       |         ,$Сотр.ДокСерия AS ДокСерия 
       |         ,$Сотр.ДокНомер AS ДокНомер
       |         ,$Сотр.ДокКемВыдан AS ДокКемВыдан
       |         ,$Сотр.ДокКогдаВыдан AS ДокКогдаВыдан
       |        ,SUM(Внутренний.Став) as Ставка
       |FROM     
       |(
       |  SELECT
       |     $ПоследнееЗначение.Сотрудники.Ставка(Сотр.ID, :ДатаАктуальности) Став
       |     ,$ПоследнееЗначение.Сотрудники.КвоЛьгот(Сотр.ID, :ДатаАктуальности) КвоЛьгот
       |     ,$ПоследнееЗначение.Сотрудники.Тариф(Сотр.ID, :ДатаАктуальности) Тариф
       |     ,$ПоследнееЗначение.Сотрудники.Пенсионер(Сотр.ID, :ДатаАктуальности) Пенсионер
       |     ,$ПоследнееЗначение.Сотрудники.Инвалид(Сотр.ID, :ДатаАктуальности) Инвалид
       |     ,$ПоследнееЗначение.Сотрудники.МестоРаботы(Сотр.ID, :ДатаАктуальности) Должность
       |  FROM
       |    $Справочник.Сотрудники Сотр
       |  WHERE
       |     Сотр.ID IN (SELECT Сотрв.Code AS КодВ FROM $Справочник.Сотрудники Сотрв)
       |                
       |    AND $Сотр.ДатаПриема > :Дат1 
       |    AND $Сотр.ДатаПриема <= :ДатаАктуальности 
       |    AND  ($Сотр.ДатаУвольнения = '01.01.1753' or  $Сотр.ДатаУвольнения>= :ДатаАктуальности )
       |) as Внутренний";
Выдает ошибку:
 The column prefix 'Сотр' does not match with a table name or alias name used in the query.
У меня альяс Сотр объявлен в  
FROM
   $Справочник.Сотрудники Сотр
А геде его нужно объявить?
 
 
   Ёпрст
 
101 - 25.01.13 - 14:22
(98) хочет тебя послать в пешее путешествие с эротическим уклоном, но лексикон, заложенный авторами не позволяет ему сделать этого.
   Wobland
 
102 - 25.01.13 - 14:23
(98) того же, чего и я в (94)
   sapphire
 
103 - 25.01.13 - 14:23
(98) Вот я потому и думаю, что Вы, Николай, фигней занимаетесь...

А англицьку мову, Вы, разумеете?
Оно же Вам явно каже де is not contained in an aggregate function and there is no GROUP BY
   Wobland
 
104 - 25.01.13 - 14:23
(99) света честно стебалась, а тут..
   bananan
 
105 - 25.01.13 - 14:24
Рябята у меня опыт работы только SELECT и немного WHERE
А в данном случае с текущим запросом мне поможет конкретная подсказка
   trad
 
106 - 25.01.13 - 14:25
Для лулзов вам задачка.
Многие ли определят есть ли в следующих запросах ошибки.
Только чур, по-честному, без проверки в QA 

1)
select *
from tab1
join tab2
 on tab2.fld = tab1.fld
join tab3
 on tab3.fld = tab1.fld

2)
select *
from tab1
inner join tab2
inner join tab3
 on tab3.fld = tab2.fld
 on tab2.fld = tab1.fld

3)
select *
from tab1
inner join tab2
inner join tab3
 on tab3.fld = tab1.fld
 on tab2.fld = tab1.fld
   Ёпрст
 
107 - 25.01.13 - 14:25
(105) конкретная подсказка была еще в (1) посту.
   Wobland
 
108 - 25.01.13 - 14:26
(105) ты хочешь перестать приходить сюда с идиотскими вопросами и быть посмещищем для всех? начни думать
   sapphire
 
109 - 25.01.13 - 14:26
SELECT    
|SELECT     
    |            Сотр.Descr AS Наименование
    |        ,Сотр.Code AS Код   
    |         ,$Сотр.Фирма AS [Фирма $Справочник.Фирмы]
    |         ,$Сотр.ДатаУвольнения AS ДатаУвольнения 
    |         ,$Сотр.ДатаПриема AS ДатаПриема    
    |         ,$Сотр.ДатаРождения AS ДатаРождения
    |         ,$Сотр.ПропискаАдрес AS ПропискаАдрес 
    |         ,$Сотр.ФактАдрес AS ФактАдрес         
    |         ,$Сотр.Пол as [Стать $Перечисление.Пол]
    |         ,$Сотр.Образование AS [Образование $Перечисление.Образование]
    |         ,$Сотр.СемейноеПоложение AS [СемейноеПоложение $Перечисление.СемейноеПоложение]
    |         ,$Сотр.ИНН AS ИНН 
    |         ,$Сотр.ДокВид AS [ДокВид $Перечисление.ВидыДокументов]
    |         ,$Сотр.ДокСерия AS ДокСерия 
    |         ,$Сотр.ДокНомер AS ДокНомер
    |         ,$Сотр.ДокКемВыдан AS ДокКемВыдан
    |         ,$Сотр.ДокКогдаВыдан AS ДокКогдаВыдан
    |        ,SUM(Внутренний.Став) as Ставка -- <-- Это агрегатная функция!!!

    |FROM     
    |(
    |  SELECT
    |     $ПоследнееЗначение.Сотрудники.Ставка(Сотр0.ID, :ДатаАктуальности) Став
    |     ,$ПоследнееЗначение.Сотрудники.КвоЛьгот(Сотр0.ID, :ДатаАктуальности) КвоЛьгот
    |     ,$ПоследнееЗначение.Сотрудники.Тариф(Сотр0.ID, :ДатаАктуальности) Тариф
    |     ,$ПоследнееЗначение.Сотрудники.Пенсионер(Сотр0.ID, :ДатаАктуальности) Пенсионер
    |     ,$ПоследнееЗначение.Сотрудники.Инвалид(Сотр0.ID, :ДатаАктуальности) Инвалид
    |     ,$ПоследнееЗначение.Сотрудники.МестоРаботы(Сотр0.ID, :ДатаАктуальности) Должность
    |     ,Сотр0.ID as ID
    |  FROM
    |    $Справочник.Сотрудники Сотр0
    |  WHERE
    |     Сотр0.ID IN (SELECT Сотрв.Code AS КодВ FROM $Справочник.Сотрудники Сотрв)
    |                
    |    AND $Сотр0.ДатаПриема > :Дат1 
    |    AND $Сотр0.ДатаПриема <= :ДатаАктуальности 
    |    AND  ($Сотр0.ДатаУвольнения = '01.01.1753' or  $Сотр0.ДатаУвольнения>= :ДатаАктуальности )
    |) as Внутренний     
    |INNER JOIN $Справочник.Сотрудники as Сотр (NOLOCK) on Сотр.ID =  Внутренний.ID
    |GROUP BY
    |            Сотр.Descr
    |        ,Сотр.Code
    |         ,$Сотр.Фирма
    |         ,$Сотр.ДатаУвольнения
    |         ,$Сотр.ДатаПриема
    |         ,$Сотр.ДатаРождения
    |         ,$Сотр.ПропискаАдрес
    |         ,$Сотр.ФактАдрес
    |         ,$Сотр.Пол
    |         ,$Сотр.Образование
    |         ,$Сотр.СемейноеПоложение
    |         ,$Сотр.ИНН
    |         ,$Сотр.ДокВид
    |         ,$Сотр.ДокСерия
    |         ,$Сотр.ДокНомер
    |         ,$Сотр.ДокКемВыдан
    |         ,$Сотр.ДокКогдаВыдан
   Wobland
 
110 - 25.01.13 - 14:26
(109) очень помог...
 
 Рекламное место пустует
   Wobland
 
111 - 25.01.13 - 14:27
(106) 1) где псевдоним.*?
   sapphire
 
112 - 25.01.13 - 14:28
(105) При чем здесь твой опыт с select и прочим?
Хотя бы бегло прорешать книжечку, там страниц-то мало совсем.
Неужели так трудно?
   bananan
 
113 - 25.01.13 - 14:28
(109) что Сум агрегетная функция я знаю... и что дальше??
   Ёпрст
 
114 - 25.01.13 - 14:28
(106) чем второй от третьего отличается ?
:0
   bananan
 
115 - 25.01.13 - 14:28
(112) читаю где-то по 15-20 страниц в день
   trad
 
116 - 25.01.13 - 14:29
(111) псевдоним не обязателен
   trad
 
117 - 25.01.13 - 14:29
(114) предпоследней строкой
   bananan
 
118 - 25.01.13 - 14:30
У меня опять этот форум врооде как глючит .. после сообщения 100 сразу идет 116..
   Wobland
 
119 - 25.01.13 - 14:30
(113) что она суммирует?
   Wobland
 
120 - 25.01.13 - 14:30
(118) на вторую страницу перейди
   bananan
 
121 - 25.01.13 - 14:31
(120) я и так на странице 2
   sapphire
 
122 - 25.01.13 - 14:31
(113) А как она должна суммировать? SQL должен сам догадаться?
   Wobland
 
123 - 25.01.13 - 14:31
(121) тогда на третью. или все сообщения
   bananan
 
124 - 25.01.13 - 14:31
(119) Суммирует количество ставок у разных сотрудников
   trad
 
125 - 25.01.13 - 14:31
(118) в личных настройках сними галки с пунктов
Автообновление темы (каждые 15 сек подгружаются только новые сообщения)
Подгрузка сообщений в тему при пролистывании
   sapphire
 
126 - 25.01.13 - 14:31
(115) Надо РЕШАТЬ а не читать.
   Wobland
 
127 - 25.01.13 - 14:32
(124) вася 30
федя 40
   sapphire
 
128 - 25.01.13 - 14:32
(123) А интересно, если просуммировать сотрудников что получится? :)
   Wobland
 
129 - 25.01.13 - 14:33
(126) а мы на что?
   sapphire
 
130 - 25.01.13 - 14:33
(129) А мы так, наставлять на пусть истинный :)
   trad
 
131 - 25.01.13 - 14:33
(128) сотрудник с фамилией ИТОГО
   bananan
 
132 - 25.01.13 - 14:34
(128) издевайтесь-издевайтесь, а зачем и кому от этого лучше вам - вряд-ли, мне - тоже не так
   sapphire
 
133 - 25.01.13 - 14:34
(131) Врядли :)
 
 
   Wobland
 
134 - 25.01.13 - 14:35
более характерный пример:
вася 10
вася 20
федя 30

сколько я хочу: 60 или вася 30/федя 30?
   sapphire
 
135 - 25.01.13 - 14:35
(132) Представляешь, то, что ты пишешь, похоже на 
мне надо сложить, помогите, плиз
код:
2+

чего то явно не хватает, верно?
   trad
 
136 - 25.01.13 - 14:36
так, ясно, Ёпрст ушел проверять (106) на примере в QA
:))
   sapphire
 
137 - 25.01.13 - 14:36
(136) Кроме 1 ничего не должно работать
   sapphire
 
138 - 25.01.13 - 14:37
(136) Если, конечно, речь о SQL, а не одинесно-восьмерочных извращениях
   trad
 
139 - 25.01.13 - 14:39
(138) про sql в общем конечно и 8x-нотации в частности
   Ёпрст
 
140 - 25.01.13 - 14:39
(136) не..
   Ёпрст
 
141 - 25.01.13 - 14:40
мне лень, но так, последние два не рабочие.. вот если on в них where заменить то покатит.
   Ёпрст
 
142 - 25.01.13 - 14:40
не так ли ?
   Ёпрст
 
143 - 25.01.13 - 14:40
да и с тобой на бентли один хрен не заработаешь
   trad
 
144 - 25.01.13 - 14:41
1, 2 - ok
3 - err
   Ёпрст
 
145 - 25.01.13 - 14:42
(144) странно, а почему 2 будет работать ?
   bananan
 
146 - 25.01.13 - 14:43
Ладно, сметесь-смейтесь... Я все равно SQL осилю
   Ёпрст
 
147 - 25.01.13 - 14:43
есть готовый код для qa ? проверить хоть, писать лень :)
   trad
 
148 - 25.01.13 - 14:44
по 1) ни у кого вопросов нет
во 2) tab2 связывается с tab3 первым on, а результат с tab1 вторым on
   trad
 
149 - 25.01.13 - 14:46
(147) нет. на коленке писал. скопируй, да вместо всех tab поставь любую таблицу реальную
 
 Рекламное место пустует
   Ёпрст
 
150 - 25.01.13 - 14:47
(148) как это ? Если смотреть в бол, то после иннер обязателен предикакт on писать, если его не указывать, то в where должен быть, разве нет ? Не вижу там, чтоб можно было так писать

from table
join table2
join table2
join table2
join table2
join table2
on
on
on
on
   sapphire
 
151 - 25.01.13 - 14:47
(144) А ну да там вложенный join
   trad
 
152 - 25.01.13 - 14:47
+(149) ну или добавь
declare @tab1 table(fld int)
declare @tab2 table(fld int)
declare @tab3 table(fld int)
   sapphire
 
153 - 25.01.13 - 14:48
(150)

select *
from (SELECT 1 fld) tab1
inner join (SELECT 1 fld) tab2
   inner join (SELECT 1 fld) tab3
    on tab3.fld = tab2.fld
 on tab2.fld = tab1.fld
   sapphire
 
154 - 25.01.13 - 14:48
(152) извращенецъ :)
   sapphire
 
155 - 25.01.13 - 14:51
(150)

from table
join table2 --(1)
join table2 --(2) 
join table2 --(3) 
join table2 --(4)
join table2 --(5) 
on --(5)
on --(4)  
on --(3)
on --(2)
on --(1)
   sapphire
 
156 - 25.01.13 - 14:51
+(155) Вложенность допускается.
Но я так не пишу никогда
   trad
 
157 - 25.01.13 - 14:51
(150) из bol в сильно сокращенном варианте:
FROM < table_source >
< table_source > ::= 
    table_name  
    | < joined_table > 
< joined_table > ::= 
    < table_source > < join_type > < table_source > ON < search_condition > 

так вот заметь < table_source > - рекурсивен
   Ёпрст
 
158 - 25.01.13 - 14:52
(157)ага, увидел..
но енто ж не читьабельнол
   sapphire
 
159 - 25.01.13 - 14:53
(157) Мне вложенность не нравится из-за нечитабелности
   sapphire
 
160 - 25.01.13 - 14:53
(158) Ну да, зато канает :)
   Ёпрст
 
161 - 25.01.13 - 14:53
(155) ужо догнал.
   trad
 
162 - 25.01.13 - 14:53
(156) а почему? ведь иногда удобно же, даже можно сказать незаменимо
   sapphire
 
163 - 25.01.13 - 14:54
(162) Почему?
   Ёпрст
 
164 - 25.01.13 - 14:54
(163) текст запроса поди динамически лепит
   sapphire
 
165 - 25.01.13 - 14:54
Линейно, ИМХО, читабельней.
Ну если ты имеешь ввиду получение каких-то вспомогательных данных через 5 соедниений, тогда наверное. и читабельно
   trad
 
166 - 25.01.13 - 14:56
что почему? почему незаменимо? потому что тоже самое по-другому не написать.
И про нечитабельность - не согласен. Вполне
   sapphire
 
167 - 25.01.13 - 14:56
(166) Не сталкивался.
   sapphire
 
168 - 25.01.13 - 14:56
(166) Пример?
   bananan
 
169 - 25.01.13 - 14:59
Народ, а я вам дал неплохую тему :)
   trad
 
170 - 25.01.13 - 14:59
(169) не льсти себе
   sapphire
 
171 - 25.01.13 - 15:01
(170) Приведи пример, когда сделать линейным join нельзя
   sapphire
 
172 - 25.01.13 - 15:02
(169) Вместо того, что бы следить за потоком сознания, лучше би Ицика про-решал... Читатель...
   trad
 
173 - 25.01.13 - 15:03
(171)ну ты загнул, это же думать надо
   sapphire
 
174 - 25.01.13 - 15:04
(173) Ага, значит ты недумая сказал, да... ай я яй... пичалька
   Ёпрст
 
175 - 25.01.13 - 15:04
Есть еще онлайн самоучитель с задачками по скулю.. не помню токма название сайта.
   rbserg
 
176 - 25.01.13 - 15:04
(169) > Народ, а я вам дал неплохую тему :)
В теме надо ходить с противогазом - дым от колодок глаза режет.
Может просто задачу напишешь?
   Ёпрст
 
177 - 25.01.13 - 15:05
   Ёпрст
 
178 - 25.01.13 - 15:06
вот сюда ходи и изучай запросы.
   trad
 
179 - 25.01.13 - 15:08
(174) ну да, про "по другому не написать" я скорее всего загнул
   Ganiev
 
180 - 25.01.13 - 15:08
(0)Блин вот короче читай и изучай с примерами!!!!
http://www.fayloobmennik.net/2550719
   Ёпрст
 
181 - 25.01.13 - 15:09
(179) А сам, реально так пишешь всегда ? Так же ошибиться на ерунде можно.. ищи потом
:(
   Mikeware
 
182 - 25.01.13 - 15:13
(105) зачет!
"я вообще-то математик. Но опыт у меня только с "умножить" и немного с "плюс". а с "минус" - не работал, мне нужна конкретная подсказка"©
   trad
 
183 - 25.01.13 - 15:15
(181) ну почему всегда, очень редко, но бывает
вот например задача с подчиненными: выбрать накладные со счетами фактурами.
сейчас нарисую простой пример.

ps
вот где то у меня был очень показательный случай. пока не могу найти
   Ёпрст
 
184 - 25.01.13 - 15:24
(183) ага, выкладывай!
   trad
 
185 - 25.01.13 - 15:24
вот иногда такое пишу
    |select
    |    right(j.date_time_iddoc,9) Накладная,
    |    right(jcr.date_time_iddoc,9) СчетФактура
    |from _1sjourn j (nolock)
    |
    |left join _1scrdoc cr (nolock)
    |    inner join _1sjourn jcr (nolock)
    |    on jcr.date_time_iddoc = cr.child_date_time_iddoc
    |on cr.mdid = 0
    |and cr.parentval = 'O1'+$ВидДокумента36.РасходнаяНакладная+right(cr.child_date_time_iddoc,9)
    |and jcr.iddocdef = $ВидДокумента.СчетФактура
    |
    |where j.iddocdef = $ВидДокумента.РасходнаяНакладная
    |  and j.date_time_iddoc between '' and ''
   trad
 
186 - 25.01.13 - 15:26
кстати попробуйте тоже самое получить каскадными соединениями, а не вложенными
   trad
 
187 - 25.01.13 - 15:27
+(185)
тут вывод списка накладных и, если есть, СФ к ним
   Ёпрст
 
188 - 25.01.13 - 15:30
дык при этом

    |left join _1scrdoc cr (nolock)
    |on cr.mdid = 0
    |and cr.parentval = 'O1'+$ВидДокумента36.РасходнаяНакладная+right(cr.child_date_time_iddoc,9)
    |    inner join _1sjourn jcr (nolock)
    |    on jcr.date_time_iddoc = cr.child_date_time_iddoc
    |and jcr.iddocdef = $ВидДокумента.СчетФактура

будет тоже самое
   trad
 
189 - 25.01.13 - 15:35
(188)неа, не будет накладных без СФ
   Ёпрст
 
190 - 25.01.13 - 15:49
(189) а нафига там еще один иннер джоин ?
   Ёпрст
 
191 - 25.01.13 - 15:50
а всё... догнал, фильтруешь вид дока
   bananan
 
192 - 25.01.13 - 15:58
Соскучился я за вами :)
вопрос:
   |       ,$ПоследнееЗначение.Сотрудники.МестоРаботы(Сотр.ID, :ДатаАктуальности) AS [$Перечисление.МестоРаботы]
как это правильно записать типизация последнего значения перечисления, потому как на такой код выдает ошибку:
 Ошибка типизации поля $Перечисление.МестоРаботы.
   Ёпрст
 
193 - 25.01.13 - 15:59
AS [Вася as $Перечисление.МестоРаботы]
   bananan
 
194 - 25.01.13 - 16:01
(193) выдает ошибку..
код:
  |       ,$ПоследнееЗначение.Сотрудники.МестоРаботы(Сотр.ID, :ДатаАктуальности) AS [Должность $Перечисление.МестоРаботы]
ошибка:
   Ошибка типизации поля Должность $Перечисление.МестоРаботы.
   Ёпрст
 
195 - 25.01.13 - 16:03
(194) для начала, этот код где ?
в подзапросе ?
Если да, то там типизация не нужна и противопоказана.
   bananan
 
196 - 25.01.13 - 16:04
(195) код в запросе
полный текст запроса:
   |SELECT   
    |         Сотр.Descr AS Наименование
    |         ,$Сотр.ДатаРождения
    |         ,$ПоследнееЗначение.Сотрудники.КвоЛьгот(Сотр.ID, :ДатаАктуальности) КвоЛьгот
    |          ,$ПоследнееЗначение.Сотрудники.Тариф(Сотр.ID, :ДатаАктуальности) Тариф
    |          ,$ПоследнееЗначение.Сотрудники.Пенсионер(Сотр.ID, :ДатаАктуальности) Пенсионер
    |         ,$ПоследнееЗначение.Сотрудники.Инвалид(Сотр.ID, :ДатаАктуальности) Инвалид
    |        ,$ПоследнееЗначение.Сотрудники.МестоРаботы(Сотр.ID, :ДатаАктуальности) AS [Должность $Перечисление.МестоРаботы]
   
    |FROM     
    |   $Справочник.Сотрудники AS Сотр
    |";
   Ёпрст
 
197 - 25.01.13 - 16:06
(196) а с чего уверенность, что МестоРаботы - перечисление.МестоРаботы ?
Мот справочник ?
:)
   bananan
 
198 - 25.01.13 - 16:07
(197) Сорри, опять туплю
   bananan
 
199 - 25.01.13 - 16:08
+(198) Стесняюсь спросить а как  к тому справочнику обратиться?
   Mikeware
 
200 - 25.01.13 - 16:09
(199) вежливо
  1  2  3  4   

Список тем форума
Рекламное место пустует  Рекламное место пустует
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки - вот настоящая работа.
Фредерик Брукс-младший
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует