Нумерація рядків у запиті

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







Нумерація рядків у запиті

В принципі, завдання легко б вирішувалася, якщо список документів ми б отримували в звіті. Але тут справи йдуть інакше.

У звітах - не проблема!

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

Нумерація рядків у запиті

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

Нумерація рядків у запиті






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

Нумерація в запиті

Змінимо запит динамічного списку журналу документів наступним чином:

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

Нумерація рядків у запиті

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

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

Потрібно розуміти, що використання повторного звернення до таблиці документа або журналу документів може негативно вплинути на продуктивність. Оптимальним було б створення тимчасової таблиці всіх обираних документів, а потім вже працювати з нею. Знову ж таки, все залежить від конкретного завдання!







Схожі статті