Имя: Пароль:
1C
1C 7.7
v7: Проблема с прямым запросом
0 Маркусс
 
10.06.16
11:50
Добрый день

Что не так в запросе? Подскажите, плиз.
Ошибка: {Документ.Реализация.Модуль Документа(219)}: State 42000, native 258, message [Microsoft][ODBC SQL Server Driver][SQL Server]Cannot call methods on char.

ТекстЗапроса = "select
    |    Рег.Фирма [Фирма $Справочник.Фирмы],
    |    Рег.Договор [Договор $Справочник.Договоры],
    |   sum(Рег.СуммаВалОстаток) СуммаВал
    |from
    |    $РегистрОстатки.Покупатели(:Позиция~) Рег
    |where
    |    Рег.Фирма = :Фирма and Рег.Договор = :Договор  and  Рег.Договор.ParentExt.ЮрФизЛицо = :ЮрЛицо
    |group by
    |    Рег.Фирма, Рег.Договор
    |    ";        

Спасибо
1 Маркусс
 
10.06.16
11:51
Цель - получить список договоров с задолженностями по ЮрЛицу Контрагента
2 Зая Бусечка
 
10.06.16
11:52
Я бы сказала .Отладка(1), взяла бы текст запроса и его в EM.
И там уже смотреть
3 Mikeware
 
10.06.16
11:56
Перечислять измерения и ресурсы будет тот, у кого день рожденья в понедельник был?
4 Маркусс
 
10.06.16
12:07
(3) так перечислены же

я понял, что ругается на ".ParentExt.ЮрФизЛицо"
Как это правильно описать?
5 Зая Бусечка
 
10.06.16
12:10
(4) ParentExt - это строка длиной 9 символов. Что ты из неё через точку хочешь получить?
Делай лефт джойн
6 Ёпрст
 
10.06.16
12:11
(0) косяк тут
$РегистрОстатки.Покупатели(:Позиция~)
7 Ёпрст
 
10.06.16
12:13
ну и вот это
|where
    |    Рег.Фирма = :Фирма and Рег.Договор = :Договор  and  Рег.Договор.ParentExt.ЮрФизЛицо = :ЮрЛицо

можно запихать от сюда  $РегистрОстатки.Покупатели(:Позиция~,<>,<>,)
8 Ёпрст
 
10.06.16
12:13
ну и вот еще один косяк:

Рег.Договор.ParentExt.ЮрФизЛицо

так не покатит, нужно соединение со справочниками юрЛицо и ФизЛицо
9 Ёпрст
 
10.06.16
12:14
тьфу млин, со справочником договоры, чтоб посмотреть владельца
10 Mikeware
 
10.06.16
12:31
(9) да там и с договорами, и с контрагентами...
11 Mikeware
 
10.06.16
12:31
(4) где перечислены-то?
12 Mikeware
 
10.06.16
12:32
зы. продать тебе синтакс-помощник, чтоль?
13 Mikeware
 
10.06.16
12:39
кризис... только предложишь продать - все убегают...
14 Маркусс
 
10.06.16
13:59
Правильно понимаю, что конструкцию
  |where
    |    Рег.Фирма = :Фирма and Рег.Договор = :Договор

надо впихнуть в

|    $РегистрОстатки.Покупатели(:Позиция~,,Рег.Фирма = :Фирма and Рег.Договор = :Договор) Рег

?
15 Ёпрст
 
10.06.16
14:05
(14) можно и туда и переделать Рег.Договор.ParentExt.ЮрФизЛицо

и указать измерения и ресурсы в вт
16 Маркусс
 
10.06.16
14:12
Почему ЮрЛицо в результате пустое?

    ТЗ = "select
    |    Рег.Фирма [Фирма $Справочник.Фирмы],
    |    Рег.Договор [Договор $Справочник.Договоры],
    |    СпрКонтры.ID  [Контрагент $Справочник.Контрагенты],
    |    СпрЮрЛица.ID  [ЮрЛицо $Справочник],
    |   sum(Рег.СуммаВалОстаток) СуммаВал
    |from
    |    $РегистрОстатки.Покупатели(:Позиция~) Рег
    |
    |    Left join
    |
    |   $Справочник.Договоры as СпрДоги On СпрДоги.ID = Рег.Договор
    |
    |    Left join
    |
    |   $Справочник.Контрагенты as СпрКонтры On СпрКонтры.ID = СпрДоги.ParentExt
    |    Left join
    |
    |   $Справочник.ЮрЛица as СпрЮрЛица On СпрЮрЛица.ID = $СпрКонтры.ЮрФизЛицо
    |
    |where
    |    Рег.Фирма = :Фирма and Рег.Договор = :Договор
    |group by
    |    Рег.Фирма, Рег.Договор, СпрКонтры.ID, СпрЮрЛица.ID
    |    ";
17 Ёпрст
 
10.06.16
14:12
СпрЮрЛица.ID = $СпрКонтры.ЮрФизЛицо

Это не верно
18 Маркусс
 
10.06.16
14:13
В данном случае Юрлицо это значение из справочника ЮрЛица, а не ФизЛица
19 Маркусс
 
10.06.16
14:13
(17) а что не так?
20 Ёпрст
 
10.06.16
14:14
ЮрФизЛицо - реквизит неопределенного вида, хранится как строка , 13. нужно либо вид справочника слева прибавить, либо rigt( ,9) справа.
ЗЫ: лучше вид добавить, для гарантии
21 Маркусс
 
10.06.16
14:23
Так не помогло
    |   $Справочник.ЮрЛица as СпрЮрЛица On СпрЮрЛица.ID = right($СпрКонтры.ЮрФизЛицо,9)


Так ошибка
    |   $Справочник.ЮрЛица as СпрЮрЛица On $Справочник.ЮрЛица.ID = $СпрКонтры.ЮрФизЛицо
22 Маркусс
 
10.06.16
14:53
Так отработало:
    ТЗ = "select
    |    Рег.Фирма [Фирма $Справочник.Фирмы],
    |    Рег.Договор [Договор $Справочник.Договоры],
    |    СпрКонтры.ID  [Контрагент $Справочник.Контрагенты],
    |    СпрЮрЛица.ID  [ЮрЛицо $Справочник.ЮрЛица],
    |   sum(Рег.СуммаВалОстаток) СуммаВал
    |from
    |    $РегистрОстатки.Покупатели(:Позиция~) Рег
    |
    |    Left join
    |
    |   $Справочник.Договоры as СпрДоги On СпрДоги.ID = Рег.Договор
    |
    |    Left join
    |
    |   $Справочник.Контрагенты as СпрКонтры On СпрКонтры.ID = СпрДоги.ParentExt
    |    Left join
    |
    |   $Справочник.ЮрЛица as СпрЮрЛица On СпрЮрЛица.ID = right($СпрКонтры.ЮрФизЛицо,9)
    |
    |where
    |    Рег.Фирма = :Фирма and Рег.Договор = :Договор
    |group by
    |    Рег.Фирма, Рег.Договор, СпрКонтры.ID, СпрЮрЛица.ID
    |    ";
23 Mikeware
 
10.06.16
15:03
(22) так вроде это как в (21) вариант 1?
24 Маркусс
 
10.06.16
15:04
(23) вид справочника ещё добавил

СпрЮрЛица.ID  [ЮрЛицо $Справочник.ЮрЛица],
25 Mikeware
 
10.06.16
15:05
поставь конструктор заросов от Берездецкого - возможно, будет проще.
Хотя тут мнения расходятся - многие считают, что сначала нужно научится пейсать вручную...
26 Зая Бусечка
 
10.06.16
15:08
(25) И потом продолжать писать так же. Не опускаясь до всяких мышевозительств
27 Ёпрст
 
10.06.16
15:09
$Справочник.ЮрЛица as СпрЮрЛица On СпрЮрЛица.ID = right($СпрКонтры.ЮрФизЛицо,9)

так писать не совсем верно, ибо есть вероятность, что в ЮрФизЛицо торчит Фид лицо, с тем же id, что и в ЮрЛицо

лучше $ВидСправочника.ЮрЛица добавить слева (или $ВидСправочника36.ЮрЛица - это trad знает :))) )
28 varelchik
 
10.06.16
15:37
(14)Не Рег.Фирма = :Фирма and Рег.Договор = :Договор
а Фирма = :Фирма and Договор = :Договор
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс