Порядковый номер в запросе (Новым простым способом)

19.08.14

Разработка - Запросы

По образованию я прикладной математик, ну не смог без боли в глазах смотреть на предлагаемый всюду способ образования натуральных(порядковых) чисел в запросе. Заодно список дат по порядку.

Предлагаю новый простой способ. (с) Верес Иван 2014

Я минут 15 думал как получить натуральный ряд в запросе (специально не стал смотреть как устроено решение в интернете, чтобы не пойти по накату)

Поставил задачу получить линейную функциию от декартового произведения нескольких множеств  .
Поиграл с простыми числами, рядами.... применил теорию вероятности (в части распределения)... почти добился результата... но некоторые записи все таки повторялись, что конечно легко решалось группировкой. Но хотелось не терять ни одной строчки декартового произведения. Как только я поставил это условие, сразу пришло просто решение.

Изучив предложенный код вы сами с легкостью напишите запросы для ваших нужд. 

Добавив условие  "Выражение" < 500 легко ограничть список из 1024 элементов... если вам нужно только 500. 
Преимуществом данного способа является то что он совершенно нетрудоемок для "компилятора", у меня список из 1..1000000 элементов формируется 10 секунд и еще 12 секунд просто выводится в отчет.  

На всякий случай добавил запрос для формирования списка дат по порядку от ДатаНач до ДатаКон

Надеюсь с новым способом ваши запросы станут еще элегантнее и чуть чуть быстрее.

Порядковый Номер 1..64  

ВЫБРАТЬ	0 КАК Поле ПОМЕСТИТЬ Числа 
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ	(Числа1.Поле+4*Числа2.Поле+16*Числа3.Поле)+1 КАК Поле
ИЗ Числа КАК Числа1, Числа КАК Числа2, Числа КАК Числа3
УПОРЯДОЧИТЬ ПО	Поле

Порядковый Номер 1..256

ВЫБРАТЬ	0 КАК Поле ПОМЕСТИТЬ Числа
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ	(Числа1.Поле+4*Числа2.Поле+16*Числа3.Поле+64*Числа4.Поле)+1 КАК Поле
ИЗ Числа КАК Числа1, Числа КАК Числа2, Числа КАК Числа3, Числа КАК Числа4
УПОРЯДОЧИТЬ ПО Поле

Порядковый Номер 1..1024

ВЫБРАТЬ	0 КАК Поле ПОМЕСТИТЬ Числа
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ	(Числа1.Поле+4*Числа2.Поле+16*Числа3.Поле+64*Числа4.Поле+256*Числа5.Поле)+1 КАК Поле
ИЗ Числа КАК Числа1, Числа КАК Числа2, Числа КАК Числа3, Числа КАК Числа4, Числа КАК Числа5
УПОРЯДОЧИТЬ ПО Поле

Порядковый Номер 1..1000000

ВЫБРАТЬ	0 КАК Поле ПОМЕСТИТЬ Числа
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ	(Числа1.Поле+10*Числа2.Поле+100*Числа3.Поле+1000*Числа4.Поле+10000*Числа5.Поле+100000*Числа6.Поле)+1 КАК Поле
ИЗ Числа КАК Числа1, Числа КАК Числа2, Числа КАК Числа3, Числа КАК Числа4, Числа КАК Числа5, Числа КАК Числа6
УПОРЯДОЧИТЬ ПО Поле

Интервал дат ДатаНач..ДатаКон (но не более 1024 дня)

ВЫБРАТЬ   0 КАК Поле ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ   1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ   2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ   3;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1024 
Числа1.Поле + 4 * Числа2.Поле + 16 * Числа3.Поле + 64 * Числа4.Поле + 256 * Числа5.Поле + 1 КАК Поле
ПОМЕСТИТЬ Числа 
ИЗ   Цифры КАК Числа1,   Цифры КАК Числа2,   Цифры КАК Числа3,   Цифры КАК Числа4,   Цифры КАК Числа5
УПОРЯДОЧИТЬ ПО   Поле ;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, Поле) КАК ПолеДата
ИЗ   Числа КАК Числа
ГДЕ Поле < = РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ)

Запрос Порядок Порядковый Номер Отчет СКД

См. также

SALE! %

Инструментарий разработчика Роли и права Запросы СКД Программист Платформа 1С v8.3 Управляемые формы Запросы Система компоновки данных Конфигурации 1cv8 Платные (руб)

Набор инструментов программиста и специалиста 1С для всех конфигураций на управляемых формах. В состав входят инструменты: Консоль запросов, Консоль СКД, Консоль кода, Редактор объекта, Анализ прав доступа, Метаданные, Поиск ссылок, Сравнение объектов, Все функции, Подписки на события и др. Редактор запросов и кода с раскраской и контекстной подсказкой. Доработанный конструктор запросов тонкого клиента. Продукт хорошо оптимизирован и обладает самым широким функционалом среди всех инструментов, представленных на рынке.

12000 10000 руб.

02.09.2020    164049    910    402    

884

Запросы Программист Бесплатно (free)

Увидел cheatsheet по SQL и захотелось нарисовать подобное, но про запросы.

18.10.2024    10685    sergey279    18    

65

Запросы Программист Платформа 1С v8.3 Запросы Конфигурации 1cv8 Бесплатно (free)

Столкнулся с интересной ситуацией, которую хотел бы разобрать, ввиду её неочевидности. Речь пойдёт про использование функции запроса АВТОНОМЕРЗАПИСИ() и проблемы, которые могут возникнуть.

11.10.2024    5801    XilDen    36    

81

Запросы Программист Запросы Бесплатно (free)

Отлаживая взаимодействие с базой данных, мы регулярно сталкиваемся с зависающими или подозрительно долго выполняющимися обращениями, негативно влияющими на производительность. О том, как в PostgreSQL выявить подозрительные запросы, основываясь на доступной о них информации, расскажем в статье.

16.08.2024    8455    user1840182    5    

28

Математика и алгоритмы Запросы Программист Платформа 1С v8.3 Запросы Бесплатно (free)

Рассмотрим быстрый алгоритм поиска дублей с использованием hash функции по набору полей шапки и табличных частей.

