Прошу подсказать как определить периоды из списка документов у которых последовательность не нарушена, которые идут последовательно в запросе
При наличии списка документов в в последовательности 1,2, 5, 6, 7, ....
Нужно выводить в формате от
1 до 2
5 до 7
и т.д.
Для отладки вывожу список документов запросом

```1c
    ВЫБРАТЬ
    РеализацияУслуг.Регистратор.Ссылка КАК РегистраторСсылка,
    ПОДСТРОКА(РеализацияУслуг.Регистратор.Номер, 6, 9) КАК НомерДокумента
    ПОМЕСТИТЬ Дано
    {ВЫБРАТЬ
    НомерДокумента}
    ИЗ
    РегистрНакопления.РеализацияУслуг КАК РеализацияУслуг
    ГДЕ
    РеализацияУслуг.Период МЕЖДУ &Дата1 И &Дата2
    {УПОРЯДОЧИТЬ ПО
    НомерДокумента}
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ РАЗЛИЧНЫЕ
    Дано.НомерДокумента КАК НомерДокумента
    ИЗ
    Дано КАК Дано
```

Во вложенном файле пример.
Нужна помощь именно в составлении запроса.
---
Набросал свои Данные

```1c
    ВЫБРАТЬ
    "00001" КАК номер
    ПОМЕСТИТЬ Дано

    ОБЪЕДИНИТЬ ВЫБРАТЬ "00002"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00003"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00011"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00012"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00013"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00031"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00032"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00033"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00999"
    ;
```

Воспользовался Ссылкой Приведения числа из строки из (2)

```1c
    ВЫБРАТЬ
    0 КАК С,
    1 КАК П
    ПОМЕСТИТЬ Р16

    ОБЪЕДИНИТЬ ВЫБРАТЬ 1, 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ 2, 100
    ОБЪЕДИНИТЬ ВЫБРАТЬ 3, 1000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 4, 10000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 5, 100000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 6, 1000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 7, 10000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 8, 100000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 9, 1000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 10,10000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 11,100000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 12,1000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 13,10000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 14,100000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 15,1000000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 16,10000000000000000
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    СУММА(А.П * Б.С) / МИНИМУМ(А.П) КАК Значение,
    Дано.номер КАК номер
    ПОМЕСТИТЬ НомераСЧислами
    ИЗ
    Дано КАК Дано,
    Р16 КАК А,
    Р16 КАК Б
    ГДЕ
    Б.С < 10
    И ПОДСТРОКА(Дано.номер, 17 - А.С, 1) = ПОДСТРОКА("0123456789", Б.С + 1, 1)

    СГРУППИРОВАТЬ ПО
    Дано.номер
    ;
```

Собрал интервалы, как у Вас в (3)

```1c
    ВЫБРАТЬ
    НомераСЧислами.Значение КАК Значение
    ПОМЕСТИТЬ НачалоИнтервала
    ИЗ
    НомераСЧислами КАК НомераСЧислами
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами1
    ПО (НомераСЧислами.Значение - 1 = НомераСЧислами1.Значение)
    ГДЕ
    НомераСЧислами1.Значение ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    НомераСЧислами.Значение КАК Значение
    ПОМЕСТИТЬ КонецИнтервала
    ИЗ
    НомераСЧислами КАК НомераСЧислами
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами1
    ПО (НомераСЧислами.Значение + 1 = НомераСЧислами1.Значение)
    ГДЕ
    НомераСЧислами1.Значение ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    НачалоИнтервала.Значение КАК НачалоИнтервала,
    МИНИМУМ(КонецИнтервала.Значение) КАК КонецИнтерваоа
    ПОМЕСТИТЬ Интервалы
    ИЗ
    НачалоИнтервала КАК НачалоИнтервала
    ЛЕВОЕ СОЕДИНЕНИЕ КонецИнтервала КАК КонецИнтервала
    ПО (КонецИнтервала.Значение >= НачалоИнтервала.Значение)

    СГРУППИРОВАТЬ ПО
    НачалоИнтервала.Значение
    ;
```

И добавил свое

