Есть у меня запрос. Фактически таблица у которой одно поле NULL. Я соединяю таблицу с точно такой же по двум полям и хочу получить результирующую с таким же количеством строк. Так вот по полю, в котором NULL равенство не получается, то есть выражение NULL = NULL всегда дает Ложь. Пример ниже.
Скажите, пожалуйста, это всегда так было или у меня у платформы какие-то особенности? Как-то странно, что раньше я такого не замечал. Релиз 1С:Предприятие 8.3 (8.3.23.1782)
Результат работы: таблица из двух строк.
Скажите, пожалуйста, это всегда так было или у меня у платформы какие-то особенности? Как-то странно, что раньше я такого не замечал. Релиз 1С:Предприятие 8.3 (8.3.23.1782)
ВЫБРАТЬ ПЕРВЫЕ 1
"Й" КАК Номенклатура,
NULL КАК ВидЦены
ПОМЕСТИТЬ Таб1
ИЗ Справочник.Номенклатура КАК НН
;
ВЫБРАТЬ
ЕСТЬNULL(ЦН.Номенклатура, ЦС.Номенклатура) КАК Номенклатура,
ЕСТЬNULL(ЦН.ВидЦены, ЦС.ВидЦены) КАК ВидЦены,
ЦН.Номенклатура КАК Номенклатура1,
ЦН.ВидЦены КАК ВидЦены1,
ЦС.Номенклатура КАК Номенклатура2,
ЦС.ВидЦены КАК ВидЦены2
ИЗ Таб1 КАК ЦН
ПОЛНОЕ СОЕДИНЕНИЕ Таб1 КАК ЦС
ПО ЦН.Номенклатура = ЦС.Номенклатура
И ЦН.ВидЦены = ЦС.ВидЦены
ПоказатьРезультат работы: таблица из двух строк.
По теме из базы знаний
- Всякие полезности
- Прямой обмен с БД интернет-магазина на Joomla (JoomShopping, VirtueMart)
- (beta) Обмен 1С с интернет-магазином OpenCart
- Интеграция 1С УТ 11.2 и Битрикс. Настройка выгрузки старой цены для интернет-магазина
- Примеры вызова в 1С методов API до реестров открытой части Электронного кабинета налогоплательщика (Украина)
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(2) Спасибо за ответ. Но как же тогда соединения таблиц? Получается, что на пустом месте в выходной таблице формируется задвоение строк?
Как этого избежать? Конструкцией ЕСТЬNULL()? Получается, надо предусматривать заранее, что значения может не быть и заменять NULL на пустую строку или пустую ссылку?
Может, есть какой-то более простой способ соединить две таблицы с Null?
Как этого избежать? Конструкцией ЕСТЬNULL()? Получается, надо предусматривать заранее, что значения может не быть и заменять NULL на пустую строку или пустую ссылку?
Может, есть какой-то более простой способ соединить две таблицы с Null?
(3)
Да
Можно попробовать в условие соединения добавить. Типо такого:
А = Б
ИЛИ А Есть Null
И Б Есть Null
Как этого избежать? Конструкцией ЕСТЬNULL()? Получается, надо предусматривать заранее, что значения может не быть и заменять NULL на пустую строку или пустую ссылку?
Да
Может, есть какой-то более простой способ соединить две таблицы с Null?
Можно попробовать в условие соединения добавить. Типо такого:
А = Б
ИЛИ А Есть Null
И Б Есть Null
(7) Если упрощать тот запрос, который я использую, до одного проблемного места, то основной алгоритм таков: выбираем номенклатуру из справочника по условиям, соединяем левым соединением выбранную номенклатуру с видами цен и ценами из регистра ЦеныНоменклатуры на одну дату и на другую дату. Сравниваем цены на разные даты.
И всё работает хорошо, но вдруг попадается позиция номенклатуры, которой никогда не задавалась цена: в регистре её нет и на разные даты вместо вида цен NULL. Получаем в результирующей таблице задвоение. Тут, в целом, доступно объяснили, что так и должно быть. Спасибо вам за желание разобраться и желание помочь.
И всё работает хорошо, но вдруг попадается позиция номенклатуры, которой никогда не задавалась цена: в регистре её нет и на разные даты вместо вида цен NULL. Получаем в результирующей таблице задвоение. Тут, в целом, доступно объяснили, что так и должно быть. Спасибо вам за желание разобраться и желание помочь.
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот