Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Прямой запрос: Недопустимое имя столбца

v7: Прямой запрос: Недопустимое имя столбца
Я
   OnePrg
 
27.04.20 - 16:55
SELECT
      spr.ID,
      spr.ВнутреннийКонтрагент
FROM
      $Справочник.Контрагенты as spr


Ошибка: Недопустимое имя столбца "ВнутреннийКонтрагент".

Хотя такое поле в справочнике есть.
   Sserj
 
1 - 27.04.20 - 16:56
$spr.ВнутреннийКонтрагент
   OnePrg
 
2 - 27.04.20 - 16:58
Спасибо, друг - помогло.
   Sserj
 
3 - 27.04.20 - 16:58
На вопрос почему  spr.ID без $: ID это реальное поле таблицы, а ВнутреннийКонтрагент это псевдоним в 1С, который нужно преобразовать в реальное имя поле и $ указывает 1СPP на необходимость обработки.
   OnePrg
 
4 - 27.04.20 - 17:05
SELECT 
     сТовар.ParentID as [Товар $Справочник.Товар],
     Реал.Период as Период,
         сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
         SUM(Реал.СуммаОборот) as Сумма,
         SUM(Реал.СуммаУчетнаяОборот) as СуммаУчетная
    FROM
         $РегистрОбороты.Реализация(:ВыбНачПериода,:ВыбКонПериода,Месяц, , ,(Товар,МестоХранения,Контрагент),(Сумма,СуммаУчетная)) AS Реал 
    LEFT JOIN
         $Справочник.Товар as сТовар 
         ON сТовар.ID = Реал.Товар
    LEFT JOIN 
         $Справочник.МестаХранения as сМестаХранения 
         ON сМестаХранения.ID = Реал.МестоХранения
    LEFT JOIN 
         $Справочник.Контрагенты as cКонтрагенты 
         ON cКонтрагенты.ID = Реал.Контрагент
    WHERE 
         Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты
         and CASE WHEN Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты
              THEN $cКонтрагенты.ВнутреннийКонтрагент        !!!!!!! вот это строка не срабатывает - запрос пустой, если ставлю THEN 0 - запрос полный
              ELSE 1
             END = 0
    GROUP BY
         сТовар.ParentID,
         Реал.Период,
         сМестаХранения.ParentID
   Изучаю1С8
 
5 - 27.04.20 - 17:30
Что такое END = 0
   Sserj
 
6 - 27.04.20 - 17:45
(4) 1. А какой тип у ВнутреннийКонтрагент, там точно число?
2. У тебя уже условие:
    WHERE 
         Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты
зачем еще раз проверка?

Можно же проще:
    WHERE 
         Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты
         and $cКонтрагенты.ВнутреннийКонтрагент = ЧтоНужно.
   OnePrg
 
7 - 27.04.20 - 18:00
SELECT 
         сТовар.ParentID as [Товар $Справочник.Товар],
         Реал.Период as Период,
         сМестаХранения.ParentID as [Склад $Справочник.МестаХранения],
         SUM(Реал.СуммаОборот) as Сумма,
         SUM(Реал.СуммаУчетнаяОборот) as СуммаУчетная
    FROM
         $РегистрОбороты.Реализация(:ВыбНачПериода,:ВыбКонПериода,Месяц, , ,(Товар,МестоХранения,Контрагент),(Сумма,СуммаУчетная)) AS Реал 
    LEFT JOIN
         $Справочник.Товар as сТовар 
         ON сТовар.ID = Реал.Товар
    LEFT JOIN 
         $Справочник.МестаХранения as сМестаХранения 
         ON сМестаХранения.ID = Реал.МестоХранения
    LEFT JOIN 
         $Справочник.Контрагенты as cКонтрагенты 
         ON cКонтрагенты.ID = SUBSTRING(Реал.Контрагент, 5, 9)
    WHERE 
         Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты
         and $cКонтрагенты.ВнутреннийКонтрагент = 0
    GROUP BY
         сТовар.ParentID,
         Реал.Период,
         сМестаХранения.ParentID

Этот запрос работает. Один добрый человек подсказал ON cКонтрагенты.ID = SUBSTRING(Реал.Контрагент, 5, 9), но не объяснил почему

Почему если ставлю ON cКонтрагенты.ID = Реал.Контрагент запрос пустой?
   Sserj
 
8 - 27.04.20 - 18:43
(7) А ну теперь все понятно.
Реал.Контрагент это у тебя тип Справочник, без вида. В базе он хранится как строка 13 символов первые 4 обозначают вид, следующие 9 ID.
ID это строка 9 символов.
И когда ты пишешь:
ON cКонтрагенты.ID = Реал.Контрагент: получается связываешь по полю 9 символов с 13.

поэтому в условии:

THEN $cКонтрагенты.ВнутреннийКонтрагент  - выдает NULL, который собственно никогда ничему не равен и после такого условия у тебя выборка пустая.
   OnePrg
 
9 - 27.04.20 - 23:39
Спасибо.

А какую документацию посоветуешь по прямым запросам к БД?
   Ёпрст
 
10 - 28.04.20 - 10:07
(9) форум 1cpp и книжка по основам t-sql
   orefkov
 
11 - 28.04.20 - 10:41
+(10)
1cv7.dds ещё :)

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