Имя: Пароль:
1C
1С v8
Рандомная сортировка
, ,
0 impulse9
 
18.04.13
10:20
Можно ли в запросе сделать рандомную сортировку результатов? Т.е. которая каждый раз будет выдавать другую последовательность при одном и том же источнике?
И не спрашивайте, зачем мне это...
1 skunk
 
18.04.13
10:21
нет
2 vicof
 
18.04.13
10:22
можно
3 ДенисЧ
 
18.04.13
10:22
рандомная сортировка... Оригинально...
Сортировка - по определению упорядочивание, никакого рандома...
4 Wobland
 
18.04.13
10:22
(3) упорядочивание по случайно генерируемому ключу?
5 Wobland
 
18.04.13
10:22
(4) *сгенерированному
6 andreymongol82
 
18.04.13
10:22
можно, только слово "сортировка" будет лишняя
7 impulse9
 
18.04.13
10:23
(4) спасибо за наводку )
8 Wobland
 
18.04.13
10:24
Функция ПолучитьСлучайнуюНоменклатуру(Исключаемые=0) Экспорт
   ГСЧ=Новый ГенераторСлучайныхЧисел;
   Запрос=Новый Запрос;
   Запрос.Текст=
   "ВЫБРАТЬ
   |    Номенклатура.Ссылка
   |ИЗ
   |    Справочник.Номенклатура КАК Номенклатура
   |ГДЕ
   |    (НЕ Номенклатура.Ссылка В (&Исключение) ИЛИ &Исключение=0)
   |    И НЕ Номенклатура.ПометкаУдаления";
   Запрос.УстановитьПараметр("Исключение", Исключаемые);
   Результат=Запрос.Выполнить().Выгрузить();
   
   Если Результат.Количество()=0 Тогда
       Возврат Справочники.Номенклатура.ПустаяСсылка();
   Иначе
       Возврат Результат[ГСЧ.СлучайноеЧисло(0, Результат.Количество()-1)].Ссылка;
   КонецЕсли;
КонецФункции
9 andreymongol82
 
18.04.13
10:24
это раз.СлучайноеЧисло(<НижнийДиапазон>, <ВерхнийДиапазон>)
это два. прицепилять новый гуид
10 Defender aka LINN
 
18.04.13
10:32
(0) Порядок записей без конструкции УПОРЯДОЧИТЬ в запросе тебе и так никто не гарантирует
11 impulse9
 
18.04.13
10:37
ГСЧ=Новый ГенераторСлучайныхЧисел;
   Запрос = Новый Запрос;
   Запрос.Текст ="ВЫБРАТЬ
   |    ХозрасчетныйОстатки.Счет,
   |    ХозрасчетныйОстатки.Субконто1,
   |    ХозрасчетныйОстатки.КоличествоОстаток,
   |    ХозрасчетныйОстатки.СуммаОстаток
   |ИЗ
   |    РегистрБухгалтерии.Хозрасчетный.Остатки(&КонПериода, Счет = &Счет, , ) КАК ХозрасчетныйОстатки";
   
   
   
   //Таблица = NewObject("ТаблицаЗначений");
   Таблица = Запрос.Выполнить().Выгрузить();
   
   Таблица.Колонки.Добавить("Рандом");
   Таблица.ЗаполнитьЗначения(ГСЧ.СлучайноеЧисло(),"Рандом");
   Таблица.Сортировать("Рандом Возр");
12 Wobland
 
18.04.13
10:39
(11) хехе, сейчас ты удивишься
13 tdm
 
18.04.13
10:39
(11) ЗаполнитьЗначения() - заполнит всю колонку одним числом)))) смысл по нему сортировать ?)
14 impulse9
 
18.04.13
10:41
Ну тогда конечно циклом можно заполнить... но циклом как-то не по-пацански чтоли
15 cathode
 
18.04.13
10:51
(11)

int getRandomNumber()
{
   return 4; // chosen by fair dice roll
             // guaranteed to be random.
}

Типа, случайное число: я сам лично кубик бросил
:)
16 Infsams654
 
18.04.13
10:59
РебятаЮ в не въехали. (0) просит отсортировать результат случайным образом.
1-е, что приходит на ум, создать в ТЗ результата поле, заполнить в цикле рэндомом, затем отсортировать
17 impulse9
 
18.04.13
11:08
(16) в цикле я уже сделал, хочется более грамотного решения, прямо в запросе....
18 Wobland
 
18.04.13
11:09
(17) передай в запрос таблицу, заполненную мусором. будет в запросе
19 1Сергей
 
18.04.13
11:11
А вот в MS SQL есть функция случайного числа CRYPT_GEN_RANDOM ( length [ , seed ] )
:)
20 Infsams654
 
18.04.13
11:16
(17) прямо в запросе <> грамотно
если бы было иначе, тогда бы не было Transact SQL, PL SQL и пр.