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

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

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

Основной регистр продаж

Для начала ответим на главный вопрос: основным регистром накопления, в котором фиксируются данные о выручке, объемах продаж и себестоимости в 1С:ERP (и в «1С:Комплексная автоматизация 2»), является регистр «Выручка и себестоимость продаж» (имя в метаданных — ВыручкаИСебестоимостьПродаж).

Этот регистр является «сердцем» подсистемы финансового результата. Именно на его данных строятся отчеты по валовой прибыли, анализу продаж и эффективности работы менеджеров. Однако при попытке написать запрос к этому регистру «в лоб» разработчик замечает странность: в измерениях нет ни клиента, ни договора, ни номенклатуры.

Почему в регистре нет измерений «Контрагент» или «Партнер»?

Разберем ситуацию, которая часто вызывает недоумение: почему вместо понятных ссылок на справочники мы видим поля типа АналитикаУчетаПоПартнерам или АналитикаУчетаНоменклатуры? Причина кроется в архитектурном подходе, называемом нормализацией данных (в контексте обсуждения упоминалась 3-я нормальная форма или 3-БНФ).

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

Механизм работы ключей аналитики

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

  1. Аналитика учета по партнерам (справочник КлючиАналитикиУчетаПоПартнерам). Этот ключ объединяет в себе:
    • Партнера (управленческая сущность);
    • Контрагента (юридическое лицо);
    • Организацию;
    • Договор;
    • Направление деятельности.
  2. Аналитика учета номенклатуры (справочник КлючиАналитикиУчетаНоменклатуры). Включает в себя:
    • Номенклатуру;
    • Характеристику;
    • Серию;
    • Склад (или место хранения).

Выясним причину удобства такого подхода для системы: когда документ «Реализация товаров и услуг» проводится, программа сначала проверяет, существует ли уже сочетание «Партнер + Контрагент + Договор» в справочнике ключей. Если существует — в регистр записывается одна короткая ссылка на найденный ключ. Если нет — создается новый ключ. Это позволяет значительно ускорить проведение документов и упростить работу оптимизатора СУБД.

Как получить данные в запросе?

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


ВЫБРАТЬ
    РегистрПродаж.Период КАК ДатаПродажи,
    КлючПартнера.Партнер КАК Клиент,
    КлючПартнера.Контрагент КАК ЮрЛицо,
    КлючНоменклатуры.Номенклатура КАК Товар,
    РегистрПродаж.Количество КАК КолВо,
    РегистрПродаж.ВыручкаБезНДСРегл КАК Сумма
ИЗ
    РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК РегистрПродаж
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаПоПартнерам КАК КлючПартнера
        ПО РегистрПродаж.АналитикаУчетаПоПартнерам = КлючПартнера.Ссылка
    ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КлючиАналитикиУчетаНоменклатуры КАК КлючНоменклатуры
        ПО РегистрПродаж.АналитикаУчетаНоменклатуры = КлючНоменклатуры.Ссылка
ГДЕ
    РегистрПродаж.Период МЕЖДУ &ДатаНачала И &ДатаКонца

Важный момент для разработчика: если вы используете Систему компоновки данных (СКД), то платформа 1С автоматически «разворачивает» эти поля. Вам достаточно выбрать поле АналитикаУчетаПоПартнерам.Партнер, и СКД сама добавит необходимые соединения в итоговый SQL-запрос. Это значительно упрощает разработку отчетов.

Особенности формирования себестоимости

Проанализируем еще одну важную деталь: наличие данных в ресурсах регистра. Регистр называется «Выручка и себестоимость продаж», но сразу после проведения документа реализации поле Себестоимость часто остается пустым. Почему так происходит?

В 1С:ERP расчет финансового результата разделен на два этапа:

  1. Оперативный этап: при проведении документа фиксируется факт продажи (количество и выручка).
  2. Регламентный этап: окончательная себестоимость рассчитывается только при выполнении обработки «Закрытие месяца». До этого момента в регистре может отражаться либо предварительная себестоимость (если включена соответствующая настройка), либо вовсе нулевые значения.

Это критически важно понимать при построении отчетов: если вы пытаетесь анализировать валовую прибыль в середине месяца без предварительного расчета себестоимости, данные будут неточными или неполными.

Итоги

Подведем итоги нашего разбора. Мы выяснили, что основной регистр для анализа реализации — это ВыручкаИСебестоимостьПродаж. Его структура базируется на принципах нормализации данных и использовании ключей аналитики. Несмотря на кажущуюся сложность (необходимость соединений в запросах), такая архитектура обеспечивает высокую производительность системы в условиях больших объемов данных, характерных для ERP-решений.

При работе с этим регистром всегда помните о необходимости соединения со справочниками ключей для получения человекочитаемой аналитики и учитывайте цикл закрытия месяца для получения корректных данных по себестоимости.

← На главную