Почему в отчете «Валовая прибыль» в УТ 11 не заполняется поле «Поставщик» и как это исправить?

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

Многие пользователи и разработчики при работе с конфигурацией «1С:Управление торговлей» редакции 11 (УТ 11) сталкиваются с неприятной ситуацией: при формировании отчета по валовой прибыли в разрезе поставщиков колонка «Поставщик» остается абсолютно пустой. Ситуация усложняется тем, что даже после включения партионного учета и скользящей оценки (ФИФО) обычное перепроведение документов закупки и продажи не решает проблему.

В этой статье мы подробно разберем внутренние механизмы работы системы, выясним причины такого поведения программы в версиях 11.3, 11.4 и 11.5, а также предоставим пошаговый алгоритм восстановления корректного учета.

В чем кроется техническая причина проблемы?

Для того чтобы понять, почему поле остается пустым, нам необходимо заглянуть «под капот» системы и проанализировать, как именно отчет получает данные о поставщике. Исторически в УТ 11 архитектура хранения информации о поставщике претерпела значительные изменения:

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

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


ВЫБОР 
    КОГДА ВидЗапасов.РеализацияЗапасовДругойОрганизации ТОГДА 
        ВЫБОР 
            КОГДА ВидЗапасов.ВидЗапасовВладельца.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА 
                ВидЗапасов.ВидЗапасовВладельца.Комитент 
            ИНАЧЕ 
                ВидЗапасов.ВидЗапасовВладельца.Поставщик 
        КОНЕЦ 
    ИНАЧЕ 
        ВЫБОР 
            КОГДА ВидЗапасов.ТипЗапасов = ЗНАЧЕНИЕ(Перечисление.ТипыЗапасов.КомиссионныйТовар) ТОГДА 
                ВидЗапасов.Комитент 
            ИНАЧЕ 
                ВидЗапасов.Поставщик 
        КОНЕЦ 
КОНЕЦ КАК Поставщик

Если в системе не настроена детальная аналитика списания партий, поле ВидЗапасов в проводках реализации получает обобщенное значение «Собственный товар» без привязки к конкретному поставщику, из-за чего отчет и выводит пустые строки.

---

Шаг 1. Проверка и настройка функциональных опций

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

  1. Перейдем в раздел НСИ и администрирование -> Настройка НСИ и разделов -> Финансовый результат и контроллинг -> Учет товаров.
  2. Убедимся, что включен флаг «Раздельный учет себестоимости по поставщикам» (в некоторых релизах опция называется «Обособленный учет себестоимости по поставщикам»). Это критически важно: если этот флаг не был установлен в момент проведения документов поступления, программа объединяет все аналогичные товары в общую массу («Собственный товар»), стирая связь с поставщиком на уровне регистров.
  3. Перейдем в настройки учетной политики организации и проверим метод оценки стоимости товаров. Метод должен быть установлен как ФИФО (скользящая оценка) или ФИФО (взвешенная оценка). При методе «Средняя за месяц» себестоимость усредняется, и конкретный поставщик партии при списании не определяется.

---

Шаг 2. Почему обычное перепроведение не помогает?

Часто пользователи включают нужные опции задним числом и запускают стандартную групповую обработку перепроведения документов. Однако в отчетах по-прежнему отображается пустота. Выясним, почему это происходит.

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

Кроме того, в документах реализации присутствует скрытая табличная часть «Виды запасов». При обычном проведении система не всегда рассчитывает ее заново, пытаясь сэкономить время и ресурсы сервера. Чтобы заставить систему полностью пересчитать аналитику, необходимо сначала отменить проведение документов, а затем провести их заново.

---

Шаг 3. Алгоритм исправления данных и очистки видов запасов

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

Предупреждение: Перед выполнением любых групповых операций с базой данных обязательно создайте резервную копию (бэкап) базы данных!

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


ВыборкаДокументов = Документы.ПриобретениеТоваровУслуг.Выбрать();
Пока ВыборкаДокументов.Следующий() Цикл
    Если ВыборкаДокументов.Проведен Тогда
        ДокОбъект = ВыборкаДокументов.ПолучитьОбъект();
        
        // Очищаем привязку к старым видам запасов в табличной части "Товары"
        Для каждого СтрокаТовара Из ДокОбъект.Товары Цикл
            СтрокаТовара.ВидЗапасов = Справочники.ВидыЗапасов.ПустаяСсылка();
        КонецЦикла;
        
        Попытка
            // Записываем документ без проведения, чтобы сбросить движения
            ДокОбъект.Записать(РежимЗаписиДокумента.Запись);
        Исключение
            Сообщить("Ошибка записи документа " + ДокОбъект + ": " + ОписаниеОшибки());
        КонецПопытки;
    КонецЕсли;
КонецЦикла;

После того как виды запасов в документах закупки были очищены программно или вручную (через отмену проведения), необходимо выполнить следующие действия:

  1. Провести все документы закупки (Приобретение товаров и услуг) в хронологической последовательности. На этом шаге система заново сформирует элементы справочника Виды запасов и пропишет в них поставщиков.
  2. Провести документы продаж (Реализация товаров и услуг) также в хронологическом порядке.
  3. В актуальных версиях УТ 11 обязательно перейдите в меню Финансовый результат и контроллинг -> Закрытие месяца и запустите регламентную операцию «Расчет себестоимости». Именно этот механизм окончательно сопоставит проданный товар с конкретной партией закупки и заполнит регистры сведений и накопления нужными данными о поставщике.

---

Шаг 4. Проверка корректности заполнения движений

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

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

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

← На главную