08.07.2024    2562    ivanov660    9    

22

Запросы СКД Программист Стажер Система компоновки данных Россия Бесплатно (free)

Часто при разработке отчетов в СКД возникает ситуация, когда не совсем понятно, почему отчет выводит не те данные, которые нужны, либо не выводит вовсе. Возникает потребность увидеть конечный запрос, который формирует СКД. Как это сделать, рассмотрим в этой статье.

15.05.2024    9529    implecs_team    6    

47

Запросы Программист Стажер Платформа 1С v8.3 Конфигурации 1cv8 Бесплатно (free)

Часто поступают задачи по произвольному распределению общих сумм. После распределения иногда пропадают копейки. Суть решения добавить АвтоНомерЗаписи() в ВТ распределения, и далее используя функции МАКСИМУМ или МИНИМУМ можем положить разницу копеек в первую или последнюю строку знаменателя распределения.

11.04.2024    3513    andrey_sag    10    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. MrFlanker 233 18.01.14 06:29 Сейчас в теме
Уже несколько раз размещал, отрезается последняя строчка в алгоритме формирования Дат
(размещаю зедсь)

Интервал дат ДатаНач..ДатаКон (но не более 1024 дня)
ВЫБРАТЬ	0 КАК Поле ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ	1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ	2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ	3;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ ПЕРВЫЕ 1024 
Числа1.Поле + 4 * Числа2.Поле + 16 * Числа3.Поле + 64 * Числа4.Поле + 256 * Числа5.Поле + 1 КАК Поле
ПОМЕСТИТЬ Числа 
ИЗ	Цифры КАК Числа1,	Цифры КАК Числа2,	Цифры КАК Числа3,	Цифры КАК Числа4,	Цифры КАК Числа5
УПОРЯДОЧИТЬ ПО	Поле ;
////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, Поле) КАК ПолеДата
ИЗ	Числа КАК Числа
ГДЕ Поле <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ)
Показать
2. tanzwut 1 18.01.14 08:49 Сейчас в теме
(1)
Это конечно, прикольно - 4 цифры, двоичная система, непонятная с первого взгляда начинающему формула... Чтобы понять эту формулу, надо потрудиться, подумать. А очень многие программисты 1С (по моему личному опыту) очень хорошо составляют алгоритмы, но создать и понять формулу (тем более сложную) для них становится очень трудной задачей. Не все они изучали высшую математику, статистику и т.д. Программист должен написать расчет по предоставленной ему формуле - вот его основная задача при сегодняшнем подходе.
Поэтому Ваш ограниченный вариант (1024 числа) можно заменить более понятным для простого человека:

ВЫБРАТЬ    0 КАК Поле 
ПОМЕСТИТЬ Цифры
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    1
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    2
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    3
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    4
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    5
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    6
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    7
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    8
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ    9;
 X 
ВЫБРАТЬ ПЕРВЫЕ 1000000 
Числа1.Поле + 10 * Числа2.Поле + 100 * Числа3.Поле + 1000 * Числа4.Поле + 10000 * Числа5.Поле + 100000 * Числа6.Поле + 1 КАК Поле
 
ИЗ    Цифры КАК Числа1,    Цифры КАК Числа2,    Цифры КАК Числа3,    Цифры КАК Числа4,    Цифры КАК Числа5,    Цифры КАК Числа6
УПОРЯДОЧИТЬ ПО    Поле ;
Показать


Все в десятичных числах, какой предел нужен, такой и ставим. Зачем эти вычисления в двоичной системе? Кто их поймет?
Это из разряда, когда мне поставили задачу: сделать мотивацию торговых представителей от объема сбыта, но так, чтобы один торговый работает со 100 небольшими клиентами и имеет объем 1000000, а второй - с 20 крупными и имеет объем 5000000. Пришлось извратиться и использовать логарифм от объема: все равно заказчику важен конечный результат, а не формула (которую он, кстати, и не видит и не понимает).
mr_sav; _Farsh_; daro_@mail.ru; tdml; Marxxx; Irwin; cleaner_it; +7 Ответить
8. MrFlanker 233 18.01.14 10:49 Сейчас в теме
(2) tanzwut, Ну так я специально несколько вариантов написал.

- вариант с миллионом записей нельзя использовать для маленьких таблиц,.... он же будет обрабатывать большую часть таблицы из миллиона записей (для условия ГДЕ Выражение<1000,... уже порядка секунды... имхо много сильно)

- Пример с двоичной системой я не приводил (хотя правильно заметили, это возможно).


(3) Rothschild,
как можно пронумеровать произвольную выборку запроса, а именно -
- вставить колонку "НомерСтроки" и заполнить ее порядковыми номерами строк в выборке???

Однозначно вопрос претендует на маленькую нобелевскую премию.... это позволило бы решить ряд прикладных задач.
9. tanzwut 1 18.01.14 11:12 Сейчас в теме
(8)
Надо попробовать заставить 1С не резать своим компилятором функцию ROW_NUMBER() в SQL2005 и выше.
Все равно SQL2000 уже мало у кого остался, а для относительно небольших файловых баз подойдет и указанный вариант (если он там конечно сработает - не проверял).

А что касается секунды на нумерацию миллиона - так надо еще посмотреть, сколько времени займет нумерация в выгруженной таблице значений. Думается, что SQL быстрее. гораздо быстрее.
10. MrFlanker 233 18.01.14 11:23 Сейчас в теме
(9) tanzwut, Можно-то можно..... но спать-то потом трудно будет... вдруг ночью кто-нибудь SQL-сервак поменяет))

Можно изначально создавать почти любое количество записей,... тогда будет очень быстро.

p.s. Выбирая размерность множества от 2 до 20 и количество операций объединения 2..6 можно получить максимальные размеры таблицы с порядковыми числами от 4 до 20^6.
11. Rothschild 18.01.14 11:27 Сейчас в теме
(9) tanzwut,
там много какие функции "зарезаны"
...
у движка запросов 1С ваще голову сносит,
он должен генерить запросы для множества мало-совместимых СУБД

Информационная база (IInfoBaseInfo)
DBMS (DBMS)

Использование:

Чтение и запись.
Описание:

Тип: Строка.
Определяет тип СУБД, в которой размещается информационная база. Возможны следующие типы СУБД:
MSSQLServer - Microsoft SQL Server;
PostgreSQL - PostgreSQL;
IBMDB2 - IBM DB2;
OracleDatabase - Oracle Database.

Доступность:

Интеграция.
Показать

плюс - еще для своего самобытного файлового формата
(могли бы сохранить DBASE для файлового варианта как в 7.7
а не городить самопал!)
12. Rothschild 18.01.14 11:30 Сейчас в теме
(11)
а для PostgreSQL, как я понял, вообще все плохо.
там движок запросов часто городит не работающие запросы к СУБД.
и народу приходится переводить базы на файловый формат
пока в следующих релизах платформы очередной баг не залатают:


http://forum.infostart.ru/forum87/topic102443/
http://forum.infostart.ru/forum26/topic102234/
http://forum.infostart.ru/forum26/topic102539/
3. Rothschild 18.01.14 09:08 Сейчас в теме
(0)
Олимпиадные задачи по математике всегда вызывали у меня
чувство чуть ли не религиозного благовеения...
***
но меня больше интересует более практическая задача:
как можно пронумеровать произвольную выборку запроса, а именно -
- вставить колонку "НомерСтроки" и заполнить ее порядковыми номерами строк в выборке???
sasha777666; +1 Ответить
4. Rothschild 18.01.14 09:16 Сейчас в теме
(3)
это может пригодиться для дополнения двух таблиц "друг другом" в итоговой таблице
как это обсуждается на ветке
http://forum.infostart.ru/forum26/topic102445/

там это решается по "тупому" -
- таблицы выгружаются в ТЗ,
программно перенумеруются с созданием колонки "НомерСтроки"
и загружаются в запрос обратно для соединения.
5. tanzwut 1 18.01.14 10:30 Сейчас в теме
(3) Rothschild,
Все уже придумано до нас:
ВЫБРАТЬ
	СписаниеТоваров.Ссылка,
	СписаниеТоваров.Дата,
	СписаниеТоваров.Номер
ПОМЕСТИТЬ Доки
ИЗ
	Документ.СписаниеТоваров КАК СписаниеТоваров
УПОРЯДОЧИТЬ ПО Дата, Номер;
 X 
ВЫБРАТЬ count(Доки_2.Дата) КАК Порядок, Доки_1.Дата, Доки_1.Номер, Доки_1.Ссылка
ИЗ Доки КАК Доки_1 
inner join Доки КАК Доки_2 on
	Доки_1.Дата >= Доки_2.Дата
group by Доки_1.Дата, Доки_1.Номер, Доки_1.Ссылка
УПОРЯДОЧИТЬ ПО Порядок
Показать


не все операторы перевел на русский язык, но, думаю, и так понятно. в оригинальной статье есть еще несколько примеров.
Взято с sql.ru

А вообще жаль, что 1С не поддерживает функцию SQL 2005 типа "ROW_NUMBER() OVER(ORDER BY name ASC)"
mikhailovaew; brr; Evil Beaver; Rothschild; +4 Ответить
6. Rothschild 18.01.14 10:40 Сейчас в теме
(5) tanzwut,
Испльзование агрегатной фукции COUNT для нумерации
строк мне как-то и в голову не могло придти!

Пример не очень удачный, не универсальный -
- завязан на конкретный пример с хронологией документов.

И проканает ли использование УПОРЯДОЧИТЬ при укладывании
сортируемой выборки во временную таблицу???
***
У меня под 8.1 этот номер ни разу не выходил!!!
7. tanzwut 1 18.01.14 10:46 Сейчас в теме
(6) Rothschild,
там это необязательно. я делал себе для проверки. эту строку можно удалить.
единственный минус этого примера - при наличии одинаковых дат, нумерация строится неверно.
т.е. требование - в нумеруемой таблице в поле (полях) сортировки должны быть уникальные значения.
Если сортировка идет по двум и более полям, то и запрос в объединении надо соответственно подправить.
47. ugroblin 22.08.14 16:38 Сейчас в теме
Один вопрос. Как это попало в рубрику "выбор экспертов"?
1. Как уже много раз упоминалось в комментариях: новизны 0 целых 0 десятых.
2. Практической пользы в таблице порядковых номеров без привязки к данным из других таблиц тоже 0.
3. Чем вас не устроил цикл "Для Н = 1 По Х" с добавлением в массив? По Вашим же критериям "Самая короткая запись кода, без ущерба скорости, при том достаточно понятная" - короче, быстрее и максимально понятно даже новичку. В тонком клиенте работает, гонять данные между сервером и клиентом не нужно - все выполнится на месте.

(3) как можно пронумеровать произвольную выборку запроса, а именно -
- вставить колонку "НомерСтроки" и заполнить ее порядковыми номерами строк в выборке???
Однозначно вопрос претендует на маленькую нобелевскую премию.... это позволило бы решить ряд прикладных задач.
Поздравляю с успешной демонстрацией полного незнания общеизвестных вещей. С Вас премия автору http://kb.mista.ru/article.php?id=703

(38) Прямо выпрашиваете похвалу. Вся статья просто сплошной поток самовосхваления и желания продемонстрировать мнимую значимость ("нахлынули воспоминания былой славы" и т.д.) и превосходство. И образование математическое и теорию вероятностей применил к порядковым номерам (что за бред вообще, где тут случайные события?).

Итог: публикация для сбора плюсов за счет громкого наименования. Жаль что некоторые ведутся.

user622095_admin; vatkir; wolfsoft; +3 Ответить
48. MrFlanker 233 24.08.14 03:18 Сейчас в теме
(47) ugroblin,
Один вопрос. Как это попало в рубрику "выбор экспертов"?
Я не знаю что там куда попало, отвечу по вашим репликам:

1. Для вас может и нет новизны, а в инете на момент публикации короче записи не было.
2. Пользы без привязки к данным действительно мало.... так, пожалуй во всем :-)
3. Хотелось обойтись языком запросов. Распространенное желание.

http://kb.mista.ru/article.php?id=703
- Не вы первые привели эту ссылку
- По этой ссылке действительно "нумерация". Если бы я раздавал премии, я бы отметил эту работу. У меня же просто генерация числовой последовательности.

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

Прямо выпрашиваете похвалу.
- Приятно получать позитивные комментарии, а такие как у вас - "так себе".



13. ildarovich 7936 18.01.14 13:11 Сейчас в теме
Давно не видел статей с такой высокой "плотностью" ошибок в названии и содержании. Автора жонглирует терминологией, которую, наверное, не вполне понимает.
Это как сделать четыре ошибки в слове "ещё". То есть описание всех ошибок по объему будет больше самой статьи.
Предлагаемый метод самый очевидный, ну никак не новый, не самый простой, не самый быстрый. На Инфостарте почти десяток публикаций, реализующий подобный подход. Есть и другие подходы, в том числе и чуть более сложные, но более быстрые.
Осталось непонятным на какой метод автор не может смотреть "без боли в глазах".
В общем, "неряшливая работа".
John_Davidson; user774630; sasha777666; pm74; kuzyara; PLAstic; +6 Ответить
15. tanzwut 1 18.01.14 13:55 Сейчас в теме
(13) ildarovich,
О могучий, прости простых смертных, что посмели высказывать свои грязные мысли в твоем Вашем присутствии.
Не будете ли Вы так любезны привести пример кода для такой задачи:
"Требуется пронумеровать по-порядку 1,2,3.... все строки запроса непосредственно в самом запросе".

P.S.
И еще: насколько я понимаю, это форум, на котором люди делятся своими знаниями, незнаниями, мыслями, просят помочь в решении задачи и т.д. и т.п. Поэтому применять выражения
Давно не видел статей с такой высокой "плотностью" ошибок
и
В общем, "грязная работа"
считаю некорректным. Относитесь, пожалуйста, с уважением к присутствующим на форуме людям. Знаете решение - подскажите. А сказать
"грязная работа"
и не предложить решение - странное поведение, недостойное человека, тем более профессионала.
kassbar; molodoi1sneg; dbachinsky; TuMyP1985; kefir; vano-ekt; Натц; PowerBoy; AllexSoft; Sitex; MrFlanker; +11 1 Ответить
17. andrewks 1375 18.01.14 16:43 Сейчас в теме
22. ildarovich 7936 18.01.14 21:56 Сейчас в теме
(15) Признаю, что погорячился. Просто после слов "по образованию я прикладной математик" ожидал более аккуратного обращения с терминологией. Видимо, более подходящим словом было "неряшливая работа" (именно это я на самом деле имел ввиду). Еще раз внимательно прочитал статью. Надеюсь, Вы не будете против, если я уточню свой комментарий с таким несчастливым номером (13).
sasha777666; awk; +2 1 Ответить
23. MrFlanker 233 19.01.14 05:20 Сейчас в теме
(22) ildarovich, Ну вообще-то с заголовком все верно.... (ибо решается именно задача порядкового номера в запросе) или как вы правильно написали натуральный ряд чисел.... просто эта терминология неуместна в заголовке, но именно с нее начинается публикация.

Можно придраться и к "распределению" в "теории вероятности"... там его нет... это область мат. статистики.
Надеюсь что мои формулировки понятны сообществу... тем более что это все лирика )
Да и работой эту публикацию сложно назвать, просто решение.

По вашим ссылкам:
- Про Батерфляй ваш давайте здесь не будем писать... тем более что оффтопик.
- "https://infostart.ru/public/158617/" - частный случай (правда лучше с нуля нумеровать)
- http://infostart.ru/public/90367/ - интересное решение, суть та же только в пакетник переделано, он будет работать быстрее, но запись длиннее и читаемость. (тем не менее частный случай)
- http://infostart.ru/public/68269/ - ну банальный частный случай... много кода слишком
- http://infostart.ru/public/96226/ - вот сами привели способ, который вызывает боль в глазах.
- http://kb.mista.ru/article.php?id=704 - здесь то же много кода

Вывод: Порождающий запрос действительно будет работать быстрее.. так как фактические это 5-6 пакетных запросов (имеет смысл при огромных таблицах)... но тем не менее это частный случай (2-е строки) и код получается менее компактный.

Вывод: Вам удалось привести более быстрый способ, но не более компактный, это способ является частным случаем, повторенным 5-6 раз в пакетном запросе для количества цифр = 2.

Это решение было у меня промежуточным, затем я перешел к числу цифр=4....для себя считаю его оптимальным с точки зрения скорости и компактности записи.


"Без боли в глазах"
(ВЫБРАТЬ 
| aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d КАК НомерПериодаИзДиапазона 
| ИЗ 
| (ВЫБРАТЬ 
| 0 КАК a 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 1 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 2 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 3 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 4 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 5 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 6 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 7 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 8 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 9) КАК aa 
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 
| 0 КАК b 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 1 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 2 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 3 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 4 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 5 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 6 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 7 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 8 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 9) КАК bb 
| ПО (ИСТИНА) 
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 
| 0 КАК c 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 1 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 2 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 3 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 4 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 5 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 6 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 7 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 8 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 9) КАК cc 
| ПО (ИСТИНА) 
| ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ 
| 0 КАК d 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 1 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 2 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 3 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 4 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 5 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 6 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 7 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 8 
| 
| ОБЪЕДИНИТЬ 
| 
| ВЫБРАТЬ 
| 9) КАК dd 
| ПО (ИСТИНА) 
| ГДЕ 
| aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= &КолПериодовМеждуДатами) КАК РазностьДат) КАК Даты 
Показать


