|
v7: Прямой запрос: Недопустимое имя столбца | ☑ | ||
---|---|---|---|---|
0
OnePrg
27.04.20
✎
16:55
|
SELECT
spr.ID, spr.ВнутреннийКонтрагент FROM $Справочник.Контрагенты as spr Ошибка: Недопустимое имя столбца "ВнутреннийКонтрагент". Хотя такое поле в справочнике есть. |
|||
1
Sserj
27.04.20
✎
16:56
|
$spr.ВнутреннийКонтрагент
|
|||
2
OnePrg
27.04.20
✎
16:58
|
Спасибо, друг - помогло.
|
|||
3
Sserj
27.04.20
✎
16:58
|
На вопрос почему spr.ID без $: ID это реальное поле таблицы, а ВнутреннийКонтрагент это псевдоним в 1С, который нужно преобразовать в реальное имя поле и $ указывает 1СPP на необходимость обработки.
|
|||
4
OnePrg
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 |
|||
5
Изучаю1С8
27.04.20
✎
17:30
|
Что такое END = 0
|
|||
6
Sserj
27.04.20
✎
17:45
|
(4) 1. А какой тип у ВнутреннийКонтрагент, там точно число?
2. У тебя уже условие: WHERE Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты зачем еще раз проверка? Можно же проще: WHERE Left(Реал.Контрагент,4) = $ВидСправочника36.Контрагенты and $cКонтрагенты.ВнутреннийКонтрагент = ЧтоНужно. |
|||
7
OnePrg
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 = Реал.Контрагент запрос пустой? |
|||
8
Sserj
27.04.20
✎
18:43
|
(7) А ну теперь все понятно.
Реал.Контрагент это у тебя тип Справочник, без вида. В базе он хранится как строка 13 символов первые 4 обозначают вид, следующие 9 ID. ID это строка 9 символов. И когда ты пишешь: ON cКонтрагенты.ID = Реал.Контрагент: получается связываешь по полю 9 символов с 13. поэтому в условии: THEN $cКонтрагенты.ВнутреннийКонтрагент - выдает NULL, который собственно никогда ничему не равен и после такого условия у тебя выборка пустая. |
|||
9
OnePrg
27.04.20
✎
23:39
|
Спасибо.
А какую документацию посоветуешь по прямым запросам к БД? |
|||
10
Ёпрст
28.04.20
✎
10:07
|
(9) форум 1cpp и книжка по основам t-sql
|
|||
11
orefkov
28.04.20
✎
10:41
|
+(10)
1cv7.dds ещё :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |