1С: Проверка на пустое значение в запросе

На самом деле это не так просто сделать. Есть несколько вариантов, для разных типов значений:

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

Тут в принципе можно подсмотреть все варианты

Определение длины строки в запросе 1С

Как извесно боль запросов 1С, в невозможности «штатно» определить длину строки в запросе. Вот один из обходных «велосипедов»:




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

1
2
3
4
5
6
7
8
9
10
11
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура.Ссылка,
| Номенклатура.Наименование
|ИЗ
| Справочник.Товары КАК Номенклатура
|ГДЕ
| Номенклатура.Наименование ПОДОБНО &пар";
Запрос.УстановитьПараметр("пар","%бла-бла%");