И еще несколько решений:
http://kb.mista.ru/article.php?id=579
http://infostart.ru/public/156757/
http://itland.ru/forum//index.php?showtopic=21110
http://kb.mista.ru/article.php?id=704
PowerBoy; AllexSoft; +2 Ответить
42. alexk-is 6544 24.01.14 15:15 Сейчас в теме
(23) Компактный код не всегда самый быстрый. Вот код для сравнения
ВЫБРАТЬ 0 КАК Цифра ПОМЕСТИТЬ Единицы
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 2 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 4 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 5 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 7 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 8 ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 9;
ВЫБРАТЬ Десятки.Цифра * 10 КАК Цифра ПОМЕСТИТЬ Десятки ИЗ Единицы КАК Десятки;
ВЫБРАТЬ Сотни.Цифра * 10 КАК Цифра ПОМЕСТИТЬ Сотни ИЗ Десятки КАК Сотни;
ВЫБРАТЬ Тысячи.Цифра * 10 КАК Цифра ПОМЕСТИТЬ Тысячи ИЗ Сотни КАК Тысячи;
ВЫБРАТЬ ДесяткиТысяч.Цифра * 10 КАК Цифра ПОМЕСТИТЬ ДесяткиТысяч ИЗ Тысячи КАК ДесяткиТысяч;
ВЫБРАТЬ СотниТысяч.Цифра * 10 КАК Цифра ПОМЕСТИТЬ СотниТысяч ИЗ ДесяткиТысяч КАК СотниТысяч;
ВЫБРАТЬ Десятки.Цифра + Единицы.Цифра КАК Цифра
ПОМЕСТИТЬ ДоСотни ИЗ Десятки КАК Десятки, Единицы КАК Единицы;
ВЫБРАТЬ Тысячи.Цифра + Сотни.Цифра КАК Цифра
ПОМЕСТИТЬ ДоДесятиТысяч ИЗ Тысячи КАК Тысячи, Сотни КАК Сотни;
ВЫБРАТЬ СотниТысяч.Цифра + ДесяткиТысяч.Цифра КАК Цифра
ПОМЕСТИТЬ ДоМиллиона ИЗ СотниТысяч КАК СотниТысяч, ДесяткиТысяч КАК ДесяткиТысяч;
ВЫБРАТЬ ДоМиллиона.Цифра + ДоДесятиТысяч.Цифра + ДоСотни.Цифра КАК Цифра
ИЗ ДоМиллиона КАК ДоМиллиона, ДоДесятиТысяч КАК ДоДесятиТысяч, ДоСотни КАК ДоСотни
УПОРЯДОЧИТЬ ПО Цифра;
Показать

Это кусок выдранный из http://infostart.ru/public/68269/
16. Rothschild 18.01.14 14:18 Сейчас в теме
(13) ildarovich,
(14) andrewks,
(15) tanzwut,

О всемогущий Яхве-Саваоф, сущий на небе и на земле!
Прости их - ибо не ведают они, что творят!!!

18. MrFlanker 233 18.01.14 18:02 Сейчас в теме
(13) ildarovich,
Ваш комментарий совершенно бесполезный...пока в нем нет конкретики. Вы уж отпишитесь по делу...а мы примем критику.

Например приведите более короткую запись более быстрого способа.... я честно не нашел.
21. ildarovich 7936 18.01.14 21:44 Сейчас в теме
(18) (15) В чем, по моему мнению основная, но не единственная ошибка данной публикации. В названии. Оно неверное. Судя по приведенным запросам, в них решается задача получения таблицы с одной колонкой, содержащей все натуральные числа в заданном диапазоне.
Это никак не нумерация. Ведь нумерация предполагает наличие некоторой исходной таблицы, к которой в запросе добавляется колонка с номером записи. Это совсем другая действительно сложная и ресурсоемкая задача, которая в данной статье не решается. (но решается в статье по ссылке из комментария (17) и более быстрым способом (даже для миллиона строк) в статье Баттерфляй - метод быстрого расчета нарастающего итога в запросе).
Далее в аннотации к статье говорится о натуральных (порядковых) числах. Есть натуральные числа и есть порядковые (обобщение первых). А зачем здесь порядковые числа? Блеснуть словцом?
Говорится, что без боли в глазах невозможно смотреть на применяемый всюду метод. Что это за метод. Это осталось совершенно непонятным. Какой метод имеется ввиду? Его обязательно нужно указать, привести, удовлетворить общее любопытство.
Ну и о новизне. Вот несколько ссылок навскидку, в которых используется тот же метод:
Некоторые полезные новичкам платформы 1С8.х приёмы работы с запросами - 2 часть - пример 7.
Порождающий запрос - решения из комментариев 7, 17, 19, 38
Работаем с датами в запросе.
Формирование списка дат в заданном диапазоне в тексте запроса.
Генерация числовой последовательности и последовательности дат при помощи языка запросов.
Я же считаю лучшим методом оригинальный метод из статьи
Порождающий запрос
user622095_admin; John_Davidson; user774630; insurgut; dbachinsky; INK2018; Rokov; MasterTonLab; GorDAn; sasha777666; denis_aka_wolf; VasMart; iov; kanalex; klinval; ugroblin; userGJ; omut; danilasky; vano-ekt; brr; Andreynikus; boln; Дмитрий74Чел; melenaspb; SP2000; absolutblohin; pumbaE; MrUnnamed; Evil Beaver; wunderland; Ёпрст; ivanitland; +33 1 Ответить
35. wunderland 202 22.01.14 13:01 Сейчас в теме
(21) тот случай, когда комментарий полезнее статьи ;)
sasha777666; +1 Ответить
36. MrFlanker 233 22.01.14 16:03 Сейчас в теме
(35) wunderland,
Думаю это нормальное явление , из комментариев вашей статьи про звонки я узнал как это делать проще чем вы предлагаете. Выходит ваша статья помогла мне ))

вот думаю плюсик ставить вам или в комментарий :;)
поставил оба
14. andrewks 1375 18.01.14 13:39 Сейчас в теме
ну не смог без боли в глазах смотреть на предлагаемый всюду способ образования натуральных(порядковых) чисел в запросе

так я и не понял, в чём новация предлагаемого запроса - этот способ был предложен много-много лет назад
sasha777666; +1 Ответить
19. MrFlanker 233 18.01.14 18:09 Сейчас в теме

Этот способ достаточно известен у него есть существенный недостаток - ресурсоёмкость. Вряд ли он выживет на таблице из миллиона строк.

Я бы его не рекомендовал ни под каким соусом. Все ИМХО.
20. andrewks 1375 18.01.14 19:44 Сейчас в теме
(19) предложите свой
sasha777666; +1 Ответить
24. ildarovich 7936 19.01.14 11:56 Сейчас в теме
1) Название. Нумерация - это отглагольное существительное, подразумевающее существующий объект действия - нумеруемое множество. В данном случае его нет, оно образуется в процессе выполнения запроса.
То есть это формирование, образование, получение, генерация, порождение, но никак не нумерация.
Неправильное название - это ошибка с серьезными последствиями.
Это все равно, что положить шприц с адреналином в коробку с надписью "средства от насморка".
Это может стоить человеческой жизни.
2) Новизна. В названии написано, что метод новый. Новый - это ранее неизвестный. Но к моим ссылкам добавляете еще несколько ссылок на тот же метод. "С болью в глазах" - это вложенный запрос. То есть перенос вложенного запроса во временную таблицу, который, к тому же ранее многократно публиковался, называется новизной? упрощением? Новизной считается обобщение - использование произвольного основания? Но уже было основание 2, 6, 10. Добавили основание 4? Новизна в этом? - Тогда докажите, что основание 4 лучше. - Оптимальнее? - Укажите критерий, приведите значение этого критерия для разных оснований. То есть сомнительная необоснованная оптимальность, но не новизна.
3) Простота. Тоже нужен критерий. Число строк в запросе. Число соединений. Число знаков в записи запроса. Что-то объективное.
4) "Порождающий запрос". Его суть не в начальном основании 2, а в каскадном попарном соединении таблиц. Вот это действительно другой по своей структуре принцип. Он никак не может являться частным случаем выбора оснований. В конце статьи "Порождающий запрос" приведена рекурсивная функция, которая строит по заданному числу требуемых элементов текст порождающего запроса с минимальным числом соединений и произвольным основанием.

В общем, если хотите, исправьте ошибки и неточности, уточните название, уберите из него слово "новый". Если не будет обмана, то статья обязательно кому-нибудь пригодится. Римейки вообще бывают популярны. Как Елки-3.
sasha777666; +1 Ответить
55. awk 744 28.10.14 12:55 Сейчас в теме
(24) ildarovich, Про адреналин. Адреналин - сосудосужающее и прекрасно помогает при насморке :))))
56. ildarovich 7936 28.10.14 13:53 Сейчас в теме
(55) awk, в моей версии этой истории пациент должен был умереть от остановки сердца, а не от насморка.
ZeroSumGame; +1 Ответить
25. MrFlanker 233 19.01.14 16:27 Сейчас в теме
1) Название. Нумерация - это отглагольное существительное, подразумевающее существующий объект действия - нумеруемое множество. В данном случае его нет, ....

Нет конечно, это не то что вы хотите, а то что написано

2) Новизна.

Самая короткая запись кода, без ущерба скорости, при том достаточно понятная.

3) Простота. Тоже нужен критерий. Число строк в запросе.

Именно

4) "Порождающий запрос". Его суть не в начальном основании 2, а в каскадном попарном соединении таблиц.

Вы абсолютно правы, но это лишь Ваше мнение. Для меня ничего особенного в этом нет... я так часто делаю в целях оптимизации. Но для количества в 1000 строк это ничего не дает, только кода больше. Как я уже написал это было промежуточным звеном в моих рассуждениях.


Римейки вообще бывают популярны. Как Елки-3.

Рад что вы усматриваете хоть какую-то полезность решения, а то я уже про себя думаю зачем вообще опубликовал....
27. ildarovich 7936 19.01.14 19:10 Сейчас в теме
(25) Не знаю, стоит ли дальше спорить. Если мы не можем согласовать значения простых слов "новый", "нумерация". Вижу, что свой обман (что метод новый) Вы признавать не хотите. Это некрасиво: думаю, Вам и самому неприятно, когда обманывают, например, в магазине - под видом новых подсовывают просроченные продукты. Это почти тоже самое.
Для меня ничего особенного в этом нет... я так часто делаю в целях оптимизации
экстраполяция Вашей манеры спорить говорит, что это тоже обман. - Жалко, что приходится говорить об этом, а могли бы обсудить вопрос (я, кажется, проследил ход Ваших рассуждений), почему для изоморфного отображения множеств была выбрана линейная функция.
30. MrFlanker 233 20.01.14 08:49 Сейчас в теме
(27) ildarovich,
Не знаю, стоит ли дальше спорить. Если мы не можем согласовать значения простых слов "новый", "нумерация".

Нажмите F3 поиск по слову "нумерация", убедитесь что я ни разу не употреблял это слова.
Натуральный ряд чисел или порядковый номер в запросе, НЕ нумерация и НЕ произвольного запроса.

экстраполяция Вашей манеры спорить говорит, что это тоже обман.

Слово не к месту, прошу вас, не нужно меня аппроксимировать через призму вашего восприятия и тем более делится полученными результатами со мной или сообществом, создайте отдельную публикацию для этого ))) Она отлично впишется в ваши научные труды... без сарказма...

Для вас как любителя поговорок и афоризмов давно придумана фраза "в чужом глазу соринку видите, ......"

почему для изоморфного отображения множеств была выбрана линейная функция.

Согласен это обсуждать было бы интереснее.
26. утюгчеловек 40 19.01.14 16:52 Сейчас в теме
Интересно. Только это не нумерация, а генерация числовой последовательности.
sasha777666; zelevova; PLAstic; vano-ekt; adhocprog; VasMart; foliage; AllexSoft; Sergey K; ShantinTD; zqzq; DrAku1a; zarucheisky; userGJ; MrFlanker; +15 Ответить
28. DoctorRoza 19.01.14 20:36 Сейчас в теме
Надо внимательней изучить материал, может пригодится! :)
29. Rothschild 20.01.14 06:20 Сейчас в теме
(28) DoctorRoza,
диапазон целых чисел - не знаю
...
но генерация диапазона дат у нас используется
в одном из навороченных "аналитических" отчетов.