```1c
    ВЫБРАТЬ
    "с " + НомераСЧислами.номер + " по " + НомераСЧислами1.номер КАК Интервал
    ИЗ
    Интервалы КАК Интервалы
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами
    ПО (Интервалы.НачалоИнтервала = НомераСЧислами.Значение)
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами1
    ПО (Интервалы.КонецИнтерваоа = НомераСЧислами1.Значение)

    УПОРЯДОЧИТЬ ПО
    Интервалы.НачалоИнтервала
```

Получилось
с 00001 по 00003
с 00011 по 00013
с 00031 по 00033
с 00999 по 00999
---
Можно взять за основу решение задачи 14 из публикации Минимализмы. Только для чисел переписать. Изменится только выражение в группировке. Станет проще. Просто сложением.
Отдельная проблема может оказаться в том, что исходные данные, судя по примеру, это не числа, а строки. Тут потребуется сначала строки в числа преобразовать. Можно взять решение отсюда: Выразить строку как число и строку как дату в запросе.
Ну, еще можно сочинить свое добавление единицы к строке. ХХХХ0 -> ХХХХ1, ..., ХХХХ8 -> ХХХХ9, ..., 09999 - > 10000. В общем, варианты есть, но задача не слишком простая.
---
Спасибо.
Я пока остановился на другом решении:

```1c
    ВЫБРАТЬ
    ТЗ_Чисел.Значение КАК Значение
    ПОМЕСТИТЬ ТЗ_Чисел
    ИЗ
    &ТЗ_Чисел КАК ТЗ_Чисел
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ТЗ_Чисел.Значение КАК ЗначениеЧисло
    ПОМЕСТИТЬ ВТ_ЧислаНачалаИнтервалов
    ИЗ
    ТЗ_Чисел КАК ТЗ_Чисел
    ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Чисел КАК ТЗ_Чисел1
    ПО (ТЗ_Чисел.Значение - 1 = ТЗ_Чисел1.Значение)
    ГДЕ
    ТЗ_Чисел1.Значение ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ТЗ_Чисел.Значение КАК ЗначениеЧисло
    ПОМЕСТИТЬ ВТ_ЧислаКонцаИнтервалов
    ИЗ
    ТЗ_Чисел КАК ТЗ_Чисел
    ЛЕВОЕ СОЕДИНЕНИЕ ТЗ_Чисел КАК ТЗ_Чисел1
    ПО (ТЗ_Чисел.Значение + 1 = ТЗ_Чисел1.Значение)
    ГДЕ
    ТЗ_Чисел1.Значение ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.НачалоИнтервала) КАК НачалоИнтервала,
    ПРЕДСТАВЛЕНИЕ(ВложенныйЗапрос.КонецИнтервала) КАК КонецИнтервала
    ИЗ
    (ВЫБРАТЬ
    ВТ_ЧислаНачалаИнтервалов.ЗначениеЧисло КАК НачалоИнтервала,
    МИНИМУМ(ВТ_ЧислаКонцаИнтервалов.ЗначениеЧисло) КАК КонецИнтервала
    ИЗ
    ВТ_ЧислаНачалаИнтервалов КАК ВТ_ЧислаНачалаИнтервалов
    ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ЧислаКонцаИнтервалов КАК ВТ_ЧислаКонцаИнтервалов
    ПО ВТ_ЧислаНачалаИнтервалов.ЗначениеЧисло <= ВТ_ЧислаКонцаИнтервалов.ЗначениеЧисло

    СГРУППИРОВАТЬ ПО
    ВТ_ЧислаНачалаИнтервалов.ЗначениеЧисло) КАК ВложенныйЗапрос
```

Но результат выводится не в том виде ,нужно число в строку преобразовать, чтобы склеить. Пока разбираюсь дальше
---
Результат у меня пока в таком виде
НачалоИнтервала КонецИнтервала
1 5
7 9
12 12
15 16
---
А куда результат выводится? Формирование сложного представления - уже задача встроенного языка. Крайне редко, когда оправданно перекладывать эту задачу на язык запросов.
---
Наверно это мое внутреннее желание добиться вывод результата запросом.
(5)
---
Набросал свои Данные

```1c
    ВЫБРАТЬ
    "00001" КАК номер
    ПОМЕСТИТЬ Дано

    ОБЪЕДИНИТЬ ВЫБРАТЬ "00002"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00003"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00011"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00012"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00013"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00031"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00032"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00033"
    ОБЪЕДИНИТЬ ВЫБРАТЬ "00999"
    ;
```

Воспользовался Ссылкой Приведения числа из строки из (2)

```1c
    ВЫБРАТЬ
    0 КАК С,
    1 КАК П
    ПОМЕСТИТЬ Р16

    ОБЪЕДИНИТЬ ВЫБРАТЬ 1, 10
    ОБЪЕДИНИТЬ ВЫБРАТЬ 2, 100
    ОБЪЕДИНИТЬ ВЫБРАТЬ 3, 1000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 4, 10000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 5, 100000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 6, 1000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 7, 10000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 8, 100000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 9, 1000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 10,10000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 11,100000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 12,1000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 13,10000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 14,100000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 15,1000000000000000
    ОБЪЕДИНИТЬ ВЫБРАТЬ 16,10000000000000000
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    СУММА(А.П * Б.С) / МИНИМУМ(А.П) КАК Значение,
    Дано.номер КАК номер
    ПОМЕСТИТЬ НомераСЧислами
    ИЗ
    Дано КАК Дано,
    Р16 КАК А,
    Р16 КАК Б
    ГДЕ
    Б.С < 10
    И ПОДСТРОКА(Дано.номер, 17 - А.С, 1) = ПОДСТРОКА("0123456789", Б.С + 1, 1)

    СГРУППИРОВАТЬ ПО
    Дано.номер
    ;
```

Собрал интервалы, как у Вас в (3)

```1c
    ВЫБРАТЬ
    НомераСЧислами.Значение КАК Значение
    ПОМЕСТИТЬ НачалоИнтервала
    ИЗ
    НомераСЧислами КАК НомераСЧислами
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами1
    ПО (НомераСЧислами.Значение - 1 = НомераСЧислами1.Значение)
    ГДЕ
    НомераСЧислами1.Значение ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    НомераСЧислами.Значение КАК Значение
    ПОМЕСТИТЬ КонецИнтервала
    ИЗ
    НомераСЧислами КАК НомераСЧислами
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами1
    ПО (НомераСЧислами.Значение + 1 = НомераСЧислами1.Значение)
    ГДЕ
    НомераСЧислами1.Значение ЕСТЬ NULL
    ;

    ////////////////////////////////////////////////////////////­////////////////////
    ВЫБРАТЬ
    НачалоИнтервала.Значение КАК НачалоИнтервала,
    МИНИМУМ(КонецИнтервала.Значение) КАК КонецИнтерваоа
    ПОМЕСТИТЬ Интервалы
    ИЗ
    НачалоИнтервала КАК НачалоИнтервала
    ЛЕВОЕ СОЕДИНЕНИЕ КонецИнтервала КАК КонецИнтервала
    ПО (КонецИнтервала.Значение >= НачалоИнтервала.Значение)

    СГРУППИРОВАТЬ ПО
    НачалоИнтервала.Значение
    ;
```

И добавил свое

```1c
    ВЫБРАТЬ
    "с " + НомераСЧислами.номер + " по " + НомераСЧислами1.номер КАК Интервал
    ИЗ
    Интервалы КАК Интервалы
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами
    ПО (Интервалы.НачалоИнтервала = НомераСЧислами.Значение)
    ЛЕВОЕ СОЕДИНЕНИЕ НомераСЧислами КАК НомераСЧислами1
    ПО (Интервалы.КонецИнтерваоа = НомераСЧислами1.Значение)

    УПОРЯДОЧИТЬ ПО
    Интервалы.НачалоИнтервала
```

Получилось
с 00001 по 00003
с 00011 по 00013
с 00031 по 00033
с 00999 по 00999
---
Я надеюсь, Вы это сделали исключительно из спортивного интереса. :)
---
Нет. Для разминки. Обычно пригождается в будущем
---
Всем спасибо, очень помогли!