Обхід елементів довідника
В ході написання алгоритмів може виникнути потреба перебрати всі елементи довідника Наприклад, може знадобитися отримати реєстр будь-якого довідника (товарів, контрагентів і т.д.), що містить перелік усіх елементів цього довідника
Для формування такого реєстру створіть звіт за допомогою Конструктора Звітів і Конструктора Макета Звітів (Конструктору Макета Звітів слід вказати, що звіт буде містити цикли по рядках, кількість циклів по рядках -1, кількість колонок - 3).
Конструктор Макета Звіту згенерує процедуру формування звіту:
Ця процедура поки містить тільки рядки виведення друкарської форми, але не містить рядків отримання і виведення необхідних даних.
Розглянемо приклад формування реєстру товарів (елементів довідника "Номенклатура").
Наше завдання - обійти всі елементи довідника "Номенклатура" і вивести необхідну інформацію - код, найменування та ціну товару - на друк.
Зміни, які нам належить внести в вихідний текст, торкнуться тільки конструкцію "Поки. Цикл. КонецЦікла", інші рядки залишаться колишніми. Тому далі ми будемо показувати перетворення тільки цих рядків алгоритму.
Для виконання необхідних дій над довідником "Номенклатура" ми повинні створити спеціальну змінну за допомогою функції «СоздатьОб'ект":
Ця змінна буде використовуватися для перебору елементів довідника Далі виберемо елементи довідника за допомогою методу "ВибратьЕлементи":
Метод "ВибратьЕлементи" відкриває (починає) перебір елементів довідника. В даному випадку, ми вибираємо всі елементи довідника "Номенклатура". Обробляти елементи довідника ми будемо в циклі, який у нас уже в якомусь вигляді є, він містить оператор виведення рядка в друковану форму, але не містить умови.
Очевидно, цикл нам потрібен, щоб перебрати всі елементи довідника. Для отримання чергового елемента довідника, ми скористаємося методом "ПолучітьЕлемент".
Щоб отримати черговий елемент довідника, слід записати:
Якщо елемент довідника обраний, метод повертає значення "1", в іншому випадку - "0" Тому, перш ніж виконувати над елементом довідника будь-які дії, необхідно перевірити, результат роботи методу (тобто, ми перевіряємо, чи є у нас елемент довідника для обробки)
Запишемо вираз для перевірки результату вибірки елементів довідника в умова циклу:
Таким чином, для перебору всіх елементів довідника ми використовували конструкції організації циклу і методи "ВибратьЕлементи" - "ПолучітьЕлемент". Після виконання методу "ПолучітьЕлемент" змінна "Спр" позиціонуватися (встановлена) на черговий елемент довідника. При цьому всі реквізити цього елемента можна отримати звертаючись через точку ( "Спр.Код, Спр.Наіменованіе і т.д.). При наступному виконанні методу" ПолучітьЕлемент "змінна позиціонується на наступний елемент і звернення" через точку "до реквізитів вже буде видавати інформацію про наступне елементі.
Отже, ми перебрали всі елементи довідника і для кожного елемента вивели в друковану форму рядок Але в сформованому Конструктором шаблоні друкованої форми звіту секція «строка_1» складається з пустого рядка:
Крім того, в шапці формованого звіту стоять умовні назви колонок звіту Колонка_1, Колонка_2, Колонка_3. Замінимо їх назвами "Код", "Найменування" і "Ціна".
А в секції строка_1 в колонках таблиці 2, 3 і 4 запишемо відповідно Спр.Код, Спр.Наіменованіе і Спр.Цена:
Доопрацювання алгоритму, в цілому, завершена. У довіднику "Номенклатура" ми перебрали всі елементи і вивели в звіт їх реквізити: "Код", "Найменування" і "Ціна".