Меню


Курсы СтимулСправочникПолезные материалы1С:Предприятие 8.2РазработчикамРеализация обработки данных

1С:Предприятие 8.2 /
Разработчикам /
Реализация обработки данных

Оглавление

Ограничение на использование конструкции "ОБЪЕДИНИТЬ ВСЕ" в запросах

См. также

 

В запросах не следует выполнять соединений с помощью конструкции ОБЪЕДИНИТЬ ВСЕ строковых полей ограниченной длины с полями неограниченной длины, если результат объединяющего запроса упорядочивается с помощью конструкции УПОРЯДОЧИТЬ ПО.

Данное требование продиктовано особенностью выполнения подобных запросов на СУБД Microsoft SQL Server 2000 SP4 и необходимостью переносимости прикладных решений на эту СУБД.

Например, неправильно:

ВЫБРАТЬ
Т1.Код КАК Поле1,
Т1.Наименование КАК Поле2
ИЗ
Справочник.Справочник1 КАК Т1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т2.Код,
Т2.РеквизитНеограниченнойДлины
ИЗ
Справочник.Справочник2 КАК Т2
УПОРЯДОЧИТЬ ПО
Поле1

Примечание: упорядочивание по Поле2 невозможно, т.к. это поле неограниченной длины, и оно не может участвовать в сравнениях. Однако, достаточно наличия упорядочивания по любому другому полю.

Правильно:

1) отказаться от УПОРЯДОЧИТЬ ПО (а сортировку выполнить затем средствами встроенного языка - ТаблицаЗначений.Сортировать)

ВЫБРАТЬ
Т1.Код КАК Поле1,
Т1.Наименование КАК Поле2
ИЗ
Справочник.Справочник1 КАК Т1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т2.Код,
Т2.РеквизитНеограниченнойДлины
ИЗ
Справочник.Справочник2 КАК Т2

2) использовать функцию ПОДСТРОКА (в случае вывода в список УПОРЯДОЧИТЬ ПО добавляется плат формо й автоматически к запросу)

 

ВЫБРАТЬ
Т1.Код КАК Поле1,
Т1.Наименование КАК Поле2
ИЗ
Справочник.Справочник1 КАК Т1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ
Т2.Код,
ПОДСТРОКА(Т2.РеквизитНеограниченнойДлины, 1, 1000)
ИЗ
Справочник.Справочник2 КАК Т2
УПОРЯДОЧИТЬ ПО
Поле1

См. также


Подписка на новости RSS

Мы на Facebook