Не работает порядок в запросе 1с
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоОпределеннымПолям ()
// Выборка материалов, упорядоченных сперва по возрастанию срока использования,
// а потом по убыванию веса
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Наименование,
| СрокИспользования,
| Вес
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| СрокИспользования ВОЗР,
| Вес УБЫВ" );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоИерархии ()
// Выборка контрагентов в порядке их следования в иерархии
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Наименование
|ИЗ
| Справочник.Контрагенты КАК Производитель
|УПОРЯДОЧИТЬ ПО
| Наименование Иерархия" );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоВыражению ()
// Выборка материалов, упорядоченных сперва по убыванию максимальной фасовке и плотности вместе
Запрос = Новый Запрос ( "ВЫБРАТЬ
| Наименование,
| Фасовка,
| Плотность
|ИЗ
| Справочник.Материалы
|УПОРЯДОЧИТЬ ПО
| (Фасовка + Плотность) УБЫВ" );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура УпорядочиваниеРезультатаЗапросаПоАгрегатнойФункцииГруппировки ()
// Выборка материалов с минимальным весом и группировкой по сроку использования
// Запрос отсортируем по минимальному весу
Запрос = Новый Запрос ( "ВЫБРАТЬ
| СрокИспользования,
| МИНИМУМ(Вес)
|ИЗ
| Справочник.Материалы
|СГРУППИРОВАТЬ ПО
| СрокИспользования
|УПОРЯДОЧИТЬ ПО
| МИНИМУМ(Вес) ВОЗР" );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
&НаСервере
Процедура АвтоупорядочиваниеРезультатаЗапроса ()
// Сортировка по полю Ссылка и использование ключевого слова АВТОУПОРЯДОЧИВАНИЕ. При этом
// поле Ссылка в секции УПОРЯДОЧИТЬ ПО будет автоматически изменена на дату документа.
Запрос = Новый Запрос ( "ВЫБРАТЬ
| ПоступлениеМатериалов.Ссылка
|ИЗ
| Документ.ПоступлениеМатериалов КАК ПоступлениеМатериалов
|УПОРЯДОЧИТЬ ПО
| ПоступлениеМатериалов.Ссылка
|АВТОУПОРЯДОЧИВАНИЕ" );
РезультатЗапроса = Запрос . Выполнить (); Записи = РезультатЗапроса . Выбрать ();
Пока Записи . Следующий () Цикл
// Обход результата запроса по каждой записи в полученной выборке
КонецЦикла;
Вот есть у меня запрос:
Vofka --> VofkaВообще странно. Но раз такое дело, можно задать порядок явно:
RinLis --> RinLisЕсли я правильно понял, нет ни упорядочивания, ни автоупорядочивания. Но оно все равно происходит. Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". Agapov_Stas --> Agapov_Stas
Нет - не видно как он упорядочивает - может он по убыванию упорядочивает . Petre --> Petre
Упорядочивание в запросе не определено.
Вобщем-то все правильно, сортировка по умолчанию тут идет по алфавиту.
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". RinLis --> RinLis
Вобщем-то все правильно, сортировка по умолчанию тут идет по алфавиту.
Ну нельзя же указать УПОРЯДОЧИТЬ ПО "Произвольно" или "Как я хочу". Там только по убыванию или возрастанию.
Если я правильно понял, нет ни упорядочивания, ни автоупорядочивания. Но оно все равно происходит. Petre --> Petre- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". sava1 --> sava1
Неявная сортировка происходит в режиме "без дубликатов". В данном примере достаточно добавить ключевое слово "ВСЕ". Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". alex040269 --> alex040269
Неявная сортировка происходит в режиме "без дубликатов". В данном примере достаточно добавить ключевое слово "ВСЕ".
Ключевое слово ВСЕ здесь необходимо, потому что иначе 1С (или SQL Сервер) будет искать дубликаты - лишняя нагрузка.
УПОРЯДОЧИТЬ нужно для упорядочивания, иначе это дело случая. Сегодня 8 так считает в файловом варианте, завтра по другому в клиент-сервере,
после завтра по третьему, потому что сменили СКЛ сервер или еще чего нибудь.
А если стоит УПОРЯДОЧИТЬ - то это железно в таком порядке и не иначе.
ЗиУП Agapov_Stas --> Agapov_Stas
но все таки у Vofka есть слова
и то что подсказал Vofka это "бубен"
И что же тогда делать? Его "бубен" работает, а Вы свой не "бубен" даже не предложили. Vofka --> Vofka
Ну и не забывайте слова alex040269. На SQL такое же поведение упорядочивания не гарантируется. Допрацьовую:
- "Бухгалтерія для України 2.1";
- "Альфа-Авто: Автосалон+Автосервіс+Автозапчастини, українська версія". alex040269 --> alex040269
То что сказал Vofka, это и есть упорядочивание. SQL не гарантирует никакого порядка, если нет кл. слова УПОРЯДОЧИТЬ. если вам нужно как есть. это и есть упорядочивание. почитайте стандарт СКЛ или поверьте на слово.
ЗЫ
Порядок данных в базе это тоже определенный ПОРЯДОК и СКЛ никак не гарантирует что данные будут выводиться в том порялке, в котором они записаны в базе.
Просто с поиском дубликатов получился один порядок, а без поиска - другой. СКЛ вывел данные как есть, т.к. нет слова УПОРЯДОЧИТЬ.
Никогда не бойся делать то, что не умеешь, помни - Ноев ковчег был построен любителем, профессионалы построили Титаник.ЗиУП RinLis --> RinLis
Читайте также: