Задача такова:
Получить документы, которые НЕ интегрированы с 1С ДО. Соответственно мне нужно получить в запросе документы и исключить из их списка те, которые присутствуют в Регистре сведений "ОбъектыИнтегрированныеС1СДокументооборотом".
Я знаю два способа это сделать.
Первый:
ВЫБРАТЬ
ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ГДЕ
НЕ ПоступлениеТоваровУслуг.Ссылка В
(ВЫБРАТЬ
ОбъектыИнтегрированныеС1СДокументооборотом.Объект
ИЗ
РегистрСведений.ОбъектыИнтегрированныеС1СДокументооборотом КАК ОбъектыИнтегрированныеС1СДокументооборотом)
Второй:
ВЫБРАТЬ
ПоступлениеТоваровУслуг.Ссылка КАК Ссылка
ИЗ
Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ОбъектыИнтегрированныеС1СДокументооборотом КАК ОбъектыИнтегрированныеС1СДокументооборотом
ПО ПоступлениеТоваровУслуг.Ссылка = ОбъектыИнтегрированныеС1СДокументооборотом.Объект
ГДЕ
ОбъектыИнтегрированныеС1СДокументооборотом.Объект ЕСТЬ NULL
Нет ли варианта, работающего быстрее, например Связью?
(1) То есть лучше этого ничего не предусмотрено? Я кстати тестил в консоли оба этих варианта на большом объеме данных, и вариант с левым соединением и ЕСТЬNULL отрабатывает в среднем чуть медленнее, так что из этих двух я бы скорее выбрал первый.
(3) С появлением большого кол-ва записей в РС ОбъектыИнтегрированныеС1СДокументооборотом есть риск что первый запрос начнет падать от нехватки памяти
Ну или тормозить от свопа
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший