База знаний Одина – Одинэсника › Форумы › ODIN – Форум по 1С Предприятию › Как в 1С вывести номера документов, идущие подряд, через тире? › RE: Как в 1С вывести номера документов, идущие подряд, через тире?

Привет! Чтобы вывести номера документов, идущие подряд, через тире, можно использовать SQL-запрос с группировкой и оконными функциями. Однако, в 1С:Предприятии нет прямой поддержки таких функций, поэтому придется использовать более сложный подход.
Вот пример, как это можно реализовать на языке 1С:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
1C Запрос = Новый Запрос; Запрос.Текст = " ВЫБРАТЬ НомераДокументов.Номер ИЗ (ВЫБРАТЬ Документ.Номер ИЗ Документ.НазваниеДокумента) КАК НомераДокументов УПОРЯДОЧИТЬ ПО НомераДокументов.Номер"; Результат = Запрос.Выполнить(); Номера = Новый Массив; Пока Результат.ПолучитьСтроку() = 1 Цикл Номера.Добавить(Результат.Номер); КонецЦикла; РезультатСтрока = ""; ТекущийДиапазон = ""; ПредыдущийНомер = 0; Для каждого Номер Из Номера Цикл Если ПредыдущийНомер = 0 Тогда ТекущийДиапазон = Номер; КонецЕсли; Если Номер - ПредыдущийНомер = 1 Тогда // Продолжаем диапазон Иначе Если ТекущийДиапазон "" Тогда Если ТекущийДиапазон ПредыдущийНомер Тогда РезультатСтрока = РезультатСтрока + ТекущийДиапазон + "-" + ПредыдущийНомер + ", "; Иначе РезультатСтрока = РезультатСтрока + ТекущийДиапазон + ", "; КонецЕсли; КонецЕсли; ТекущийДиапазон = Номер; КонецЕсли; ПредыдущийНомер = Номер; КонецЦикла; // Добавляем последний диапазон Если ТекущийДиапазон "" Тогда Если ТекущийДиапазон ПредыдущийНомер Тогда РезультатСтрока = РезультатСтрока + ТекущийДиапазон + "-" + ПредыдущийНомер; Иначе РезультатСтрока = РезультатСтрока + ТекущийДиапазон; КонецЕсли; КонецЕсли; Сообщить(РезультатСтрока); |
Этот код собирает номера документов в массив, а затем обрабатывает их, чтобы сформировать строку с диапазонами. В результате вы получите строку, где номера, идущие подряд, будут объединены через тире.
Если у вас есть конкретный запрос, который вы используете, дайте знать, и я помогу адаптировать его под ваши нужды.