Доступ к составному регистратору

Сделали правило для проверки языка запросов

ВЫБРАТЬ
   РегистрКакойТо.Регистратор КАК ЗачемТебеРегистраторВПолеВыборке

в случаях когда у регистра несколько регистраторов.

Предлагается правильным считать код

ВЫБРАТЬ
   ВЫРАЗИТЬ(РегистрКакойТо.Регистратор КАК Документ.ОченьВажныйДокумент) КАК ВсеТакиЗачемТебеРегистраторВПолеВыборки

Пытаемся найти описание на ИТС - ничего не находится. Никто не встречал там описание ?

На kb.1c.ru есть правило
https://kb.1c.ru/articleView.jsp?id=44#dot_after_component_type

Избегайте избыточности при создании полей составных ссылочных типов. Указывайте ровно столько возможных типов для данного поля, сколько необходимо. Не следует без необходимости использовать типы “любая ссылка” или “ссылка на любой документ” и т.п. Вместо этого следует более тщательно проанализировать прикладную логику и назначить для поля ровно те возможные типы ссылок, которые необходимы для решения задачи.

1 Симпатия

Блин, как же я забыл - Рупасов же. Спасибо !!!

https://its.1c.ru/db/v8std#content:2149184303:hdoc

А на основании чего такое правило? Какую боль пытаешься решить?

Я что-то тоже не понял зачем такое правило.
Допустим, у меня есть сумма оборота по контрагенту, я хочу увидеть по каким документам она сформировалась. Я что-то не то хочу?

@Vladislav_Moroz , в том-то и дело, что здесь не разыменование, а просто вывод составного поля в основную выборку

https://its.1c.ru/db/pubqlang/content/159/1
https://its.1c.ru/db/content/metod8dev/src/developers/scalability/standards/i8105842.htm
https://its.1c.ru/db/v8std#content:-2145782993:hdoc

это всё не то

Как ты думаешь - если ты явно не укажешь CAST_AS - какой алгоритм будет выполнятся для типизации значения. То есть как будет выглядеть типизация по умолчанию ?

я видимо недостаточно четко описал, хотя @Aleksej_Shejchenko правильно напомнил ссылку

Правильный код наличествует в статье Рупасова

Есть еще одно дополнительно правило статус “Мажор” - если тебе в выборке нужны регистраторы, значит у тебя что-то не так с метаданными (обработкой проведения) и твой регистратор не записал часть своей информации в регистр. Если тебе нужны поля регистратора - пусть регистратор и пишет их в регистры. Нечего ходить по левым соединениям и делать “выборки на пол базы”.

Автор данного правила я персонально - можете холиварить начинать, обоснование приводить не буду (я тут все таки засел за текст пособия архитектора).

Погоди, но в твоем изначальном посыле нет полей регистратора, а только сам регистратор. Он-то чем плох?

1 Симпатия

Блин… вот ты дотошный. я просто писал быстро вопрос - не указал что регистратор и дальше поле.

.Регистратор.ЧтоТо - тут упомянутый уже выше Рупасов, его то я и искал изначально. @Aleksej_Shejchenko сразу понял о чем я.

Блин… вот ты дотошный. я просто писал быстро вопрос - не указал что регистратор и дальше поле.

Нет, так не катит.
Ты изначально написал БЕЗ доп полей, что в неправильном (изначальном), что в правильном коде.
У тебя даже поле так называлось “ЗачемТебеРегистраторВПолеВыборке”, а не “ЗачемТебеРеквизитРегистратораВПолеВыборки”
Тройная ошибка что ль? Вот я именно на это и среагировал.
Если дело идет дальше и надо получать поля этих регистраторов, тогда да - косяк в проектировании или запросе.

Но мне казалось, что у вас в сонаре это правило давно есть. Ошибался?

Я сознательно не хочу ввязываться в этот холивар - хотя правило есть, просто скотство в том что наверное я его автор. Оно лежит в плоскости RecorderRRef, RecorderTRef и тех запросов которые формирует платформа при выборке ссылок на регистраторы.

@JohnyDeath я же тебе выше написал

Есть еще одно дополнительно правило статус “Мажор” - если тебе в выборке нужны регистраторы да еще и составные, значит у тебя что-то не так с метаданными (обработкой проведения) и твои регистраторы не записалИ часть своей информации в регистр.

Обычно же вы выборку по регистратору зачем делают ? Чтобы в Отчете расшифровку сделать и… потом ниже по стеку комментарий оттуда получить и отуда распарсить определённую аналитику.

Леш, если речь идет про Поле, которое надо достать из другого Составного поля, то вопросов нет. Всё правильно и надо явно указывать тип через “ВЫРАЗИТЬ КАК”.
Но если я просто хочу достать значение этого составного поля, то не вижу никаких противоречий или излишних нагрузок на сервер СУБД.
Кейс я описал выше: показать состав оборота по контрагенту

Я закончу описание правила - опубликую на Сонаре публичном, посмотришь описание.

В УНФ в платежном календаре. Я тут приемку правила делаю.

И на следующую строку будет ругаться?

Спасибо! Здесь еще, наверное, вот это будет релевантно:
Самодостаточность регистров https://its.1c.ru/db/v8std#content:2149184126:hdoc

3 Симпатий