Почему в 1С:Бухгалтерия при наличии разных складов в табличной части поступления в проводках отражается только один склад?

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

Ситуация, когда в табличной части документа «Поступление (акт, накладная, УПД)» отображается колонка со складами, а в бухгалтерских проводках (Дт 10/41 — Кт 60) по всем позициям фигурирует один и тот же склад из шапки, является классической проблемой при эксплуатации доработанных систем. В этой статье мы подробно разберем, почему так происходит, как устроена архитектура 1С:Бухгалтерии и что делать, если после обновления этот функционал перестал работать корректно.

Анализируем архитектуру типового решения

Прежде всего, нам необходимо понять базовый принцип работы типовой конфигурации «1С:Бухгалтерия предприяти 3.0». Разберем по шагам, как система хранит данные о складах:

  1. Субконто на счетах учета: На счетах 10 «Материалы», 41 «Товары» и 43 «Готовая продукция» ведется аналитический учет по субконто Склады.
  2. Реквизиты документа: В типовой конфигурации реквизит Склад расположен исключительно в «шапке» документа. Это означает, что весь товар по данной накладной оприходуется на одно место хранения.
  3. Механизм проведения: Программный код в модуле менеджера или модуле объекта документа, отвечающий за формирование движений по регистру Хозрасчетный, обращается к реквизиту Объект.Склад (шапка) и подставляет его во все строки проводок.

Таким образом, если вы видите колонку «Склад» в табличной части Товары, это однозначно свидетельствует о том, что ваша конфигурация была изменена. Это могло быть сделано либо прямым изменением кода, либо с помощью расширения, либо вы используете специализированное отраслевое решение (например, для сельского хозяйства или строительства).

Выясняем причины появления проблемы после обновления

Проанализируем ситуацию: до обновления всё работало, а после — склады в таблице остались, но в проводки «идет» только склад из шапки. Рассмотрим основные причины:

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

2. Конфликт расширения. Сейчас наиболее популярный метод доработки — Расширения конфигурации. Если логика подстановки склада была вынесена в расширение, после обновления оно могло:

3. Использование «чужого» обновления. Бывают случаи, когда на отраслевую конфигурацию (например, 1С:Бухгалтерия СХП) по ошибке накатывают обновление от обычной 1С:Бухгалтерии. В этом случае все уникальные механизмы проведения (включая учет по разным складам в ТЧ) просто исчезают, так как в «базовой» версии их не существует.

Технический разбор реализации через код

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


// Пример логики, которая должна быть в расширении или модуле
Процедура ПередЗаписьюРегистраХозрасчетный(Отказ, Движения)
    Для Каждого Движение Из Движения.Хозрасчетный Цикл
        // Находим соответствующую строку в табличной части по номеру строки или ключу связи
        СтрокаТЧ = ЭтотОбъект.Товары.Найти(Движение.НомерСтроки, "НомерСтроки");
        Если СтрокаТЧ <> Неопределено Тогда
            // Подставляем склад из строки ТЧ в субконто проводки
            ИндексСклада = 1; // Предположим, что Склады - это первое субконто на счете
            Движение.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = СтрокаТЧ.Склад;
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Если после обновления этот код перестал выполняться, система по умолчанию берет значение из шапки документа, так как стандартный алгоритм 1С:БП 3.0 не предполагает вариативности складов внутри одного документа.

Как исправить ситуацию: пошаговая инструкция

Рассмотрим порядок действий для восстановления корректной работы программы:

  1. Проверьте статус расширений: Перейдите в меню «Настройки» — «Расширения». Убедитесь, что галочка «Активно» стоит и нет сообщений о критических ошибках применимости.
  2. Анализ «Функциональности»: Хотя настройка Функциональность — Запасы — Складской учет включает ведение учета по складам, она не добавляет поле в таблицу. Если поле есть — возвращаемся к пункту о доработках.
  3. Обратитесь к конфигуратору: Если вы программист, сравните текущий модуль объекта документа ПоступлениеТоваровУслуг с резервной копией до обновления. Ищите изменения в процедурах ИнициализироватьДанныеДокумента или СформироватьДвиженияХозрасчетный.
  4. Проверка отраслевого решения: Если у вас специализированная база, убедитесь, что вы загрузили файл обновления именно от своего разработчика (например, с портала ИТС Отраслевой), а не типовой дистрибутив БП.

Альтернативные способы без программирования

Если восстановить доработку невозможно или вы решили вернуться на «типовые рельсы», проанализируем, как 1С рекомендует решать задачу поступления на разные склады штатными средствами:

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

← На главную