Рубрики
Ошибки в платформе 1С

Некорректное сравнение в запросе 1С

Этой статьей начинаю описание ошибок, выявленных в 1С в процессе работы. Ошибки странные, если не сказать больше.

Рабочая система: 1С 8.3.16.1063 + MSSQL 2012.

Ошибка в обработке условия в запросе.

Проблемный запрос:

ВЫБРАТЬ
СпрНоменклатура.Ссылка КАК Номенклатура,
РегистрПриоритет.Приоритет КАК Приоритет
ПОМЕСТИТЬ ВТ_Номенклатура 
ИЗ Справочник.Номенклатура КАК СпрНоменклатура 
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПриоритетыТоваров.СрезПоследних(&ДатаОкончания, ) КАК РегистрПриоритет
ПО (РегистрПриоритет.Номенклатура = СпрНоменклатура.Ссылка) И (ВЫБОР КОГДА РегистрПриоритет.ДатаОкончания = ДАТАВРЕМЯ(1, 1, 1) ТОГДА ИСТИНА ИНАЧЕ РегистрПриоритет.ДатаОкончания >= &ДатаОкончания КОНЕЦ) 
;
ВЫБРАТЬ
ВТ_Номенклатура.Номенклатура КАК Номенклатура,
ВТ_Номенклатура.Приоритет КАК Приоритет
ИЗ ВТ_Номенклатура КАК ВТ_Номенклатура
ГДЕ
ВТ_Номенклатура.Приоритет <> Значение(Перечисление.ВидыПриоритетов.Супер)

При выполнении этого запроса получается такая штука:

Ожидание: получить все записи, из справочника Номенклатура, у которых установлен приоритет, не равный значению «Супер» (в общем — записи из временной таблицы ВТ_Номенклатура, у которых приоритет равен пустой ссылке, NULL или любому значению кроме «Супер»).

Реальность: Получаем только те записи, у которых во временной таблице ВТ_Номенклатура поле «Приоритет» оказывается заполнено, т.е. значения NULL не попадают в итоговую таблицу, что очень странно, т.к. они не равны значению «Супер».

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

0 0 голоса
Article Rating
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x