Порядковый номер в запросе. Нумерация строк в системе 1С

02.08.22

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

В данной статье будет описано, как в системе 1С присваивается порядковый номер в запросе, то есть происходит нумерация строк запроса. Будет сформирована некая универсальная задача, после чего будет предложен код запроса, который решит задачу и будет нумеровать строки.

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

Стоит отметить, что нумерация строк в запросе – это операция присвоения порядкового номера каждой строке.

Пусть в нашем журнале содержатся три следующих документа – это «Заявка», «Приходный ордер» и «Расходный ордер». Изначальный вид журнала документов с перечнем принимал такой вид, как демонстрируется на скриншоте с примером ниже:

 

Изначальный вид журнала документов

 

Решение данной постановки задачи было бы очевидно в случае, когда перечень документов был бы результирующей внутри некоторого отчёта, но данная задача не настолько тривиальна.   

 

Нумерация по отчёту

 

Для понимания решения задачи при наличии отчёта рассмотрим данную модель ситуации. Создаём отчёт внутри системы по компоновке данных, результатом будет перечень документации, в таком случае решение элементарно, а именно: для полей внутри отчёта нужно внести особый вид поля – «Номер по порядку», как демонстрируется на скриншоте с примером далее:

 

Процесс нумерации по отчету

 

Результатом нумерации по отчету станет формировка следующей отчётности, как показано в примере ниже:

 

Результат нумерации по отчету   

 

Нумерация в запросе

 

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

Нужно поменять запрос для списка по журналу документации, который является динамическим, таким способом, как демонстрируется на тексте примера запроса далее:

 

Текст запроса для нумерации строк в запросе

 

Если открыть динамический список при режиме «1С:Предприятие», то результатом будет следующее, как показано на скриншоте далее:

 

Строки динамического списка

 

В тексте примера запроса выше описано, как проводить нумерацию в запросе. На фото результата данного запроса вся документация подверглась сортировке по номеру по порядку, все строки динамического списка отсортированы по типу. Это выполняется из-за того, что была вызвана ссылка, которая отвечает за соединение, но гарантий, что GUID у каждой ссылки будет единственным и уникальным нет.

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

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

См. также

SALE! 15%

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

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

10000 руб.

02.09.2020    160469    887    399    

866

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

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

18.10.2024    10123    sergey279    18    

64

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

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

11.10.2024    5343    XilDen    36    

81

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

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

16.08.2024    8053    user1840182    5    

28

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

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

08.07.2024    2435    ivanov660    9    

22

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

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

15.05.2024    8888    implecs_team    6    

47

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

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

11.04.2024    3424    andrey_sag    10    

36
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SlavaKron 02.08.22 11:35 Сейчас в теме
Это можно сделать через АВТОНОМЕРЗАПИСИ, кажется, начиная с 8.3.13
Komanda1C; bulpi; NiGMa; Obertone; +4 Ответить
12. native-api 29.01.24 16:27 Сейчас в теме
(1) Согласно документации,

* АВТОНОМЕРЗАПИСИ доступен только во временных таблицах, и
* не гарантируется, что он будет начинаться с 1.
2. booksfill 02.08.22 11:49 Сейчас в теме
Несколько замечаний:
1. начиная, кажется, с 8.3.13 появился АВТОНОМЕРЗАПИСИ
2. ваш метод крайне нежелателен на больших таблицах, думаю, понятно почему
3. это уже описано, например, https://kb.mista.ru/article.php?id=703&
4. часть проблем, решаемых нумерацией строк теперь можно, вероятно, только декларируют, можно будет решить (8.3.22) при помощи
УникальныйИдентификатор(Ссылка).
nofear; user1232315; milov.aleksey; Komanda1C; +4 Ответить
3. Dansur 262 03.08.22 08:55 Сейчас в теме
ВЫБРАТЬ
	АВТОНОМЕРЗАПИСИ() КАК НомерПоПорядку,
	х.Ссылка КАК Ссылка,
	х.Номер КАК Номер,
	х.Дата КАК Дата
ПОМЕСТИТЬ вт_1
ИЗ
	Документ.ПеремещениеТоваров КАК х
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	вт_1.НомерПоПорядку КАК НомерПоПорядку,
	вт_1.Ссылка КАК Ссылка,
	вт_1.Номер КАК Номер,
	вт_1.Дата КАК Дата
ИЗ
	вт_1 КАК вт_1
Показать
4. TMV 14 04.08.22 13:52 Сейчас в теме
6. Komanda1C 1 05.08.22 08:01 Сейчас в теме
(4)Попробуйте без ВТ и всё поймете
7. TMV 14 05.08.22 08:51 Сейчас в теме
(6) Хаха, вот вы и попались. В том-то и дело, что такое решение не подходит для больших таблиц.
8. Dansur 262 05.08.22 12:57 Сейчас в теме
(4)
(7)
как раз наоборот. Для больших таблиц подходит АВТОНОМЕРЗАПИСИ() и не подходит способ предложенный автором публикации. а на маленьких оба способа одинаковы примерно по затратам производтительности.
10. TMV 14 06.08.22 07:35 Сейчас в теме
(8) Нет же. На больших объемах оба способа одинаково плохи.
9. JohnyDeath 302 05.08.22 18:45 Сейчас в теме
(7) да, другое дело сделать как в статье - обернуть всё во вложенный запрос и сгруппировать! Также намного быстрей будет при больших объемах
5. bulpi 217 04.08.22 16:01 Сейчас в теме
Такое впечатление, что статья написана на иностранном языке, и переведена на русский язык (плохим!) электронным переводчиком.
11. Said-We 07.03.23 13:52 Сейчас в теме
ВЫБРАТЬ ПЕРВЫЕ 999999999999
АВТОНОМЕРЗАПИСИ()
....
Упорядочить по

Просто пронумеровать не имеет смысла парой. Необходимо указать по чем сортировать перед нумерацией. В 1С нет полноценной ROW_NUMBER(). Поэтому придется кроме как "order by" указывать и выбрать первые ХХХ. Иначе указать сортировку невозможно в 1С без указания TOP ХХХ (LIMIT XXX).
Оставьте свое сообщение