Имя: Пароль:
1C
1C 7.7
v7: Как найти документ в справочнике?
, ,
0 Таня-ученица
 
02.07.15
11:16
Помогите отыскать документ.
Создала справочник ДОКИ, в нём сделала реквизит Док (тип Документ), с отбором и реквизит РУБЛ (тип число, в него при записи документа вношу кое-какие числа).
Справочник заполнен.
Составила запрос, где иду по всем документам:

    |          Жур.IDDoc as [Документ $Документ],
    |        $Доки.Док as [ДОКИ $Строка ],
    |        $ДОКИ.РУБЛ as [РУБЛ $Строка ]
    |FROM
    |    _1SJourn Жур (nolock)
    |LEFT JOIN
    |    $Справочник.Доки as Доки (nolock) ON Жур.IDDoc = $Доки.Док

Я хочу чтобы при переборе документов, запрос искал данный документ в справочнике ДОКИ в реквизите ДОК и возвращал мне в поле РУБЛ значение числа из реквизита РУБЛ.
Но в полях ДОКИ и РУБЛ у меня пусто :(
Помогите!
1 Таня-ученица
 
02.07.15
11:29
Помогите
2 Asmody
 
02.07.15
11:34
Я ничего не понял
3 Andrey2C
 
02.07.15
11:35
Что у тебя в IdDoc и что в Док? И там и там есть ссылки на документ?
4 Таня-ученица
 
02.07.15
11:36
Что у тебя в IdDoc
уникальный идентификатор документа :)
и что в Док?
ссылка на документ в реквизите справочника ДОКИ
5 Andrey2C
 
02.07.15
11:37
(4) Ну и как ты соединяешь левоесоединение с разными по типу полями?
6 1Сергей
 
02.07.15
11:38
тип реквизита "Док" неопределенного вида?
7 Таня-ученица
 
02.07.15
11:40
(5) В поле Доки.Док должен быть тот же уникальный идентификатор.

(6) в шапке же написала - тип ДОКУМЕНТ (не конкретного вида), просто документ

Туда записывается значение функцией ТекущийДокумент()
при записи документа
8 1Сергей
 
02.07.15
11:41
ну тогда надо использовать Ссылка13 или как там в 1С++ называется...
9 Andrey2C
 
02.07.15
11:46
(7) Должен быть но там ссылка на документ))) Ничего не понятно
10 Масянька
 
02.07.15
11:47
(2) Поддерживая.
А что за "нетленка" со справочником документов?
11 Boroda
 
02.07.15
11:48
К справочнику надо делать INNER JOIN. В справочнике же не все документы что в журнале.
Какой тип реквизита документа в справочнике?  Если просто "Документ", то надо делать RIGHT(ИдДок,9)
12 Boroda
 
02.07.15
11:49
к (11) дополнение, как должно быть:
|INNER JOIN
|    $Справочник.Доки as Доки (nolock) ON Жур.IDDoc = RIGHT($Доки.Док,9)
13 viktor_vv
 
02.07.15
11:53
Для получения реквизита шапки документа надо еще таблицу шапки джойнить. И не совсем понятно зачем тебе журнал еще.

  |          $Доки.Док as [Документ $Документ],
    |        $Доки.Док as [ДОКИ $Строка ],
    |        $ДокШапка1.РУБЛ as [РУБЛ $Строка ]
    |    $Справочник.Доки as Доки (nolock)
    |LEFT JOIN $Документ.ВидДокумента1 as ДокШапка1
         ON ДокШапка1.IDDoc = Right($Доки.Док,9)
14 Таня-ученица
 
02.07.15
12:10
Попробовала RIGHT($Доки.Док,9)
Работает медленно при большом кол-ве документов :(
15 Таня-ученица
 
02.07.15
12:16
Т.е. сравниваются последние 9 символов?
16 Boroda
 
02.07.15
12:23
(15) В Жур.IdDoc  - идентификатор документа, содержит 9 символов, а реквизит типа "Документ" содержит 13 символов, еще 4 символа на  вид документа.