Как перенести суммы с пустого склада в 1С:Бухгалтерия 3.0 после включения учета по складам?

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

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

В результате в Оборотно-сальдовой ведомости (ОСВ) по счетам 41.01 (Товары на складах) или 10 (Материалы) образуется неприятная картина: количество товаров успешно числится на выбранном новом складе (например, «Основной склад»), а вся их себестоимость (суммы) «зависает» на пустых строках (в субконто отображаются пустые скобки <...>). Проведение новых документов списания или реализации в такой ситуации начинает порождать отрицательные остатки по суммам или некорректно рассчитывать себестоимость. Для своевременного обнаружения таких ошибок подойдет отчет для контроля отрицательных остатков товаров.

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

---

Выясняем причину: почему суммы «зависли» на пустом складе?

Давайте проанализируем ситуацию с технической точки зрения. До активации складского учета аналитический разрез (субконто) Склады на счетах учета ТМЦ был просто отключен или отсутствовал. Программа записывала все движения только в разрезе номенклатуры (и партий, если включен партионный учет). Физически в базе данных поле складских остатков оставалось незаполненным (значение Null или пустая ссылка).

Когда мы включаем опцию складского учета «по количеству и сумме»:

  1. Субконто Склады добавляется на счета учета (например, 41.01).
  2. Для всех новых документов поле «Склад» становится обязательным к заполнению.
  3. При проведении новых документов реализации программа пытается списать количество и сумму с указанного в документе склада (например, «Основной склад»).
  4. Поскольку количество на этом складе уже есть (например, мы ввели его остатком или перенесли), программа списывает его без проблем. Но так как суммовой остаток числится по пустому складу, себестоимость списания по новому складу рассчитывается некорректно либо уходит в «красноту» (минусовые значения по суммам).

Перепроведение документов за прошлые периоды могло бы решить проблему, автоматически подставив склад в старые проводки. Но в реальных базах с большим объемом данных и закрытыми прошлыми периодами (сданным НДС и налогом на прибыль) перепроводить документы категорически нельзя — это гарантированно приведет к искажению и «расползанию» учета.

---

Вариант 1. Пошаговый перенос остатков через документ «Операция, введенная вручную»

Рассмотрим первый метод, который идеально подходит, если список позиций номенклатуры, по которым зависли суммы, относительно небольшой (до 100-200 позиций). Этот способ полностью безопасен и не затрагивает прошлые периоды. Для автоматизации этого процесса можно использовать обработку для автоматического переноса остатков на другое субконто.

Выполнять перенос необходимо строго на дату, предшествующую началу ведения детального складского учета (например, если складской учет внедряется с 1 января нового года, операцию делаем 31 декабря предыдущего года в 23:59:59).

Разберем процесс по шагам:

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

Таким образом, мы выполняем внутреннюю проводку по счету 41.01. Общий баланс и обороты по счету в целом по предприятию не изменятся, но внутри субконто произойдет «схлопывание»: сумма уйдет с пустого аналитического разреза и зачислится на конкретный склад.

---

Вариант 2. Метод «Списание и Оприходование» (Официальная методика)

Если позиций номенклатуры слишком много для ручного ввода в проводках, мы можем использовать стандартные складские документы конфигурации. Этот метод основан на транзитном счете 94 (Недостачи и потери от порчи ценностей) или 000 (Вспомогательный счет).

Проанализируем пошаговый алгоритм реализации этого метода:

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

    Дт 94 — Кт 41.01 (с пустым складом, так как настройка отключена).

    Выделите все строки в табличной части созданного документа и скопируйте их в буфер обмена (комбинация клавиш Ctrl + C или через контекстное меню).
  3. Теперь включите настройку складского учета «по количеству и сумме» в параметрах учета.
  4. Создайте документ «Оприходование товаров» той же датой, но на одну секунду позже документа списания. В шапке документа выберите ваш реальный склад-получатель. Вставьте скопированные строки в табличную часть (комбинация клавиш Ctrl + V). Документ сформирует проводки:

    Дт 41.01 (Основной склад) — Кт 91.01 (Прочие доходы).

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

    Дт 91.01 — Кт 94.

После проведения этой цепочки документов счета 94 и 91.01 закроются в ноль, а вся себестоимость товаров окажется на нужном складе.

---

Вариант 3. Использование внешних обработок (Решение для программистов)

Для крупных баз данных ручные корректировки неприменимы. Если вы обладаете навыками конфигурирования или можете привлечь программиста 1С, проблему можно решить автоматизированным путем. Существует два типа специализированных обработок:

  1. Создание документов корректировки: Скрипт программно считывает остатки по регистру бухгалтерии Хозрасчетный по пустым субконто на определенную дату и автоматически формирует документ ОперацияБух со всеми необходимыми проводками переноса.
  2. Прямая корректировка проводок (без перепроведения): Это самый технологичный способ. Обработка находит все исторические проводки документов поступления за прошлые периоды и напрямую записывает нужный склад в измерение регистра бухгалтерии. При этом сами документы не перепроводятся, последовательность партионного учета не нарушается, но аналитика в базе становится корректной.

Посмотрим на пример кода, который иллюстрирует, как можно программно перезаписать субконто «Склад» в проводках конкретного документа-регистратора без его перепроведения:


// Пример программного заполнения пустого субконто "Склад" в проводках
НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(ДокументСсылка);
НаборЗаписей.Прочитать();

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

// Записываем измененный набор проводок в базу данных без проведения документа
НаборЗаписей.Записать();

---

Важные нюансы, о которых нужно помнить

Прежде чем приступать к исправлению остатков любым из перечисленных методов, обязательно обратите внимание на следующие особенности работы платформы 1С:

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

← На главную