Как в запросе проверить поле на пустое значение?

13. davay2000 8 30.01.12 14:12 Сейчас в теме
а если у меня реквизит это фильтр по СубконтоДт - у которого переменный тип?
При этом мне нужно в запросе проверить пустое СубконтоДт или содержит значение! Как?

Т.е. у меня например справочник "ОтборыПоСубконто.СубконтоДт1_Счет311" - я делаю запрос по этому справочнику и указывают в параметрах запроса
Запрос.УстановитьПараметр("СубконтоДт1_Счет311_Значение",справочники.БанковскиеСчета.НайтиПоНаименованию("Аваль"))


а в запросе пишу "выбрать когда ОтборыПоСубконто.СубконтоДт1_Счет311 есть null или ОтборыПоСубконто.СубконтоДт1_Счет311= &СубконтоДт1_Счет311_Значение"

только такой запрос в моем случае - НЕ ПОМОЖЕТ, т.к. ОтборыПоСубконто.СубконтоДт1_Счет311 значение хоть и пустое, но не есть NULL

а указать как в [6] Контрагент.Ссылка <> Значение(Справочник.Контрагенты.ПустаяСсылка) - я не могу потому что переменный тип.

У кого есть еще предложения?
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
14. davay2000 8 30.01.12 14:37 Сейчас в теме
получилось! Сделал в запросе такое условие:

ВЫБОР
КОГДА &СчетДт в (ОтборыПоСубконто.Счет)
И (ОтборыПоСубконто.Субконто1.Ссылка ЕСТЬ NULL ИЛИ ОтборыПоСубконто.Субконто1 = &СубконтоДт1)
ТОГДА ИСТИНА
ИНАЧЕ ЛОЖЬ
КОНЕЦ
Xleo777; serverstar; justaria; SIrina9; Trukit; request4t; yaroslav.artem; Night_Trap; maksa2005; Ujine1313; user591389_aska_rabota; zhivoglot; dante; svilsa; tkv44; anten22; SantiouS; Greysvandir; zannv; user843810; primara; orfos; FiZikus; Otshelnik; +24 Ответить
15. Kamikaze43 11 01.02.12 13:18 Сейчас в теме
(6),(10) +1 только так и не иначе
serverstar; +1 Ответить
16. IrinaL___ 16.08.13 12:46 Сейчас в теме
Можно и вот так :
ВЫБОР
КОГДА РасчетыСПокупателямиОстатки.Заказ.Ссылка ЕСТЬ NULL
ТОГДА "пустое значение"
ИНАЧЕ "не пустая ссылка"
КОНЕЦ КАК Поле1

тогда не нужно никаких параметров!
user1527961; tanat74; tata111; smit1c; simuljakr; svilsa; dim-1983; liamkernighan; Greysvandir; kaa_; ilya4; batyrkin; Muler_irina; veranika; +14 Ответить
17. tolyan_ekb 104 16.08.13 13:07 Сейчас в теме
(16) IrinaL___, думаете несколько лет спустя автор все еще ждет ответа?
Geophysic; Sanek32; +2 1 Ответить
18. Азбука Морзе 105 16.08.13 13:15 Сейчас в теме
(17) tolyan_ekb,
Автор только породил тему, а дальше она живет собственной жизнью. Все как у людей:)
_DaFNa_; user1527961; c300pm; idw; oleg-ts; LessSky; jack_kkm; Ingraf; user1835472; AVKonya; creatermc; abasovit; CyberMax; mrChOP93; SagittariusA; Trukit; simuljakr; invise; Merkalov; Мах; jkot@mail.ru; AlexK_2012; kild; +23 Ответить
44. davay2000 8 03.08.21 10:28 Сейчас в теме
(18) автор с удовольствием удалит тему, но к несчастью, автор не может найти кнопку удалить топик.
19. Nebiros777 5 19.02.14 15:05 Сейчас в теме
(17) tolyan_ekb,
Да и не только для автора ответы. Многие через гугля попадают на страничку и не тратят драгоценное время до сдачи проекта)))
user2081259; user1643757; baracuda; c300pm; idw; oleg-ts; luda33; xoxmaister; jack_kkm; morozoffdn; Hogyoku; AVKonya; Serg243; CyberMax; mrChOP93; SagittariusA; uchenick; freeek; invise; dvissarov5; Мах; Prad2002; LeXXeR; jkot@mail.ru; arturlix; svilsa; VladimirMelnychenko; dim-1983; КостинС; Merkalov; ivangrant; Дамир1; SmArtist; idiked; 127.0.0.0; Greysvandir; agdam_m; AlexK_2012; kild; piller97; ilya4; IvanKh; gges; botva; mazin2000; matrixst; +46 Ответить
20. Atix 28.09.14 15:18 Сейчас в теме
Если вы пытаетесь проверить неогранниченное текстовое поле на "заполненность" в запросе, это можно сделать через выражение и временную таблицу, например так:
ВЫБРАТЬ
	Контрагенты.Код,
	ВЫРАЗИТЬ(Контрагенты.НеограниченноеПоле КАК СТРОКА(100)) КАК НеограниченноеПоле 
