Имя: Пароль:
1C
1С v8
Как получить типзначения документа в запросе?
0 suvolod
 
28.07.12
11:13
УТ 10.3, в нем есть отчет "Ведомость по партиям товаров на складах". Дефолтные настройки отчета формируются через запрос, в котором есть такая строчка...


|    ИсточникДанных.Регистратор КАК Регистратор,
|    ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор),

Как мне в запросе определить тип значения регистратора? Т.е мне надо нечто вроде:

Если ТиПЗнч(ИсточникДанных.Регистратор) = Тип("ДокументСсылка.РеализацияТоваровУслуг") Тогда
РегистраторПредставление = Строка(Регистратор)+"; " + Регистратор.Контрагент.Наименование;
Иначе
РегистраторПредставление = Строка(Регистратор);
КонецЕсли;
1 suvolod
 
28.07.12
11:14
.. разумеется, мне это в запросе надо написать
2 mehfk
 
28.07.12
11:15
КОГДА ИсточникДанных ССЫЛКА Документ.РеализацияТоваровУслуг ТОГДА
3 mehfk
 
28.07.12
11:15
fix ИсточникДанных --> ИсточникДанных.Регистратор
4 suvolod
 
28.07.12
11:17
попробую сейчас.. спасибо
5 Живой Ископаемый
 
28.07.12
11:18
В запросе есть функция ТипЗначения. в чем трудность?
6 suvolod
 
28.07.12
11:20
(5) а небольшой пример работы с этой функцией не можешь написать?
7 suvolod
 
28.07.12
11:21
... и еще. Как правильно сложить в этом случае два представления?
так не получается:

ВЫБОР
   КОГДА ИсточникДанных.Регистратор Ссылка Документ.РеализацияТоваровУслуг ТОГДА ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор)+Представление(ИсточникДанных.Регистратор.Контрагент)
   ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ИсточникДанных.Регистратор)
КОНЕЦ
8 suvolod
 
28.07.12
11:26
ладно.. в любом случае спасибо за помощь. наводку дали, остальное нагуглю :)
9 suvolod
 
28.07.12
11:41
... вопрос оказался сложнее, чем я думал. Два представления сложить нельзя. Как тогда в запросе получить строку вида:

ИсточникДанных.Регистратор + "; " + ИсточникДанных.Регистратор.Контрагент

из контрагента я могу вытащить Наименование ... но как вытащить тогда строку с полным названием документа (с номером, датой) без использования представления?
10 mehfk
 
28.07.12
11:46
СП --> Работа с языком запросов --> ВЫРАЗИТЬ
11 Kaidend
 
28.07.12
12:01
(9) В запросе этого не сделать никак. В языке запросов 1С можно складывать строки, но там нет преобразования типов, то есть, если изначально значение не строкового типа, то его никаким образом к строковому типу не приведешь и не "сложишь" с другим строковым значением. ПРЕДСТАВЛЕНИЕ на уровне платформы досчитывается отдельным запросом уже после выполнения основного запроса, поэтому оно, по сути, не дает преобразования к строковому типу. ВЫРАЗИТЬ используется для полей составного типа, чтобы подсказать платформе, с какими таблицами ей нужно соединяться для получения поля через точку, то есть функции преобразования к строке оно тоже не выполняет.

Советую выбирать контрагента отдельным полем, а дальше уже крутится через построитель отчета, на котором сделан этот отчет в УТ. Либо выводить отдельным полем, либо построитель может некоторые поля выводить вместе через запяюту (например, реквизиты измерений) - нужно смотреть его настройки.