ЗЫ
Ну а большая часть подобных работ скорее
представляет академический интерес, как
занимательные примеры олимпиадных задач.
31. spetzpozh 21.01.14 09:39 Сейчас в теме
Спасибо за статью, мне было полезно.
32. zqzq 25 22.01.14 09:05 Сейчас в теме
Кстати, нумерация строк произвольного запроса поддерживается в новых версяих MS SQL без всяких танцев с бубнами, жаль что 1С полноценно не поддерживает T-SQL. (Да, я тоже по заголовку подумал про эту задачу, а не про генерацию числового ряда).
33. Sitex 22.01.14 09:13 Сейчас в теме
Спасибо. Изначально меня тоже смутил заголовок. Но все равно зачетно.
34. MrFlanker 233 22.01.14 10:17 Сейчас в теме
(33) Sitex, формулировал заголовок я большей частью для поисковых систем, на всякий случай приложил картинки запросов.

p.s. Мои извинения, всем кого заголовок вводит в заблуждение.

Если сформулировать заголовок "Натуральный ряд в запросе" тоже будет не всем понятно.
По этому пока оставляю так "Порядковый номер в запросе".
37. AllexSoft 22.01.14 16:23 Сейчас в теме
Спасибо за статью, запрос по датам я думаю пригодится, тем более я только тот метод который режет глаза и знал, ваш элегантнее, буду использовать его.
38. MrFlanker 233 22.01.14 17:02 Сейчас в теме
(37) AllexSoft, Спасибо вам большое за положительный отзыв.

Это мотивирует на дальнейшие публикации.

Помнится по молодости из деревни приехал в город на олимпиаду по информатике там только 10 и 11 классы были, меня взяли с 9-м в порядке исключения, мол пусть деревенский парень поучаствует. Учитель мой провел (спасибо ему огромное).
С заданиями я справился быстро, думаю чем заняться начал "курочить" Yamaha MSX....это привлекло внимание вообщем попросили сдать работу и выйти. Помню долго ждал в коридоре больше часа пока хоть кто-нибудь выйдет.
Допустил 1 ошибку в 1 задании (Задание было анализ алгоритма, первую половину описал верно, а вторую по молодой самоуверенности не стал даже анализировать написал что никогда не выполнится)
После оглашения результата с первого взгляда увидел свою ошибку... а за это задание 10 балов было... ну мне только 5 дали. В итоге второе место, удивленные морды и тур на областную олимпиаду.


К чему это я здесь пишу,.... потому что я уже много лет с 2002 года не IT-к......, пришлось выбирать между свободой от работодателей и любимым делом. А так хочется чего нибудь по-программировать что-нибудь полезное.

P.s. Ссори за оффтопик, нахлынули воспоминания былой славы :)
39. AllexSoft 22.01.14 17:44 Сейчас в теме
(38) только вот хотел все же написать по поводу заголовка статьи (кстати спасибо что написали про новый метод, иначе бы не зашел в статью и не увидел...) так вот, зашел просто ради интереса что за новый метод, сама нумерация была не очень интересна, а тут подарок с таблицей дат... пишите на будущее более точно что в статье есть (даже про подарки)
MrFlanker; +1 Ответить
40. pakill 43 24.01.14 07:33 Сейчас в теме
Согласен во многом с ildarovich.
Конечно есть путаница в терминах. Но вряд ли кто-то понимает разницу между терминами "порядковые числа" и "числа по-порядку". Единственно, не следует в таком случае упоминать про математику. Поскольку в математике
порядковое число - это нечто другое. Простим ему так же и обращение к теории вероятностей.
Все же, статья, полагаю, оказалась интересной и полезной для многих читателей

Теперь по теме.

1. Поскольку фрагмент

ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ 1

конструктор запроса записывает в 5 строк, то лично я вместо основания 4 использую основание 3. Получается компактнее. Для больших чисел, все равно использую основание 3. Просто формула становится длинее и все. Не вижу смысла переходить к основанию 10.


2. Насчет "Порождающего запроса".

Для меня как-то неочевидно, что соединение двух 16-строковых таблиц выполнится быстрее, чем соединение 4-х таблиц по 4 строки в каждой. Мне думается, что это будет одинаково по производительности.

Я даже не учитываю, что эти 16-строковые таблицы еще предварительно надо сформировать где-то в памяти. Впрочем, это несущественные мелочи.

Делалась ли проверка этого факта на тестах?

Интуитивно 4 вложенных цикла по 4 и два вложенных цикла по 16 примерно одинаковы по производительности, если это написано на серьезном языке, с оптимизацией счетчиков.

43. ildarovich 7936 24.01.14 15:26 Сейчас в теме
(40) Задачи, в которых можно применить искусственные (создаваемые не на основе данных ИБ) таблицы, можно пересчитать по пальцам. Кстати, буду благодарен, если Вы поможете расширить мою коллекцию таких задач. Особых требований по компактности записи запроса или по скорости его работы в этих задачах , как правило, не предъявляется. Поэтому практического смысла спорить по поводу выбора основания системы счисления вроде бы нет.
Но если такой вопрос вдруг окажется важным, то скажу, что по критерию количества строк в записи запроса (после открытия запроса конструктором) наилучшим будет основание 2.
По критерию количества знаков в записи запроса лучшим могут оказываться разные основания в зависимости от требуемого числа генерируемых записей и языка (русский, английский) записи запроса. Можно вывести формулу, отражающую линейную зависимость длины запроса от величины основания и логарифмическую - от числа генерируемых строк, найти первую производную, приравнять нулю и так далее. Ну или просто построить таблицу для выбора основания.
Что касается быстродействия, то основание 2 тоже, как мне кажется, будет лучше. Оно обеспечивает более плотное покрытие натурального ряда числами, в которых не будет "холостых" соединений. Например, если нужно сгенерировать ряд от 1 до 257, то основание 4 даст 1024 - 257 = 767 холостых прогона, а основание 2 - только 512 - 257 = 255 (в три раза меньше!). Ну и поэтому основание 2 по сравнению с другими основаниями в среднем будет давать меньше лишних строк в декартовом произведении.
Видите, сколько факторов можно при желании учесть. Чтобы зря не ломать каждый раз над этим голову, я написал маленькую функцию, которая по требуемому количеству строк формирует запрос, генерирующий таблицу чисел. Я уже видел обработки, в которых она была использована. Функция приведена в статье "Порождающий запрос". Ну а эффективность "порождающего запроса" лучше обсуждать в соответствующей ветке комментариев (метод вложенных циклов для оценки производительности запросов будет очень кстати).
45. MrFlanker 233 24.01.14 16:19 Сейчас в теме
(43) ildarovich, на редкость согласен с вашим постом за исключением
Что касается быстродействия, то основание 2 тоже, как мне кажется, будет лучше. Оно обеспечивает более плотное покрытие натурального ряда числами, в которых не будет "холостых" соединений.