ПОМЕСТИТЬ ВЫБОРКА
ИЗ
	Справочник.Контрагенты КАК Контрагенты
ГДЕ
	Контрагенты.ПометкаУдаления = ЛОЖЬ
	И Контрагенты.ЭтоГруппа = ЛОЖЬ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫБОРКА.Код,
	ВЫБОРКА.НеограниченноеПоле
ИЗ
	ВЫБОРКА КАК ВЫБОРКА
ГДЕ
	ВЫБОРКА.НеограниченноеПоле <> ""
Показать
resonance; olezhe; Ogonek_ir@; +3 Ответить
45. crash-16 28.09.21 13:27 Сейчас в теме
(20) А зачем временная таблица? Сразу в условиях прописать:

ВЫБРАТЬ
    Контрагенты.Код,
ИЗ
    Справочник.Контрагенты КАК Контрагенты
ГДЕ
    Контрагенты.ПометкаУдаления = ЛОЖЬ
    И Контрагенты.ЭтоГруппа = ЛОЖЬ
    И ВЫРАЗИТЬ(Контрагенты.НеограниченноеПоле КАК СТРОКА(100)) <> ""

Показать
46. resonance 81 28.10.22 11:15 Сейчас в теме
21. kitaevay 37 29.10.15 19:52 Сейчас в теме
Может кому то будет интересно - в запросе к полю, которое может хранить несколько разных Типов значения и которое не заполнено вернётся Неопределено.

Т.е. для таких полей достаточно сравнить с Неопределено, пример:
ВЫБРАТЬ РАЗЛИЧНЫЕ
	ИсполнителиЗадач.РольИсполнителя КАК РольИсполнителя
ИЗ
	РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач
ГДЕ
	ИсполнителиЗадач.ДополнительныйОбъектАдресации = НЕОПРЕДЕЛЕНО
rugubara; user655369_uhova_natalya; ite4no; Oldsad; Insanity; mrChOP93; SagittariusA; SotNick; Svetlanka_sv; nlvhome; abasovit; Alexion; dante; PavelTihonov; link_l; Night_Trap; rav_; k992007; Alex_1066; Yan_Malyakov; svilsa; mirrr; Polina; user1186103; mss_sarvarbek; idiked; distorshion; BrainWashed; Greysvandir; Leits; igee12; user631363_a.novikov; belas; Vovan58; svv1979; item; ВладимирVolodya; amatoravg; dikd; Nimfetamin; bio.ejiki; MonteCriZto; gavr178; +43 Ответить
23. Nimfetamin 28.06.16 20:55 Сейчас в теме
(21) kitaevay, Спасибо огромное.
38. unmensch 24 07.08.17 11:48 Сейчас в теме
(21) Это поле может быть заполнено пустой ссылкой одного из допустимых объектов. Условие некорректно.
Aspire1C; BushNik; COMPER; taasha25; user1214065; DmitrySinichnikov; Мах; Alex_1066; +8 Ответить
41. agdam_m 6 24.10.18 16:06 Сейчас в теме
(21)
= НЕОПРЕДЕЛЕНО

