Как в 1С:УТ 11 построить отчет по отгрузкам с начальным и конечным сальдо и разворотом по дням?

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

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

Архитектура регистров: выбор источников данных

В типовой конфигурации 1С:УТ 11 взаиморасчеты и продажи разделены по разным регистрам накопления, так как факт перехода права собственности (реализация), факт отгрузки со склада и расчеты по долгам могут происходить в разные моменты времени:

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

Почему в регистре «Расчеты с клиентами» не заполнены суммы?

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

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

Важное правило: никогда не следует выбирать остатки и обороты из физической таблицы движений. Всегда используем виртуальную таблицу РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты.

Связь с контрагентом через аналитику учета

В УТ 11 измерением регистра расчетов выступает не ссылка на справочник Контрагенты, а ключ аналитики — АналитикаУчетаПоПартнерам. Чтобы извлечь конкретного контрагента, организацию или партнера, необходимо соединять виртуальную таблицу с регистром сведений АналитикаУчетаПоПартнерам.

Посмотрим на пример правильного формирования выборки данных в запросе:


ВЫБРАТЬ
    Аналитика.Партнер КАК Партнер,
    Аналитика.Контрагент КАК Контрагент,
    Аналитика.Организация КАК Организация,
    
    // Расчет Дебета (наш долг / долг клиента) и Кредита (аванс клиента) на начало
    ВЫБОР
        КОГДА Расчеты.СуммаНачальныйОстаток > 0 ТОГДА Расчеты.СуммаНачальныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК ДебетНачальныйОстаток,
    
    ВЫБОР
        КОГДА Расчеты.СуммаНачальныйОстаток < 0 ТОГДА -Расчеты.СуммаНачальныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК КредитНачальныйОстаток,
    
    // Ежедневные обороты отгрузок
    ВЫРАЗИТЬ(Расчеты.ПериодДень КАК ДАТА) КАК ПериодДень,
    Расчеты.СуммаРасход КАК СуммаОтгрузкиДень,
    
    // Расчет Дебета и Кредита на конец
    ВЫБОР
        КОГДА Расчеты.СуммаКонечныйОстаток > 0 ТОГДА Расчеты.СуммаКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК ДебетКонечныйОстаток,
    
    ВЫБОР
        КОГДА Расчеты.СуммаКонечныйОстаток < 0 ТОГДА -Расчеты.СуммаКонечныйОстаток
        ИНАЧЕ 0
    КОНЕЦ КАК КредитКонечныйОстаток

ИЗ
    РегистрНакопления.РасчетыСКлиентами.ОстаткиИОбороты(
        &НачалоПериода,
        &КонецПериода,
        Авто,
        ,
        ) КАК Расчеты
        
    ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.АналитикаУчетаПоПартнерам КАК Аналитика
        ПО Расчеты.АналитикаУчетаПоПартнерам = Аналитика.КлючАналитики

Настройка динамических колонок по дням в СКД

Разберем по шагам, как настроить отчет в СКД, чтобы получить фиксированные колонки сальдо по краям и динамически разворачиваемые дни посередине:

  1. Настройка роли полей: на вкладке «Наборы данных» для поля ПериодДень обязательно указываем признак Период, 1, чтобы компоновка данных корректно обрабатывала даты и могла дополнять пропущенные дни.
  2. Определение ресурсов: на вкладке «Ресурсы» назначаем формулу суммирования Сумма(СуммаОтгрузкиДень), а для начальных и конечных сальдо используем стандартные агрегатные функции с учетом измерений группировок.
  3. Структура отчета: на вкладке «Настройки» создаем структуру типа Таблица:
    1. В Строки добавляем группировку Контрагент (или Партнер).
    2. В Колонки добавляем:
      • Группу колонок сальдо на начало: ДебетНачальныйОстаток, КредитНачальныйОстаток.
      • Группировку по полю ПериодДень. В выбранные поля этой группировки помещаем только ресурс СуммаОтгрузкиДень.
      • Группу колонок сальдо на конец: ДебетКонечныйОстаток, КредитКонечныйОстаток.

При такой структуре компоновщик автоматически создаст колонки под каждый календарный день периода, в котором были движения, оставив общие начальные и конечные остатки в рамке отчета.

Нюансы оперативного учета в УТ 11

Обратим внимание на важные особенности ведения расчетов в конфигурации:

  1. Офлайн-режим взаиморасчетов: если в программе включен режим отложенного распределения расчетов, оперативные остатки по регистрам могут быть не распределены по конкретным накладным в реальном времени. Для получения абсолютно точных данных требуется выполнение регламентного фонового задания распределения взаиморасчетов.
  2. Учет валют: если организация ведет продажи в валюте или условных единицах, в запросе обязательно нужно использовать ресурсы СуммаРегл (в валюте регламентированного учета) или СуммаУпр (в валюте управленческого учета), либо накладывать фильтр по конкретной валюте взаиморасчетов.
← На главную