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

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! 20%

Infostart Toolkit: Инструменты разработчика 1С 8.3 на управляемых формах

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

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

13000 10400 руб.

02.09.2020    122179    670    389    

714

Для чего используют конструкцию запроса "ГДЕ ЛОЖЬ" в СКД на примере конфигурации 1С:ERP

Запросы СКД Платформа 1С v8.3 Запросы Система компоновки данных 1С:ERP Управление предприятием 2 Бесплатно (free)

В типовых конфигурациях разработчики компании 1С иногда используют в отчетах, построенных на СКД, такую конструкцию, как "ГДЕ ЛОЖЬ". Такая конструкция говорит о том, что данные в запросе не будут получены совсем. Для чего же нужен тогда запрос?

13.02.2024    5746    KawaNoNeko    23    

23

Набор-объект для СКД по тексту или запросу

Запросы СКД Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 Абонемент ($m)

Есть список полей в виде текста, или запрос - закидываем в набор СКД.

1 стартмани

31.01.2024    2000    2    Yashazz    0    

29

Запрос 1С copilot

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

Пишем на человеческом языке, что нам надо, и получаем текст запроса на языке 1С. Используются большие языковые модели (LLM GPT) от OpenAI или Яндекс на выбор.

5 стартмани

15.01.2024    6286    31    mkalimulin    25    

50

PrintWizard: поддержка представлений ЗУП в конструкторе

Инструментарий разработчика Запросы Платформа 1С v8.3 Бесплатно (free)

Одной из интересных задач, стоящих в процессе разработки, была поддержка механизма представлений в ЗУП. Но не просто возможность исполнения запросов с ними. Основная проблема была в том, чтобы с ними было удобно работать, а именно: создавать, модифицировать и отлаживать. Кратко о том, что в итоге получилось...

14.12.2023    1742    vandalsvq    7    

29

Объектная модель запроса "Схема запроса" 2

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

Далеко уже не новый тип данных "Схема запроса". Статья о том, как использовать его "попроще". Примеры создания текста запроса с нуля и изменение имеющегося запроса.

06.12.2023    5388    user1923546    26    

43

Начните уже использовать хранилище запросов

HighLoad оптимизация Запросы

Очень немногие из тех, кто занимается поддержкой MS SQL, работают с хранилищем запросов. А ведь хранилище запросов – это очень удобный, мощный и, главное, бесплатный инструмент, позволяющий быстро найти и локализовать проблему производительности и потребления ресурсов запросами. В статье расскажем о том, как использовать хранилище запросов в MS SQL и какие плюсы и минусы у него есть.

11.10.2023    16187    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. MrFlanker 219 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 219 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 219 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 219 24.08.14 03:18 Сейчас в теме
(47) ugroblin,
Один вопрос. Как это попало в рубрику "выбор экспертов"?
Я не знаю что там куда попало, отвечу по вашим репликам:

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

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

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

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



13. ildarovich 7850 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 1368 18.01.14 16:43 Сейчас в теме
22. ildarovich 7850 18.01.14 21:56 Сейчас в теме
(15) Признаю, что погорячился. Просто после слов "по образованию я прикладной математик" ожидал более аккуратного обращения с терминологией. Видимо, более подходящим словом было "неряшливая работа" (именно это я на самом деле имел ввиду). Еще раз внимательно прочитал статью. Надеюсь, Вы не будете против, если я уточню свой комментарий с таким несчастливым номером (13).
sasha777666; awk; +2 1 Ответить
23. MrFlanker 219 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 6533 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 219 18.01.14 18:02 Сейчас в теме
(13) ildarovich,
Ваш комментарий совершенно бесполезный...пока в нем нет конкретики. Вы уж отпишитесь по делу...а мы примем критику.

Например приведите более короткую запись более быстрого способа.... я честно не нашел.
21. ildarovich 7850 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 201 22.01.14 13:01 Сейчас в теме
(21) тот случай, когда комментарий полезнее статьи ;)
sasha777666; +1 Ответить
36. MrFlanker 219 22.01.14 16:03 Сейчас в теме
(35) wunderland,
Думаю это нормальное явление , из комментариев вашей статьи про звонки я узнал как это делать проще чем вы предлагаете. Выходит ваша статья помогла мне ))

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

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

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

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

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

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

2) Новизна.

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

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

Именно

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

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


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

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

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

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

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

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

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

Согласен это обсуждать было бы интереснее.
26. утюгчеловек 38 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 23 22.01.14 09:05 Сейчас в теме
Кстати, нумерация строк произвольного запроса поддерживается в новых версяих MS SQL без всяких танцев с бубнами, жаль что 1С полноценно не поддерживает T-SQL. (Да, я тоже по заголовку подумал про эту задачу, а не про генерацию числового ряда).
33. Sitex 22.01.14 09:13 Сейчас в теме
Спасибо. Изначально меня тоже смутил заголовок. Но все равно зачетно.
34. MrFlanker 219 22.01.14 10:17 Сейчас в теме
(33) Sitex, формулировал заголовок я большей частью для поисковых систем, на всякий случай приложил картинки запросов.

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

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


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

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

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

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

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

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

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

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

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

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

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

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
	ДОБАВИТЬКДАТЕ(&ДатаНач, ДЕНЬ, Числа.Поле - 1) КАК ПолеДата
ИЗ
	Числа КАК Числа
ГДЕ
	Числа.Поле <= РАЗНОСТЬДАТ(&ДатаНач, &ДатаКон, ДЕНЬ)
58. shira84 223 17.05.19 13:14 Сейчас в теме
Запросы просто огонь! Но мне чаще всего натуральный ряд нужен бывает во временной таблице, которую упорядочить к сожалению не получится.
59. vatkir 7 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
Оставьте свое сообщение