Имя: Пароль:
1C
1C 7.7
v7: прямой запрос - типизация
0 edud
 
02.06.24
22:10
есть такой запрос

ТекстЗапроса = "
    |SELECT
    |    Жур.IDDoc as [Док $Документ],
    |    Жур.IDDocDef Док_вид,
    |
    |CASE Жур.IDDocDef
    |    WHEN $ВидДокумента.ПриходныйОрдер THEN $ДокПО.Контрагент
    |    WHEN $ВидДокумента.Отгрузка THEN $ДокОтгр.Склад
    //|END AS [Отправитель $Справочник.Контрагенты]
    //|END AS [Отправитель $Справочник]
    |END AS Отправитель
    |
    |FROM
    |    _1SJourn as Жур (nolock)
    |LEFT JOIN
    |    $Документ.ПриходныйОрдер as ДокПО ON ДокПО.IDDoc = Жур.IDDoc
    |LEFT JOIN
    |    $Документ.Отгрузка as ДокОтгр ON ДокОтгр.IDDoc = Жур.IDDoc
    |WHERE
    |    Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
    |    Жур.IDDocDef IN ($ВидДокумента.ПриходныйОрдер,$ВидДокумента.Отгрузка)
    |
    |Order by Жур.Date_Time_IDDoc
    |";

В документе ПриходныйОрдер отправитель это элемент справочника Контрагенты
В в документе Отгрузка отправитель это элемент справочника склады

Если я типизирую столбец отправитель как AS [Отправитель $Справочник.Контрагенты], то в столбец попадают только значения из поля отправитель из документа ПриходныйОрдер, а из документа Отгрузка , естественно запрос запись не находит.

Если я типизирую столбец отправитель как AS [Отправитель $Справочник], то в столбец вообще ничего нет. Хотя тип значения там правильный - "Справочник"

Если я типизирую столбец отправитель просто как AS Отправитель, то в столбец попадают только значения идентификаторов из обоих реквизитов отправитель. Но это просто строки со значениями идентификаторов.

Подскажет кто, как сделать чтобы в зависимости от вида документа в поле Отправитель попадал или элемент справочника контрагенты (из документа приходный ордер) или элемент справочника склады (из документа отгрузка)?

Пробовал уже разные варианты CASE, пробовал IF ELSE. И пока безрезультатно.

Причем необязательно чтобы в столбце был тип "Справочник".
Сойдёт если это будет наименование элемента (descr).


Спасибо...
:-)
1 Sserj
 
03.06.24
05:48
Чтобы типизировать $Справочник нужны виды справочников а из запроса попадают только 9 символов id.
Нужно к ним добавить приставки 3-ех символьные.
Что-то типа:
CASE Жур.IDDocDef
  WHEN $ВидДокумента.ПриходныйОрдер THEN $ВидСправочника.Контрагенты + $ДокПО.Контрагент
  WHEN $ВидДокумента.Отгрузка THEN $ВидСправочника.Склады + $ДокОтгр.Склад
END AS [Отправитель $Справочник]
За синтаксис не ручаюсь, но направление понятно.
2 ADirks
 
03.06.24
07:45
(0) Для понимания происходящего рекомендую почитать
http://www.script-coding.com/v77tables.html
3 edud
 
03.06.24
13:21
(2)
Разумеется. :-)
Этот раздел изучен.
Но пока не получается.
Нахожусь в стадии поиска решения...
4 Волшебник
 
03.06.24
13:29
(3) Найдите уже восьмёрку...
5 edud
 
03.06.24
14:06
Восьмёрка есть.
Есть у нас много баз на восьмой платформе.
Но есть и 7.7
6 АгентБезопасной Нацио
 
03.06.24
15:08
(5) ну так (1) прочитали? Только надо $ВидСправочника36
7 edud
 
03.06.24
16:11
А вот да....
>надо $ВидСправочника36

Спасибо. Получилось.

Всем большое спасибо!