Переопределение оператора сравнения

Язык запросов DaJet переопределяет поведение оператора сравнения на равенство для составных ссылочных типов данных. Это необходимо для того, чтобы учесть особенность хранения значений составных типов данных на уровне СУБД.

Кроме этого, подобные трансформации кода необходимы для того, чтобы правильно "попадать" в индексы СУБД для построения оптимальных планов выполнения запросов.

Система типов данных языка запросов

Официальная документация 1С:Предприятие 8

Пример трансформации сравнения "ссылка = параметр":

-- Код на языке запросов DaJet

DECLARE @entity Документ.ЗаказКлиента = '8d40e09c-935c-8ecc-11ed-71076402f3b2';

SELECT Регистратор
  FROM РегистрНакопления.ОстаткиПоЗаказам
 WHERE Регистратор = @entity

-- Код запроса для MS SQL Server

SELECT _RecorderTRef AS Регистратор_TRef,
       _RecorderRRef AS Регистратор_RRef
  FROM _AccumRg1012
 WHERE (_RecorderTRef = 0x00000354
   AND  _RecorderRRef = @entity)

Пример трансформации сравнения "ссылка = ссылка":

-- Код на языке запросов DaJet

    SELECT Регистратор
      FROM РегистрНакопления.ОстаткиПоЗаказам AS Остатки
INNER JOIN Документ.ЗаказКлиента AS Заказ
        ON Остатки.Регистратор = Заказ.Ссылка

-- Код запроса для MS SQL Server

    SELECT _RecorderTRef AS Регистратор_TRef,
           _RecorderRRef AS Регистратор_RRef
      FROM _AccumRg1012 AS Остатки
INNER JOIN _Document852 AS Заказ
        ON (Остатки._RecorderTRef = 0x00000354
       AND  Остатки._RecorderRRef = Заказ._IDRRef)