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