|
Получить значение реквизита от объекта заранее неизвестного типа в запросе | ☑ | ||
---|---|---|---|---|
0
kassbar
14.03.23
✎
11:31
|
Пример запроса:
ВЫБРАТЬ &Регистратор КАК ДокументРегистратор ПОМЕСТИТЬ Т ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.ДокументРегистратор КАК ДокументРегистратор, ??? КАК Подразделение ИЗ Т КАК Т Параметром может передаваться совершенно рандомный документ. Задача - если это документ "Заказ клиента", то в поле "Подразделение" вывести значение его реквизита "Подразделение"(оно там точно есть), иначе вывести Неопределено. |
|||
1
Timon1405
14.03.23
✎
11:34
|
Выбор когда Т.ДокументРегистратор ссылка документ.ЗаказКлиента тогда
Выразить(Т.ДокументРегистратор как документ.ЗаказКлиента).Подразделение иначе Неопределено конец |
|||
2
PR
14.03.23
✎
11:34
|
ВЫБОР и ССЫЛКА
|
|||
3
kassbar
14.03.23
✎
11:35
|
А вы сначала попробуйте )
Я же не просто так тему открыл |
|||
4
Amra
14.03.23
✎
11:35
|
Выбор когда Т.ДокументРегистратор ССЫЛКА Документ.ЗаказПокупателя тогда
Т.ДокументРегистратор.Подразделение Иначе НЕопределено Конец Как Подразделение |
|||
5
Timon1405
14.03.23
✎
11:35
|
(3) тогда расскажите как пробуете и что не работает
|
|||
6
kassbar
14.03.23
✎
11:36
|
(5) я перепробовал собственно все что вышеперечислено. Не работает, когда в качестве регистратора даем документ, у которого в принципе нет реквизита "Подразделение". Например, Ввод начальных остатков
|
|||
7
Garykom
гуру
14.03.23
✎
11:43
|
(6) плохо пробовал
|
|||
8
p-soft
14.03.23
✎
11:46
|
(3) день новых открытий, да..
|
|||
9
RomanYS
14.03.23
✎
12:05
|
(0) В БСП есть функции получения реквизитов по ссылке, в них Ваш вопрос решён
|
|||
10
PR
14.03.23
✎
12:09
|
(3) Да ладно
Что, такое не работает, точно?
|
|||
11
DJ Anthon
14.03.23
✎
12:10
|
еще есть ЕСТЬNULL
|
|||
12
Мультук
гуру
14.03.23
✎
12:12
|
(10)
{ВнешняяОбработка.КонсольЗапросов.МодульОбъекта(676)}: Ошибка при вызове метода контекста (ВыполнитьПакет): {(8, 39)}: Несовместимые типы "ССЫЛКА" ВЫБОР КОГДА Т.ДокументРегистратор <<?>>ССЫЛКА Документ.ЗаказКлиента ТОГДА Оно (данный конкретный пример) примерно вот так работает в консоли. В обработке лень смотреть P.S. А автор тот еще троль! +1 |
|||
13
PR
14.03.23
✎
12:13
|
(11) Ну да, можно ЕСТЬNULL(Т.ДокументРегистратор, НЕОПРЕДЕЛЕНО)
Но ТС же нужен один конкретный документ, а не все, в которых есть реквизит Подразделение |
|||
14
RomanYS
14.03.23
✎
12:14
|
(10) а должно?
|
|||
15
RomanYS
14.03.23
✎
12:15
|
(10) с выразить возможно будет работать
|
|||
16
PR
14.03.23
✎
12:16
|
(14) А, там же в (0) из параметра во внешнюю таблицу кидается сначала
Не знаю тогда, может и не будет такое работать Но вообще нахрена тогда вычислять это в запросе, а не сделать еще один параметр &Подразделение |
|||
17
PR
14.03.23
✎
12:18
|
(15) Ну конечно будет, раз мы одинеске явно говорим, что за тип мы получаем
|
|||
18
RomanYS
14.03.23
✎
12:21
|
(17) первый ВЫРАЗИТЬ выглядит лишним
|
|||
19
RomanYS
14.03.23
✎
12:26
|
+(18) и дает ошибку
Несовместимые типы "ВЫРАЗИТЬ" Вероятно можно проверку ССЫЛКА заменить на сравненеи типов, только непонятно зачем всё это |
|||
20
kassbar
14.03.23
✎
12:27
|
(16) ОК, упрощаю запрос (в контексте моей задачи это недопустимо, но для поиска решения сгодится):
ВЫБРАТЬ &Регистратор КАК ДокументРегистратор, ??? КАК Подразделение |
|||
21
Garykom
гуру
14.03.23
✎
12:31
|
(20) через ВЫБОР с опорой на какой то заведомо существующий реквизит
например ХозяйственнаяОперация или соединением с Документы.ЗаказКлиента |
|||
22
RomanYS
14.03.23
✎
12:31
|
(20) что мешает определить тип параметра до передачи в запрос?
Без этого собирай запрос по всем метаданным, где есть поле Подразделение |
|||
23
Мультук
гуру
14.03.23
✎
12:33
|
(20)
Я правильно понимаю ход мыслей? ВЫБРАТЬ &Регистратор КАК ДокументРегистратор, &Подразделение КАК Подразделение ПОМЕСТИТЬ ВТ_Т ; /// Нельзя получить ТекущийРуководитель ///////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Т.ДокументРегистратор КАК ДокументРегистратор, ВТ_Т.Подразделение.ТекущийРуководитель КАК ПодразделениеТекущийРуководитель ИЗ ВТ_Т КАК ВТ_Т ; // Работает ////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_Т.ДокументРегистратор КАК ДокументРегистратор, СтруктураПредприятия.ТекущийРуководитель КАК ТекущийРуководитель ИЗ ВТ_Т КАК ВТ_Т ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.СтруктураПредприятия КАК СтруктураПредприятия ПО ВТ_Т.Подразделение КАК Подразделение = СтруктураПредприятия.Ссылка |
|||
24
PR
14.03.23
✎
12:35
|
(20) Ой, ладно, упрощатор
|
|||
25
kassbar
14.03.23
✎
12:54
|
(21) Красавчик, выписываю премию )
ВЫБРАТЬ &Регистратор КАК ДокументРегистратор ПОМЕСТИТЬ Т ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Т.ДокументРегистратор КАК ДокументРегистратор, ЕСТЬNULL(ЗаказКлиента.Подразделение, Неопределено) КАК Подразделение ИЗ Т КАК Т ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента ПО (Т.ДокументРегистратор = ЗаказКлиента.Ссылка |
|||
26
Garykom
гуру
14.03.23
✎
12:55
|
&НаСервере
Процедура ПроверитьНаСервере() Сообщить(""+Документ); ТекущийОбъект = РеквизитФормыВЗначение("Объект"); Запрос = Новый Запрос( "ВЫБРАТЬ | &Документ КАК ДокументРегистратор |ПОМЕСТИТЬ ВтДокументы |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Документы.ДокументРегистратор КАК ДокументРегистратор, | ЗаказКлиента.Подразделение КАК Подразделение |ИЗ | ВтДокументы КАК Документы | ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК ЗаказКлиента | ПО Документы.ДокументРегистратор = ЗаказКлиента.Ссылка"); Запрос.УстановитьПараметр("Документ", Документ); РезультатЗапроса = Запрос.Выполнить().Выгрузить(); Сообщить(""+РезультатЗапроса[0].Подразделение); КонецПроцедуры |
|||
27
Garykom
гуру
14.03.23
✎
12:57
|
(25) >ЕСТЬNULL(ЗаказКлиента.Подразделение, Неопределено) КАК Подразделение
ЕСТЬNULL лишнее тут |
|||
28
PR
14.03.23
✎
13:04
|
(27) Будет NULL, а не НЕОПРЕДЕЛЕНО
|
|||
29
Garykom
гуру
14.03.23
✎
13:22
|
(28) и в данном случае это плохо, инфу потеряли что соединение не произошло
|
|||
30
kassbar
14.03.23
✎
16:42
|
(29) да садись уже, пять )
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |