Как вывести тип операции в отчете 1С при учете библиотеки

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

При разработке конфигураций для учета книг в библиотеке часто возникает задача классификации действий пользователя. В системе могут существовать разные документы: Выдача книги, Продление книги, Потеря книги и Возврат книги. Однако для формирования итогового отчета нам необходимо свести все эти данные в одну таблицу и в отдельной колонке Тип операции наглядно отобразить название совершенного действия. Рассмотрим подробно несколько способов реализации этой задачи: от простого объединения данных до профессионального архитектурного подхода.

Способ 1. Объединение операций в одном документе (Универсальный подход)

Как было предложено в обсуждении, наиболее простым решением с точки зрения построения отчета является создание одного универсального документа вместо четырех разных. Это избавляет от необходимости «собирать» отчет по кусочкам из разных таблиц базы данных.

Разберем этот метод по шагам:

  1. Создадим новый объект метаданных Перечисление с именем ВидыОперацийБиблиотеки.
  2. Добавим в него значения: Выдача, Возврат, Продление, Потеря.
  3. В единственном документе (например, с названием ОперацияСКнигой) создадим реквизит ВидОперации с типом ссылки на наше перечисление.
  4. Настроим форму документа так, чтобы при выборе вида операции менялась видимость полей или логика проведения (если это необходимо).

Теперь в Системе компоновки данных (СКД) нам достаточно просто выбрать реквизит ВидОперации. Система автоматически выведет строковое представление перечисления в колонку отчета. Это самый быстрый путь, если логика работы всех четырех операций схожа (везде указывается читатель, книга и дата).

Способ 2. Использование запроса с объединением (UNION ALL)

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

В конструкторе запроса мы можем использовать оператор ОБЪЕДИНИТЬ ВСЕ. В каждой части запроса мы вручную создадим текстовое поле, которое будет идентифицировать тип операции.

Пример структуры запроса:


ВЫБРАТЬ
    ВыдачаКниги.Читатель КАК ФИО,
    "Выдача книги" КАК ТипОперации,
    ВыдачаКниги.Книга КАК НазваниеКниги
ИЗ
    Документ.ВыдачаКниги КАК ВыдачаКниги

ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ
    ВозвратКниги.Читатель,
    "Возврат книги",
    ВозвратКниги.Книга
ИЗ
    Документ.ВозвратКниги КАК ВозвратКниги

Важный момент: при использовании такого подхода следите за тем, чтобы типы данных во всех объединяемых полях совпадали. Этот метод позволяет гибко управлять тем, что именно будет написано в колонке, независимо от имен самих документов в конфигураторе.

Способ 3. Использование функций СКД для получения типа документа

Выясним ситуацию, когда документов много, и мы не хотим прописывать названия вручную в запросе. В Системе компоновки данных (СКД) существуют мощные инструменты для работы с типами объектов. Мы можем использовать вычисляемое поле или выражение в ресурсах.

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

Представление(ТипЗнч(Ссылка))

Это позволит платформе 1С автоматически взять Синоним документа из метаданных. Если вы измените синоним документа «ВыдачаКниги» на «Выдача литературы», отчет автоматически подтянет новое название без изменения программного кода.

Способ 4. Архитектурно правильное решение через Регистры

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

Рассмотрим схему реализации через регистр накопления КнигиНаРуках:

  1. При проведении документа ВыдачаКниги в регистр делается запись с видом движения Приход.
  2. При проведении документа ВозвратКниги — Расход.
  3. Для фиксации типа операции в регистр можно добавить дополнительное измерение или реквизит ВидДвиженияДокумента.

В самом отчете мы будем обращаться к виртуальной таблице КнигиНаРуках.Обороты. Посмотрим на преимущества этого метода:

Сравнение подходов и рекомендации

Подведем итог нашему анализу. Если ваша курсовая работа предполагает простую логику, то вариант с одним документом и перечислением (Способ 1) — самый эффективный. Он минимизирует количество объектов в базе и упрощает программирование.

Если же вы хотите продемонстрировать глубокие знания платформы 1С, рекомендуем реализовать учет через Регистр накопления. Это покажет понимание основных принципов проектирования систем на базе 1С:Предприятие. В этом случае тип операции в отчете будет браться либо из реквизита регистра, либо через стандартное поле Регистратор.Тип.

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

← На главную