Рубрики
1С: Предприятие 8.х Запросы

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

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

Согласно рекомендациям 1С следует применять

ВЫРАЗИТЬ(Комментарий КАК Строка(200))

вместо

ПОДСТРОКА(Комментарий, 1,200)

кроме того, это продиктовано тем, что на СУБД PostgreSQL запрос будет работать крайне медленно.

Еще одним важным данным будет то, что строка более 1024 символа АВТОМАТИЧЕСКИ будет считаться платформой 1С строкой НЕОГРАНИЧЕННОЙ ДЛИНЫ. И код необходимо строить с учетом этого данного.

Сравнение же строк в операторе ЛЕВОЕ СОЕДИНЕНИЕ или в операторе ГДЕ следует производить с учетом того, что строка при использовании оператора приведения типа ВЫРАЗИТЬ(поле КАК СТРОКА(200)) строка будет ДОПОЛНЕНА справа до указанной длины ПРОБЕЛАМИ

Вот пример запроса содержащий приведения типов и соединения таблиц:

ВЫБРАТЬ
	ВЫРАЗИТЬ(спр.Комментарий КАК СТРОКА(200)) КАК ПодстрокаСтр,
	спр1.Комментарий
ИЗ
	Справочник.Номенклатура КАК спр
		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК спр1
		ПО ((ВЫРАЗИТЬ(спр.Комментарий КАК СТРОКА(200))) = (ВЫРАЗИТЬ(спр1.Комментарий КАК СТРОКА(200))))
ГДЕ
	(ВЫРАЗИТЬ(спр.Комментарий КАК СТРОКА(200))) = ""

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.