Как сделать нумерацию строк в скд

Обновлено: 07.07.2024

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

ну в кривых руках и молоток бесполезен (и даже опасен) шутка.
В небольших отчетах очень даже может работать, это было как ответ автору вопроса.

68291

Не устроил ответ?
Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.

Реклама

Новые задачи (Фриланс)

Новые вакансии

  • Ведущего программиста приглашаем 1с от 100 000р. от Millana
    Пятница, 28 января, 12:54
  • Приглашаем ведущего программист erp, 150 000 от Millana
    Пятница, 28 января, 12:49
  • Ведущего программиста приглашаем (1С) ЗП от 100 000р. от Millana
    Пятница, 28 января, 10:08

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

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

Изображение

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

В отчетах - не проблема!

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

Изображение

В результате пользователь увидит подобный результат формирования отчета:

Изображение

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

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

Изменим запрос динамического списка журнала документов следующим образом:

При открытии динамического списка в режиме 1С:Предприятия получаем следующий результат:

Изображение

Примечание: в примере показан лишь принцип нумерации строк непосредственно в запросе. Если Вы обратили внимание, то на скриншоте выше документы в списке, отсортированные по порядковому номеру строки, "идут" в порядке типов (сначала приходные ордера, затем расходные и т.д.). Это происходит, потому что, используя ссылку для соединения, мы не можем гарантировать, что GUID'ы ссылок будут уникальными. Также нельзя сравнивать ссылки разных типов документов - это приведет к некорректному результату. Можно использовать момент времени или другие поля, определяющие конкретное положение документа с общем списке журнала.

Конечно, используя подобный подход мы усложнили бы запрос к базе данных, плюс ко всему, некоторые возможности динамического списка, важные для работы пользователей, стали бы не доступными (динамическое считывание данных, основная таблица и т.д.), но пример был создан лишь для демонстрации возможности нумерации строк в запросах. Используя этот принцип для решения других задач, например для печатных форм, подобных проблем не возникнет.

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

На нашем сайте профессионалы делятся своим опытом и разработками. Вы получаете доступ к уникальному и самому полному хранилищу материалов для 1С, состоящему из более 30 000 отчетов, обработок, видео и т.д.

Рейтинг: 213

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

Задача состоит в том, чтобы в иерархическом отчете на СКД, вывести нумерацию строк по иерархии. Например:

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

Так вот решение данного вопроса лежит в макете , точнее в оформлении поля, где можно в выражении писать что угодно.

Текст выражения выглядит так:

В примере представлен вариант для 3-х уровней отчета, собственно если отчет имеет больше уровней, то нужно будет дописать выражение по аналогии. В итоге получаем отчет вот такого вида.

Отчет разрабатывался на платформе 8.3.13.1644.

Специальные предложения

Electronic Software Distribution

Интеграция 1С с системой Меркурий

Алкогольная декларация

Готовые переносы данных

54-ФЗ

Управление проектом на Инфостарте

Траектория обучения 1С-разработчика

Подумал, что у Вас действительно по иерархии каким-то образом нумерация выводится.
Даже скачал файл.
Ну, увы, не иерархическая группировка у Вас, а обычная структура группировок из нескольких уровней.
А я уж подумал - не знаю чего-то.
Кстати, макет использовать не обязательно, можно то же выражение написать в вычисляемом поле или в ресурсах. Результат будет тем же.

Кстати, макет использовать не обязательно, можно то же выражение написать в вычисляемом поле или в ресурсах. Результат будет тем же

Чудненько, но для "настоящей" иерархии бы проверить. Да и количество уровней вложенности заранее неизвестно может быть.

(3) надо попробовать что-то придумать, сложность только в определении наименования предыдущей группировки.

(5) Если просто группировка, то это не столь большая проблема. А вот если группировка иерархическая, то в настройках группировка одна, а при выводе отчета вложенных группировок от ноля до бесконечности.

(7) Было бы здорово найти решение без программирования. Когда задача появилась я до последнего пытался пытался это сделать. Но, в итоге, решил через программный вывод. Через "уровни" не смог спастись в иерархических группировках.

(8) Да, можно использовать твой метод. Только сделать процедуру универсальную, чтобы из СКД вызвать ее.

(11) Для вычисления надо "контекст" запоминать либо передавать. Слишком много костылей придется придумать.

Добавлением системных полей "НомерПоПорядку", "НомерПоПорядкуВГруппировке" в настройках СКД это прекрасно решается, разве нет?

Просмотры 13010

Загрузки 14

Рейтинг 26

Создание 28.06.19 12:00

Обновление 28.06.19 12:00

№ Публикации 1084494

Конфигурация Конфигурации 1cv8

Операционная система Не имеет значения

Вид учета Не имеет значения

Доступ к файлу Абонемент ($m)

Код открыт Да

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

См. также

Расширение возможностей печати: Вывод произвольного нижнего и верхнего колонтитула Промо

Читайте также: