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

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

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

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

---

Почему «плывет» ОСВ при перепроведении прошлых периодов?

Давайте проанализируем внутренние механизмы платформы «1С:Предприятие 8». В настройках плана счетов (находится по пути: Главное — Настройки — План счетов — Настройка учета запасов) при включении тумблера «По складам» система предлагает два режима:

  1. «По количеству» — в разрезе складов фиксируются только физические остатки (штуки, килограммы, метры). Себестоимость при этом рассчитывается усредненно по всей организации.
  2. «По количеству и сумме» — себестоимость ТМЦ рассчитывается локально для каждого конкретного склада.

Если организация ранее вела учет без разделения по складам, а при переходе выбрала вариант «По количеству и сумме», то последующее перепроведение исторических документов полностью перестроит алгоритм списания себестоимости. Программа начнет искать партии и среднюю стоимость товаров не в целом по фирме, а на конкретных складах, которых в старых документах просто не было. Как результат — себестоимость списания исказится, изменятся обороты по дебету и кредиту счетов 10, 41, 43, 90, а ранее сданные декларации по налогу на прибыль или УСН потеряют актуальность.

---

Коварная ловушка «пустого склада»

Выясним причину еще одной популярной проблемы. Допустим, мы просто включили опцию учета по складам, но решили не перепроводить старые документы. В этот момент на счетах учета запасов (10, 41, 43) добавляется новое субконто — Склады.

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

Попытка перенести эти товары на вновь созданный реальный склад стандартным документом Перемещение товаров закончится неудачей. В этом документе поле «Отправитель» является обязательным для заполнения, и выбрать туда «пустоту» система не позволит. При проведении программа начнет искать остатки на конкретном выбранном складе, не увидит их (ведь они числятся на «пустом») и выдаст ошибку о нехватке запасов.

---

Скрытая особенность интерфейса «1С:БП 3.0»

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

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

---

Метод А. Перенос остатков через технический счет 000 (без перепроведения)

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

Шаг 1. Фиксация даты перехода.
Выбираем дату начала ведения складского учета. Пусть это будет 1 января нового года. Все операции до этой даты должны остаться неизменными.

Шаг 2. Обнуление «пустого склада».
На последнюю секунду старого года (31 декабря в 23:59:59) создаем документ Списание товаров. В него подбираем все остатки ТМЦ, которые числятся в системе. В документе необходимо включить ручную корректировку проводок и заменить дебет счета списания (обычно 94 или 91) на вспомогательный технический счет 000. Таким образом, мы списываем все ценности с «пустого склада» в корреспонденции со счетом 000, не увеличивая коммерческие расходы организации.

Шаг 3. Включение функциональной опции.
Переходим в настройки плана счетов и активируем учет по складам (по количеству или по количеству и сумме).

Шаг 4. Оприходование на реальные склады.
На первую секунду нового года (1 января в 00:00:01) создаем документ Оприходование товаров. В табличную часть копируем все позиции из ранее созданного списания, но теперь в шапке или строках документа четко указываем наши новые реальные склады, на которые физически поступает товар. В проводках этого документа также через ручную корректировку заменяем счет доходов (91.01) на вспомогательный счет 000. Баланс восстанавливается, обороты по счету 000 схлопываются в ноль, а товары теперь числятся на конкретных складах.

---

Метод Б. Использование внешних обработок (для крупных баз)

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

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


Процедура ЗаполнитьСкладВПроводках(ВыбранныйСклад, ДатаНачала, ДатаКонца)
    
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ РАЗЛИЧНЫЕ
        |	ХозрасчетныйДвижения.Регистратор КАК Регистратор
        |ИЗ
        |	РегистрБухгалтерии.Хозрасчетный КАК ХозрасчетныйДвижения
        |ГДЕ
        |	ХозрасчетныйДвижения.Период МЕЖДУ &ДатаНачала И &ДатаКонца
        |	И (ХозрасчетныйДвижения.СчетДт.ВидыСубконто.ВидСубконто = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады)
        |		ИЛИ ХозрасчетныйДвижения.СчетКт.ВидыСубконто.ВидСубконто = ЗНАЧЕНИЕ(ПланВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады))";
        
    Запрос.УстановитьПараметр("ДатаНачала", ДатаНачала);
    Запрос.УстановитьПараметр("ДатаКонца", ДатаКонца);
    
    РезультатЗапроса = Запрос.Выполнить();
    Выборка = РезультатЗапроса.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
        НаборЗаписей = РегистрыБухгалтерии.Хозрасчетный.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
        НаборЗаписей.Прочитать();
        
        Модифицирован = Ложь;
        Для Каждого Запись Из НаборЗаписей Цикл
            
            // Проверяем Дебет
            Если Запись.СчетДт.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады) <> Неопределено Тогда
                Если Не ЗначениеЗаполнено(Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады]) Тогда
                    Запись.СубконтоДт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = ВыбранныйСклад;
                    Модифицирован = Истина;
                КонецЕсли;
            КонецЕсли;
            
            // Проверяем Кредит
            Если Запись.СчетКт.ВидыСубконто.Найти(ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады) <> Неопределено Тогда
                Если Не ЗначениеЗаполнено(Запись.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады]) Тогда
                    Запись.СубконтоКт[ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные.Склады] = ВыбранныйСклад;
                    Модифицирован = Истина;
                КонецЕсли;
            КонецЕсли;
            
        КонецЦикла;
        
        Если Модифицирован Тогда
            НаборЗаписей.Записать();
        КонецЕсли;
        
    КонецЦикла;
    
КонецПроцедуры

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

---

Критический нюанс: риски раздельного учета НДС

Если ваша организация ведет раздельный учет НДС (например, осуществляет экспортные операции, применяет ставку 0% или совмещает разные режимы налогообложения), включение складов задним числом таит в себе скрытую угрозу.

В «1С:Бухгалтерия 3.0» партионный учет для целей НДС контролируется по специальному регистру накопления Раздельный учет НДС. Измерения записей этого регистра жестко связаны со справочником Ключи аналитики учета затрат. В состав этого ключа входят: номенклатура, партия, счет учета и склад.

Если складской учет включается посреди года:

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

---

Подведем итоги

Внедрение складского учета в уже работающей базе — ответственный шаг. Прежде чем выполнять любые действия в рабочей базе, обязательно создайте резервную копию или разверните тестовую копию базы данных. Протестируйте предложенные варианты (перенос через счет 000 или заполнение субконто обработкой), убедитесь в отсутствии расхождений по ОСВ и только после этого переносите изменения в рабочую среду.

← На главную