Урок

Урок 3. Создаём отчёт с нуля вместе с агентом

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

Время
Самостоятельная практика
Артефакт
Внешний отчёт по числу и сумме заказов покупателей за период
Контрольная точка
Отчёт нативно открывается и сходится с независимыми контрольными числами

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

Коллега просит: «Покажи, сколько заказов оформил каждый покупатель за месяц и на какую сумму». Если просто отправить эту фразу агенту, он за нас решит, что считать заказом, откуда брать сумму и какие документы исключить. Сначала договоримся об этих правилах, потом попросим писать код.

В прошлом уроке мы исследовали регистр Продажи. Для отчёта открой новую задачу Codex в том же проекте: результат теперь другой, а нужные исходники остаются доступны. Готовый регистр выглядит удобным источником, но продажи и заказы отвечают на разные вопросы. Для этого отчёта нам нужен документ Заказ.

Где работать

Общий вариант упражнения — Demo83 1.0.41.3 в отдельной учебной базе, которую можно восстановить. В её исходниках у Заказа найдены поля Покупатель и Сумма. Проверь их в своей версии, прежде чем поручать агенту реализацию. Отчёт сделаем внешним: типовую конфигурацию ради упражнения менять не нужно. Запиши путь к учебной базе, версии и точку восстановления до запуска отчёта.

Если у тебя есть своя задача, можно взять её после урока безопасности. С разрешением только на исходники (OWN-SOURCES) исследуй свою задачу, а запуск и проверку проведи на Demo83. Для работы с собственной копией базы нужен отдельный допуск PREPARED-COPY. Не считай обычную копию рабочей базы таким допуском.

1. Договорись, что должно получиться

Для учебного варианта правила такие:

Вопрос Наш ответ
Какие документы берём? Сохранённые заказы без пометки удаления. Фактические поля сверяем с метаданными
Как задаём период? С первого по последний выбранный день включительно; границы проверяем отдельно
Что выводим? Одну строку на покупателя: число заказов и сумму сохранённых заказов
Что с итогом? Он равен сумме показанных строк, без повторного счёта заказов
Нужен ли отбор? Можно выбрать одного покупателя; без отбора видны все покупатели за период
Что при пустом периоде? Нет строк и старого итога, ошибки тоже нет

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

2. Подготовь числа, которые агент не придумывал

Возьми лист контрольных данных. В учебной базе нужны четыре заказа: два заказа покупателя A и один заказ покупателя B внутри периода, ещё один — за его пределами. Один из внутренних заказов поставь на первый или последний день периода, чтобы проверить границу без дополнительного набора данных.

Открой каждый заказ после сохранения и перепиши его сумму в лист. Затем сам посчитай две ожидаемые строки и общий итог. Так у тебя будет независимый ответ, с которым можно сравнить отчёт. Если в выбранном периоде уже есть другие заказы, найди изолированный диапазон или подтверждённый способ ограничить контрольный набор.

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

3. Проверь источник до генерации отчёта

Покажи агенту правила из таблицы выше и попроси опираться на исходники, найденные в прошлом уроке. Первый запрос — только на исследование:

Найди метаданные Заказа и существующие отчёты Demo83 как образцы.
Подтверди поля Покупатель, Сумма, Дата и признак удаления.
Предложи внешний отчёт на СКД для правил из этого урока.
Пока ничего не меняй. Покажи, какие файлы понадобятся и как мы
отличим ошибку запроса от ошибки настройки СКД.

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

4. Дай агенту сделать один отчёт

Когда план понятен, разреши создать исходники одного внешнего отчёта. Для структуры СКД пусть использует предметные операции Unica и покажет preview до записи. Документы, регистры, общие модули, настройки базы и существующие отчёты в эту задачу не входят.

Просмотри diff прежде, чем собирать результат. Здесь важнее всего заметить три вещи:

  • запрос читает заказы, явно получает границы периода и не присоединяет табличную часть так, что один заказ превращается в несколько строк;
  • итог складывается из тех же заказов, которые показаны в отчёте;
  • новые файлы относятся только к отчёту; в них нет клиентских данных, секретов и путей к твоей базе.

Структурная проверка СКД и диагностика BSL проверяют исходники. Затем нужно собрать отчёт и открыть именно этот артефакт в учебной 1С. Успешная диагностика не доказывает, что он откроется и покажет верные числа. Если сборка или открытие не состоялись, отметь этот этап BLOCKED.

5. Сравни результат с листом

Проверь четыре ситуации:

  1. Весь период: строки A и B, всего три заказа внутри периода.
  2. Отбор по A: два заказа и сумма этих двух заказов.
  3. Пустой период: нет строк и не остался прежний итог.
  4. Заказ на границе: он входит ровно в тот период, который ты выбрал.

Запиши рядом ожидаемые и фактические числа. Если нужен скриншот, делай его только на синтетических данных: вид отчёта он покажет, но происхождение суммы не докажет. При расхождении сначала проверь сами заказы и запрос. Просьба «переделай весь отчёт» обычно скрывает причину ошибки.

Что считать готовым

Сравни четыре результата со своим контрольным набором и проверь, что можешь восстановить учебную базу. Форму отчёта о прохождении урока заполнять не нужно. В контрольном листе есть ещё три вопроса для самопроверки.

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

В следующем уроке мы перенесём тот же подход в типовую УНФ: там результат уже придётся встраивать через расширение.