Имя: Пароль:
1C
1C 7.7
v7: Ошибка: Meta name parser error: поле таблицы не найдено "$Спр.Заказчик"
0 Irina3gger
 
30.06.17
09:01
Доброго времени. Уважаемые специалисты помогите разобраться с 1С++, а точнее с запросом. Был написан запрос, но выдает ошибку: Meta name parser error: поле таблицы не найдено "$Спр.Заказчик".

Подскажите пожалуйста в чем я ошиблась, вот код запроса
    ТекстЗапроса =
    "
    |SELECT
    |   Жур.IDDoc             as [Док $Документ],
    |   Жур.IDDocDef        as Док_вид,
    |    Спр.Code as Код,
    |   Спр.Descr as Наименование,
    |    $Док.Объект          as [Объект $Справочник.Объект],
    |    $Док.Сумма          as Сумма,
    |    $Док.ДолгПоОплате  as ДолгПоОплате,
    |    $Док.ПризнакПодпис as [ПризнакПодпис $Перечисление.Признак],
    |    $Док.ВидАкта        as [ВидАкта $Справочник.ВидАкт],
    |    $Спр.Заказчик        as [Заказчик $Справочник.Заказчик],
    |    $Спр.Район         as [Район $Справочник.Области],
    |    $Спр.ИстФин        as [ИстФин $Справочник.ИстФин]
    |FROM
    |   _1SJourn as Жур
    |INNER JOIN
    |    $Документ.АктОбъемаРабот as Док ON Док.IDDoc = Жур.IDDoc
    |INNER JOIN
    |    $Справочник.Объект as Спр.Заказчик ON Спр.ID = $Док.Объект
    |    $Справочник.Объект as Спр.Район ON Спр.ID = $Док.Объект
    |    $Справочник.Объект as Спр.ИстФин ON Спр.ID = $Док.Объект
    |LEFT JOIN
    |    $Справочник.ИстФин as Спр.ИстФин ON
    |    $ВидСправочника36.ИстФин + СпрИстФин.ID  = $Док.Объект
    |
    |WHERE    
    |   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
    |    AND Жур.Closed & 1 = 1
    |    AND $Док.ВидАкта <> :ВидАктов
    |    AND $Док.ДолгПоОплате <> 0
    |    AND $Спр.Заказчик = :ТекЗаказчик
    |"
1 vcv
 
30.06.17
09:16
Какой-то странный JOIN
> $Справочник.Объект as Спр.Заказчик ON Спр.ID = $Док.Объект

Синтаксис же такой: INNER JOIN <таблица> as <алиас> on <условие>

Наверное, должно быть примерно так:

INNER JOIN
$Справочник.Объект as Заказчики ON Заказчики.ID = $Док.Заказчик
    
2 vcv
 
30.06.17
09:18
Использование в качестве алиаса в запросе чего-то типа "Спр.ИстФин" кажется очень подозрительным. Если уж хотите точку и прочие спецсимволы в алиасе, алиас нужно брать в одинарные кавычки.
3 Irina3gger
 
30.06.17
09:31
(1) До это был написан такой запрос и он работал.

"
    |SELECT
    |   Жур.IDDoc             as [Док $Документ],
    |   Жур.IDDocDef        as Док_вид,
    |    Спр.Code as Код,
    |   Спр.Descr as Наименование,
    |    $Док.Объект          as [Объект $Справочник.Объект],
    |    $Док.Сумма          as Сумма,
    |    $Док.ДолгПоОплате  as ДолгПоОплате,
    |    $Док.ПризнакПодпис as [ПризнакПодпис $Перечисление.Признак],
    |    $Док.ВидАкта        as [ВидАкта $Справочник.ВидАкт],
    |    $Спр.Заказчик        as [Заказчик $Справочник.Заказчик],
    |    $Спр.Район         as [Район $Справочник.Области],
    |FROM
    |   _1SJourn as Жур
    |INNER JOIN
    |    $Документ.АктОбъемаРабот as Док ON Док.IDDoc = Жур.IDDoc
    |INNER JOIN
    |    $Справочник.Объект as Спр ON Спр.ID = $Док.Объект
    |
    |WHERE    
    |   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
    |    AND Жур.Closed & 1 = 1
    |    AND $Док.ВидАкта <> :ВидАктов
    |    AND $Док.ДолгПоОплате <> 0
    |    AND $Спр.Заказчик = :ТекЗаказчик
    |"

Но сейчас я пытаюсь добавить новую колонку в таблицу и чтоб через запрос подтягивались данные, но все время ошибки какие то.

Если просто добавляю Спр.ИстФин, то ошибка: Поле агрегатного объекта не обнаружено(ТекущийЭлемент)
"
    |SELECT
    |   Жур.IDDoc             as [Док $Документ],
    |   Жур.IDDocDef        as Док_вид,
    |    Спр.Code as Код,
    |   Спр.Descr as Наименование,
    |    $Док.Объект          as [Объект $Справочник.Объект],
    |    $Док.Сумма          as Сумма,
    |    $Док.ДолгПоОплате  as ДолгПоОплате,
    |    $Док.ПризнакПодпис as [ПризнакПодпис $Перечисление.Признак],
    |    $Док.ВидАкта        as [ВидАкта $Справочник.ВидАкт],
    |    $Спр.Заказчик        as [Заказчик $Справочник.Заказчик],
    |    $Спр.Район         as [Район $Справочник.Области],
    |    $Спр.ИстФин        as [ИстФин $Справочник.ИстФин]
    |FROM
    |   _1SJourn as Жур
    |INNER JOIN
    |    $Документ.АктОбъемаРабот as Док ON Док.IDDoc = Жур.IDDoc
    |INNER JOIN
    |    $Справочник.Объект as Спр ON Спр.ID = $Док.Объект
    |
    |WHERE    
    |   Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~
    |    AND Жур.Closed & 1 = 1
    |    AND $Док.ВидАкта <> :ВидАктов
    |    AND $Док.ДолгПоОплате <> 0
    |    AND $Спр.Заказчик = :ТекЗаказчик
    |"

Подумала что может не видит это поле, и решила на прямую к справочнику обратится, но тогда выдает ошибку: Meta name parser error: поле таблицы не найдено "$Спр.Заказчик".


Подскажите пожалуйста что делать, что-то я совсем запуталсь
4 h-sp
 
30.06.17
09:41
имя должно быть без точек. Вы вообще раньше программировали когда-нибудь?
5 Irina3gger
 
30.06.17
09:45
Спасибо большое. Я уже исправила все, и помогло.
Я на 1с все пару дней, и она мне еще туго дается, но я стараюсь) Спасибо за отзывчивость и помощь)
6 h-sp
 
30.06.17
09:46
видите же как было

   |    $Справочник.Объект as Спр ON Спр.ID = $Док.Объект

автор запроса присвоил таблице $Справочник.Объект имя "Спр" при помощи слова as
Закон Брукера: Даже маленькая практика стоит большой теории.