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

02.08.22

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

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

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

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

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

 

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

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

 

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

 

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

 

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

 

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

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

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

См. также

SALE! 20%

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

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

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

13000 10400 руб.

02.09.2020    122178    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    16186    skovpin_sa    14    

98
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
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) при помощи
УникальныйИдентификатор(Ссылка).
milov.aleksey; Komanda1C; +2 Ответить
3. Dansur 261 03.08.22 08:55 Сейчас в теме
ВЫБРАТЬ
	АВТОНОМЕРЗАПИСИ() КАК НомерПоПорядку,
	х.Ссылка КАК Ссылка,
	х.Номер КАК Номер,
	х.Дата КАК Дата
ПОМЕСТИТЬ вт_1
ИЗ
	Документ.ПеремещениеТоваров КАК х
;

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

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