Более плотное покрытие достигается использованием произвольного основания... о чем я написал еще в первом посте (не дословно конечно) "Изучив предложенный код вы сами с легкостью напишите запросы для ваших нужд".

Ну и дальше в комментах разжевано это уже.
44. MrFlanker 233 24.01.14 16:06 Сейчас в теме
(40) pakill,
Согласен с вами во всем, я не использовал математические термины. Название оптимизировано под поисковик.

А про теорию вероятности, спасибо за прощение. Ну а вообще: а) это было лирическое отступление б) я действительно искал последовательность псевдослучайных чисел обладающих нужным мне распределением.

Насчет "Порождающего запроса".
В целом согласен, нужно проверять, но там фишка будет в том что формула вычислений короче, в итоге меньше операций.... я с этого начинал свои рассуждения....но моя задача была получить более компактный код, потому что раздражает когда на экране запрос листать сильно приходиться.... а к конструктору я еще не привык... анализирую запросы, работая с текстом.
41. foliage 24.01.14 08:46 Сейчас в теме
Меня тоже заголовок статьи ввел в заблуждение. Хотя, прочитав все комментарии и обдумав, склоняюсь к тому, что заголовок верный, а вот его восприятие (у меня) почему-то неверное :)
И спасибо за запрос генерации последовательности дат!
46. vano-ekt 124 21.08.14 07:05 Сейчас в теме
и нахе*а эта последовательность в запросе?
49. with 27.08.14 03:51 Сейчас в теме
Коллеги, можно бизнес кейс в студию для чего надо порядковый номер в запросе вычислять? И почему его нельзя рассчитать при заполнении области вывода?
50. MrFlanker 233 27.08.14 06:11 Сейчас в теме
(49) with,
Имхо "бизнес-кейс" вы неуместно ляпнули.

лично для меня смысл больше теоретический,....если кто-то найдет серьезное практическое применение, пусть порадует нас.
51. PLAstic 296 27.08.14 12:50 Сейчас в теме
Пока не имел возможности ознакомиться с комментариями выше, но замечу, что это бойанъ чистой воды.
Статья с датой публикации 30.03.10 : http://infostart.ru/public/68269/
Именно предлагаемое решение описано в 35ом комментарии мной.

ps: Ознакомился. Всё верно, баян. Даже не думал, что можно было оснастить свой комментарий таким количеством псевдонаучных слов.
52. MrFlanker 233 27.08.14 17:04 Сейчас в теме
(51) PLAstic,
Конечно подобные публикации были, просто я не смог их прогуглить.

Но до сих пор я не видел такой простой лаконичной записи.... но я не считаю что это как-то умоляет ваших заслуг, а также заслуг других авторов.
Конечно кто-то когда-то это сделал первым, возможно еще до вас.

У меня была весьма скромная цель: сделать запись компактнее.

Даже не думал, что можно было оснастить свой комментарий таким количеством псевдонаучных слов.
Это что моя проблема ??? для чего вы это пишите?

ps. Я тоже не думал что моя "заметка" привлечет такое количество "псевдо-умников".
А если кому-то понравилась, я искренне рад :-)
53. PLAstic 296 27.08.14 17:39 Сейчас в теме
(52) единственное, что можно было бы изменить - меньше пафоса в подаче статьи. Остальное всё верно говорите. У меня ж тоже такая ситуация была: http://infostart.ru/public/294052/
Кричат "баян", а ссылок не дают. Потом только я изучил комментарии к статье и заметил среди прочих один, где предлагалась такая же идея. Только комментарии к статьям читают далеко не все, да и поиска по ним нет, а статьи даже в рассылке упоминаются.
54. MrFlanker 233 28.08.14 00:57 Сейчас в теме
(53) PLAstic,
У вас конкретное практическое решение конкретной проблемы.
К тому же все сделано верно с методологической точки зрения.
Использование объектов метаданных по назначению так сказать.
Думаю многие начинающие кодеры извлекут пользу из вашей публикации.
Хотя конечно для программиста 1С это очевидность :)

Но критиковать вашу публикацию может только балбес или тот кому делать нечего :-))

p.s. У меня же есть к чему прицепиться "новизна?", "практическое применение?", "пафос?" - все вызывает желание покритиковать,... да и ладно :)
57. os01 19.08.16 15:41 Сейчас в теме
в ласт примере ласт пакет чуть более корректно так:

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, Числа.Поле - 1) КАК ПолеДата
ИЗ
	Числа КАК Числа
ГДЕ
	Числа.Поле <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ)
58. shira84 226 17.05.19 13:14 Сейчас в теме
Запросы просто огонь! Но мне чаще всего натуральный ряд нужен бывает во временной таблице, которую упорядочить к сожалению не получится.
59. vatkir 17 19.07.19 13:21 Сейчас в теме
Как я понимаю, пронумеровать ЭТИМ ничего нельзя? Если так, я только что потратил 15 минут жизни на изучения ненужной ерунды
60. Alien_job 190 19.07.19 14:22 Сейчас в теме
61. N1ce 21.08.19 11:11 Сейчас в теме
(60)
АВТОНОМЕРЗАПИСИ()

с платформы 8.3.13
Оставьте свое сообщение