Задача
Есть регистр сведений «Остановки по маршруту», в котором хранится информация о расстоянии от начальной до конечной остановки.
Рис. 1. Регистр сведений "Остановки по маршруту"
Требуется разработать отчет на СКД, который покажет расстояние между двумя любыми остановками по маршруту.
Решение
В любой конфигурации, поддерживающей управляемые формы, создадим непериодический регистр сведений "Остановки по маршруту". Добавим в него измерения Маршрут и Остановка с типом строка длиной, соответственно 4 и 50, а также ресурс Расстояние с типом число длиной 10.2. Сохраним изменения в новой конфигурации. Для создания внешнего отчёта в Меню-->Файл-->Новый выбираем “Внешний отчёт”, зададим его название и открываем схему компоновки данных:
Рис. 2. Создание внешего отчёта на СКД
В открывшемся окне нажимаем кнопку “Добавить набор данных” и выбираем строку “Добавить набор данных – запрос”:
Рис. 3. Добавление набора данных - запрос
Создадим новый запрос. Для решения задачи нам понадобится в запросе регистр сведений "Остановки по маршруту" и, поскольку отчёт должен наглядно показывать расстояние между любыми двумя остановками, сформируем запрос для табличного представления по осям X и Y, используя полное внешнее соединение таблицы регистра с самим собой:
Рис. 4. Текст запроса
Далее, перейдём на закладку "Ресурсы" и укажем их для СКД:
Рис. 5. Указание ресурсов для СКД
Перейдём теперь на закладку "Настройки" и с нажмём кнопку "Открыть констуктор настроек", выберем тип отчёта Таблица:
Рис. 6. Выбор типа отчёта
Далее, последовательно настроим поля отчёта, поля группировки и поля сортировки как показано на рис. 7, 8 и 9:
Рис. 7. Выбор полей отчёта
Рис.8. Выбор полей группировки
Рис. 9. Выбор полей сортировки
Осталось с помощью кнопки "Свойства элементов пользовательских настроек" создать эти настройки, а также на закладке "Другие настройки" указать, как будут располагаться ресурсы, и отказаться от итогов (здесь они не нужны):
Рис. 10 Пользовательские и другие настройки.
Отчёт готов. Теперь перейдём из конфигурации в Предприятие, и заполним регистр сведений (если он ещё не заполнен):
Рис. 11. Заполнение регистра сведений
И, наконец, из Меню-->Файл вызываем наш отчёт из места, куда мы его сохранили в конфигураторе, нажимаем кнопку "Сформировать" и видим решение задачи:
Рис. 12. Отчёт "Расстояние между остановками"
На написание статьи меня подтолкнула публикация
Спасибо авторам за интересную задачу.