Если поле составного типа то тип может быть указан, а значение не заполнено, для того чтобы обрабатывать эту ситуацию нужно писать:
ВЫБРАТЬ РАЗЛИЧНЫЕ
    ИсполнителиЗадач.РольИсполнителя КАК РольИсполнителя
ИЗ
    РегистрСведений.ИсполнителиЗадач КАК ИсполнителиЗадач
ГДЕ
    ИсполнителиЗадач.ДополнительныйОбъектАдресации = НЕОПРЕДЕЛЕНО
    ИЛИ ИсполнителиЗадач.ДополнительныйОбъектАдресации.Ссылка ЕСТЬ NULL
Показать
SagittariusA; uchenick; Lllypuk; levante90; Мах; Night_Trap; Dinchic; Alex_1066; axsebur; 149; svilsa; Vyacheslav_Kochnev; ivangrant; +13 Ответить
47. Letos 267 16.06.23 18:13 Сейчас в теме
(21) Это очень плохо вариант.

1. Если это составной тип, то запрос будет выполняться для каждого типа.
2. НЕОПРЕДЕЛЕНО - это тип. И 1С будет сравнивать не значение, а пытаться определить тип и с типом сравнивать.
48. SlavaKron 16.06.23 19:56 Сейчас в теме
(47)
1. Не будет.
2. НЕОПРЕДЕЛЕНО - это значение.
49. spacecraft 16.06.23 20:01 Сейчас в теме
(47)
НЕОПРЕДЕЛЕНО - это тип. И 1С будет сравнивать не значение, а пытаться определить тип и с типом сравнивать.

1С считает иначе:
https://its.1c.ru/db/metod8dev/content/2614/hdoc
22. Alexey26 2 07.12.15 16:22 Сейчас в теме
24. Team leader 12 23.05.17 18:15 Сейчас в теме
ВЫБРАТЬ
	ОбщепитРецептураТовары.Номенклатура КАК Номенклатура,
	ОбщепитРецептураТовары.Номенклатура.Код КАК Код,
	ОбщепитРецептураТовары.Ссылка КАК Ссылка
ИЗ
	Документ.ОбщепитРецептура.Товары КАК ОбщепитРецептураТовары
ГДЕ
	ВЫБОР
			КОГДА ОбщепитРецептураТовары.Номенклатура.Ссылка ЕСТЬ NULL
				ТОГДА ЛОЖЬ
			ИНАЧЕ ИСТИНА
		КОНЕЦ
Показать
Светлый ум; +1 Ответить
43. KazanKokos 10 02.08.21 17:19 Сейчас в теме
(24)
ВЫБРАТЬ
    ОбщепитРецептураТовары.Номенклатура КАК Номенклатура,
    ОбщепитРецептураТовары.Номенклатура.Код КАК Код,
    ОбщепитРецептураТовары.Ссылка КАК Ссылка
ИЗ
    Документ.ОбщепитРецептура.Товары КАК ОбщепитРецептураТовары
ГДЕ
   НЕ ОбщепитРецептураТовары.Номенклатура.Ссылка ЕСТЬ NULL
Показать


Не одно и тоже?
25. Nickon 21.08.09 11:24 Сейчас в теме
Бухи убирают из документов "ПоступлениеТоваровУслуг" счет расчета по авансам 60.02. Как в запросе проверить поле СчетУчетаРасчетаПоАвансам на пустое значение?
26. Душелов 4017 21.08.09 11:26 Сейчас в теме
ЖКК:

Глобальный контекст
ЗначениеЗаполнено (ValueIsFilled)

Синтаксис:
ЗначениеЗаполнено(<Значение>)

Параметры:
<Значение> (обязательный)
Тип: Произвольный. Значение для сравнения.

Возвращаемое значение:
Тип: Булево. Для значений типа Булево всегда возвращается Истина.
27. Nickon 21.08.09 11:31 Сейчас в теме
28. Душелов 4017 21.08.09 11:34 Сейчас в теме
Не заметил про запрос :)

"ЕСТЬ NULL"
29. Nickon 21.08.09 11:47 Сейчас в теме
30. Ish_2 1104 21.08.09 11:49 Сейчас в теме
А также использование литерала функционального типа ЗНАЧЕНИЕ и литерала ПустаяСсылка.
Например, возможно условие в запросе

