Сравнить значение определяемого типа с типом документа в запросе

1. psa247 21 07.08.22 15:15 Сейчас в теме
Доброго дня!
Подскажите, пожалуйста, с решением проблемы.
Есть регистр в УТ взаиморасчеты по срокам, регистратором у него является определяемый тип "Расчетный документ"
Как в запросе выбрать все регистраторы по типу "Поступлениена расчетный счет".

Опробовал ТИПЗНАЧЕНИЯ, ССЫЛКА, ВЫРАЗИТЬ - везде выдает ошибку.

ТИПЗНАЧЕНИЯ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор.Ссылка) = ТИП(Документ.ПоступлениеБезналичныхДенежныхСредств) - не отрабатывает
ССЫЛКА - выдает ошибку о несовместимости типов
Спасибо!
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
32. psa247 21 07.08.22 17:21 Сейчас в теме
(30) мой выход - это использовать основную таблицу, чтобы выдернуть реквизит. виртуальная таблица обороты с остатками не подходят. Еще раз спасибо!
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. spacecraft 07.08.22 16:10 Сейчас в теме
(1) не совсем понятен вопрос. Определяемый тип доступен только в конфигураторе и через ОбъектМетаданных.
В запросе будут доступны типы, которые определены в состав определяемого типа. Определяемый тип можно рассматривать как составной тип из состава определяемого типа.
Соответственно, если тип Документ.ПоступлениеБезналичныхДенежныхСредств входит в состав определяемого типа, то по нему можно делать отбор. В том числе и через Ссылка.

Приведите код, который пробовали и не отрабатывает.
2. FatPanzer 07.08.22 16:08 Сейчас в теме
А зачем ты берёшь Регистратор.Ссылка? Регистратор - это уже ссылка, а его ещё дополнительно соединяешь со всеми таблицами документов, входящих в определяемый тип.
4. psa247 21 07.08.22 16:13 Сейчас в теме
Пробовал из без ссылки. Вернул как было - результат запроса = 0
ВЫБРАТЬ
	СУММА(ЗаказКлиентаТовары.СуммаСНДС) КАК СуммаЗаказа,
	ЗаказКлиентаТовары.Ссылка КАК Заказ
ПОМЕСТИТЬ ВРЕМ_ЗАКАЗЫССУММОЙ
ИЗ
	Документ.ЗаказКлиента.Товары КАК ЗаказКлиентаТовары
ГДЕ
	ЗаказКлиентаТовары.Ссылка В(&Заказы)

СГРУППИРОВАТЬ ПО
	ЗаказКлиентаТовары.Ссылка
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ РАЗЛИЧНЫЕ
	РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ОбъектРасчетов КАК ЗАКАЗКЛИЕНТА,
	ВРЕМ_ЗАКАЗЫССУММОЙ.СуммаЗаказа КАК СуммаЗаказа,
	ВЫБОР
		КОГДА РасчетыСКлиентамиПоСрокамОстаткиИОбороты.РасчетныйДокумент.ХозяйственнаяОперация = &ХО
			ТОГДА РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ПредоплатаНачальныйОстаток + РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ПредоплатаПриход
		ИНАЧЕ 0
	КОНЕЦ КАК Оплата,
	ВЫБОР
		КОГДА РасчетыСКлиентамиПоСрокамОстаткиИОбороты.РасчетныйДокумент.ХозяйственнаяОперация = &ХОПогашение
			ТОГДА РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ДолгПриход
		ИНАЧЕ 0
	КОНЕЦ КАК ПогашениеДолга,
	РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор КАК РасчетныйДокумент
	//ВЫРАЗИТЬ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор КАК Документ.ПоступлениеБезналичныхДенежныхСредств)
	
ПОМЕСТИТЬ врЕм_всезаКАЗЫЗАПериодССУММОЙ_1
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоСрокам.ОстаткиИОбороты(, , Регистратор, , ) КАК РасчетыСКлиентамиПоСрокамОстаткиИОбороты
		ЛЕВОЕ СОЕДИНЕНИЕ ВРЕМ_ЗАКАЗЫССУММОЙ КАК ВРЕМ_ЗАКАЗЫССУММОЙ
		ПО (РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ОбъектРасчетов = ВРЕМ_ЗАКАЗЫССУММОЙ.Заказ)
ГДЕ
	РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ОбъектРасчетов В(&Заказы)
	И
	ТИПЗНАЧЕНИЯ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеБезналичныхДенежныхСредств)
Показать
5. psa247 21 07.08.22 16:14 Сейчас в теме
Последняя строка не отрабатывает, без нее работает
6. spacecraft 07.08.22 16:20 Сейчас в теме
(5) что значит не отрабатывает? Нет данных?
Ну и самое главное. Отбор по конкретному типу не отменяет соединение по всем таблицам, если нет ВЫРАЗИТЬ для явного указания типа регистратора при обращении к/через регистратор.
14. FatPanzer 07.08.22 16:36 Сейчас в теме +0.5 $m
(6) Это только в запросе есть обращение через точку от поля с сотставным типом. Если в запросе дальнейшего обращения нет - то и связей никаких не строится.
17. spacecraft 07.08.22 16:39 Сейчас в теме
(14) смотри внимательно запрос:
РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор КАК РасчетныйДокумент
19. FatPanzer 07.08.22 16:42 Сейчас в теме
(17) Да, и где здесь обращение к данным регистратора через точку? Нет его. Просто берётся сама ссылка из таблицы регистра, дальше связь не идёт.
20. spacecraft 07.08.22 16:43 Сейчас в теме
(19) а получение ссылки регистратора это не получение данных через регистратор? Ну проверь :)
21. FatPanzer 07.08.22 16:47 Сейчас в теме
(20) Нет, это поле самой таблицы регистра. Вот если написать Регистратор.Ссылка - тогда да, будет связь ссылки из таблицы регистра с таблицами самих регистраторов., и я об этом написал в (2).
А если писать просто Регистратор - то это просто ссылка из самой таблицы регистра, она ни с чем не связывается, она уже есть.

UPD. Иначе по твоей логике, использование любой ссылки в запросе автоматически ведёт к левому соединения с этой таблицей (владельцем ссылки). Но это же не так.
31. spacecraft 07.08.22 17:16 Сейчас в теме
(21) да. ты прав. Тут наложилось представление кода в шапке:
ТИПЗНАЧЕНИЯ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор.Ссылка) = ТИП(Документ.ПоступлениеБезналичныхДенежныхСредств)
Вот он него и подсознание и сработало.
FatPanzer; +1 Ответить
7. psa247 21 07.08.22 16:23 Сейчас в теме
(6) нет данных. Результат запроса пустой, потому что последняя строка условия не работает. Т.е. в этом регистре регистратор никогда не равен типу документа "ПоступлениеБезналичныхДенежныхСредств". А равен типу "определяемый" тип, или не правильно думаю?
8. spacecraft 07.08.22 16:24 Сейчас в теме
(7)
или не правильно думаю?

Вот это правильный ответ.
Нет в регистре данных, которые соответствовали бы отбору:
И РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ОбъектРасчетов В(&Заказы)
И ТИПЗНАЧЕНИЯ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеБезналичныхДенежныхСредств)
9. psa247 21 07.08.22 16:27 Сейчас в теме
Нет в регистре данных, которые соответствовали бы отбору - согласен.


И РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ОбъектРасчетов В(&Заказы) - оставляю только это условие - все работает
И ТИПЗНАЧЕНИЯ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.Регистратор) = ТИП(Документ.ПоступлениеБезналичныхДенежныхСредств) - если оставлять только это условие - всегда пустой результат.
11. spacecraft 07.08.22 16:28 Сейчас в теме
(9) учитывая, что через Ссылка ругается, то скорее всего тип Документ.ПоступлениеБезналичныхДенежныхСредств не включен в определяемый тип.
12. psa247 21 07.08.22 16:30 Сейчас в теме
(11) проверял
Прикрепленные файлы:
16. spacecraft 07.08.22 16:37 Сейчас в теме +1.5 $m
(12) Это Измерение а не регистратор!!!
18. psa247 21 07.08.22 16:39 Сейчас в теме
(16) Да, понял свою ошибку, спасибо
13. psa247 21 07.08.22 16:35 Сейчас в теме +3 $m
(11) Спасибо, помог разобраться. У этого регистра нет такого регистратора. Это я подзатупил )
15. FatPanzer 07.08.22 16:37 Сейчас в теме +1 $m
22. ishelper 07.08.22 16:49 Сейчас в теме
(13)
Это я подзатупил )
Это заслуживает вознаграждения, а тому, кто помог - и "спасибо" хватит! ;-)
24. FatPanzer 07.08.22 16:50 Сейчас в теме
(22) Да сейчас сам же свой ответ отметит как правильный, и успокоится.
25. psa247 21 07.08.22 16:52 Сейчас в теме
РасчетныйДокумент содержит в себе ссылку на ПоступлениеБезналичныхДенежныхСредств
Прикрепленные файлы:
26. psa247 21 07.08.22 16:53 Сейчас в теме
(24) это один из вариантов )
10. psa247 21 07.08.22 16:28 Сейчас в теме
скрин регистратора в регистре
Прикрепленные файлы:
23. psa247 21 07.08.22 16:50 Сейчас в теме
Хотя, эта строка тоже не отрабатывает

И ТИПЗНАЧЕНИЯ(РасчетыСКлиентамиПоСрокамОстаткиИОбороты.РасчетныйДокумент) = ТИП(Документ.ПоступлениеБезналичныхДенежныхСредств)
28. FatPanzer 07.08.22 16:58 Сейчас в теме
(23) Посмотри свой скрин в (10). Там нет документов поступления ДС. Там есть "Регистратор расчетов". Согласись, это несколько другой тип документа.
30. spacecraft 07.08.22 17:12 Сейчас в теме
(23) что вернет такой запрос:
ВЫБРАТЬ
	РасчетыСКлиентамиПоСрокамОстаткиИОбороты.ОбъектРасчетов КАК ОбъектРасчетов,
	РасчетыСКлиентамиПоСрокамОстаткиИОбороты.РасчетныйДокумент КАК РасчетныйДокумент
ИЗ
	РегистрНакопления.РасчетыСКлиентамиПоСрокам.ОстаткиИОбороты(, , , , ) КАК РасчетыСКлиентамиПоСрокамОстаткиИОбороты
ГДЕ
	РасчетыСКлиентамиПоСрокамОстаткиИОбороты.РасчетныйДокумент ССЫЛКА Документ.ПоступлениеБезналичныхДенежныхСредств

?
32. psa247 21 07.08.22 17:21 Сейчас в теме
(30) мой выход - это использовать основную таблицу, чтобы выдернуть реквизит. виртуальная таблица обороты с остатками не подходят. Еще раз спасибо!
33. FatPanzer 07.08.22 17:24 Сейчас в теме
(32) Я ж говорил, сам себя отметит. Да ещё и с неправильным решением.
34. psa247 21 07.08.22 17:27 Сейчас в теме
(33) другого варианта, чтобы решить мою задачу нет (простого), того, кто помог - я упомянул, себе решение не присвоил, что не так? ))
27. psa247 21 07.08.22 16:58 Сейчас в теме
Не работает
Прикрепленные файлы:
29. psa247 21 07.08.22 16:58 Сейчас в теме
определяемый тип
Прикрепленные файлы:
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот