Имя: Пароль:
1C
1С v8
Обращение через точку в запросе
, , ,
0 slavawashere
 
21.01.21
12:18
1. это смертный грех 38% (3)
2. это не смертный грех, но... 38% (3)
3. всегда так делаю 25% (2)
Всего мнений: 8

Во всех статьях про запросы 1С  пишут про "смертный грех" - обращение к данным через точку, которое порождает вложенный запрос и влечет замедление запроса.

Но я не совсем понимаю до конца про что это:  Вот есть у нас регистр "ФактическоеРабочееВремяСотрудников", а там есть измерение "Сотрудник" с типом "Справочник.ФизическиеЛица", а у этого справочника есть реквизит "Магазин" - чтобы понимать где  работает этот сотрудник.

И вот я пишу запрос к этому регистру, пытаясь выяснить всех работающих сотрудников определенного магазина (ну такая задача - надо именно через этот регистр, с учетом еще некоторых сведений из этого регистра, которые я опустил в запросе для простоты)

ВЫБРАТЬ
    ФактическоеРабочееВремяСотрудников.Сотрудник КАК Сотрудник
ИЗ
    РегистрНакопления.ФактическоеРабочееВремяСотрудников КАК ФактическоеРабочееВремяСотрудников
ГДЕ

    ФактическоеРабочееВремяСотрудников.Сотрудник.Магазин = &Магазин

Я тут совершил этот грех или нет?  И если да, то как это исправить?  Как наложить такое условие не обращаясь через две точки?  Делать сначала запрос к справочнику Физ-лица, выбирать оттуда сотрудников определенного магазина и потом в запросе к регистру  выбирать сотрудников только из полученного ранее списка?  А не будет ли это дольше в конечном итоге?
47 fisher
 
21.01.21
16:25
Грех только если через поле составного типа. А так - какая альтернатива? Явное соединение? И какой смысл при наличии более удобного синтаксиса?

всегда так делаю
48 Temai
 
21.01.21
16:26
Для кого же придумали это:
Выразить(Регистратор КАК Документ.Поступление).Склад

всегда так делаю