Контрагент.Ссылка <> Значение(Справочник.Контрагенты.ПустаяСсылка)

исключающее в выходной таблице запроса записи с пустой ссылкой справочника Контрагенты.
anchar007; dav1984; idiked; freeek; user631363_a.novikov; izidakg; Мах; Sanek32; adhocprog; AAce; VitalyKepov; sd_75; bio.ejiki; myoker; Andreyyy; elenko1; klinval; svilsa; +18 Ответить
31. redgad 80 24.08.09 08:05 Сейчас в теме
Можно так:
СчетАвансов.Код = NULL

В конкретном случае СчетАвансов никогда не будет равен NULL
32. anig99 2843 24.08.09 08:13 Сейчас в теме
(7) - не покатит. NULL=NULL даёт ложь.
33. redgad 80 24.08.09 15:13 Сейчас в теме
Да, действительно надо использовать есть null
34. Ish_2 1104 24.08.09 16:44 Сейчас в теме
Да простят меня (4),(8),(9) и сам автор , но если в названии темы употреблено выражение "пустое значение" , то
правильным ответом является только (6).
NULL - это не пустое значение , это NULL.
35. anig99 2843 24.08.09 18:19 Сейчас в теме
(10) в контексте 1го поста лучше проверять и на (6) и на NULL... бухи разные бывают...
36. Nickon 26.08.09 16:42 Сейчас в теме
Вариант (6) срабатывает тоже, если указывать не Контрагент.Ссылка а просто Контрагент. А вот для выражения ЕСТЬ NULL необходимо указывать ссылочное значение.
37. KulSer 25.06.17 18:44 Сейчас в теме
Только что проверил на 1С:Предприятие 8.3 (8.3.10.2299), УПП 1.3 обычное (неуправляемые формы) приложение.
Для ссылок на один-единственный тип данных работает ЕСТЬ NULL.
Для ссылок, у которых составной тип данных, работает Неопределено.
Вот как всё запутано :(
kild; user631363_a.novikov; KAV2; burni4; IvanovAV; evgeniy83; +6 Ответить
39. Nigelist 23.10.17 08:58 Сейчас в теме
Есть запрос:
Запрос = Новый Запрос;
Запрос.Текст =
	"ВЫБРАТЬ
	|	ЗначенияСвойствОбъектов.Значение
	|ИЗ
	|	РегистрСведений.ЗначенияСвойствОбъектов КАК ЗначенияСвойствОбъектов
	|ГДЕ
	|	ЗначенияСвойствОбъектов.Объект = &Объект
	|	И ЗначенияСвойствОбъектов.Свойство = &Свойство";
ЗапросДанных.УстановитьПараметр("Объект",Справочники.Номенклатура)
ЗапросДанных.УстановитьПараметр("Свойство",ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию(" Температурный режим"));
Показать

В отдельных случаях, свойство не заполнено. Можно ли в запросе, сделать чтобы возвращался определенный текст, если свойство не заполнено?
40. GetNight 46 04.01.18 16:43 Сейчас в теме
(39) можно так:

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ ПЕРВЫЕ 1 Значение
    |ИЗ
    |    (ВЫБРАТЬ Значение
    |         ИЗ РегистрСведений.ЗначенияСвойствОбъектов
    |         ГДЕ Объект = &Объект
    |         И Свойство = &Свойство
    |     ОБЪЕДИНИТЬ ВСЕ
    |     ВЫБРАТЬ &ТЕКСТ) КАК ЗначенияСвойствОбъектов";
ЗапросДанных.УстановитьПараметр("Текст", "не задан");
ЗапросДанных.УстановитьПараметр("Объект", Справочники.Номенклатура);
ЗапросДанных.УстановитьПараметр("Свойство", ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("Температурный режим"));
Показать
Nigelist; +1 Ответить
42. eksdak 06.02.20 11:24 Сейчас в теме
Если составной тип данных в данном реквизите, для начала необходимо использовать: сначала выразить а потому уже проверять на соответствие Null {ВЫРАЗИТЬ( Значение КАК <тип>) есть NULL}
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот