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

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

В процессе работы с 1С:Бухгалтерия 3.0 часто возникает необходимость изменения аналитики учета. Одним из таких кейсов является включение учета по складам на счете 41 «Товары», если ранее он не велся. Эта задача может показаться нетривиальной, особенно когда в базе уже накопились данные за прошлые периоды. В данном руководстве мы подробно рассмотрим, как активировать учет по складам, как поступить с историческими данными и как создать обработку для переноса остатков с «пустого» склада на конкретный.

Введение в проблему и ее актуальность

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

Пошаговая активация учета по складам в 1С:Бухгалтерия 3.0

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

  1. Перейдите в раздел «Главное».
  2. Выберите пункт «План счетов» (или «Администри» — «Параметры учета»).
  3. В открывшемся окне найдите ссылку «Настройка плана счетов».
  4. Перейдите на вкладку «Учет запасов».
  5. Установите флажок «По складам (местам хранения)».
  6. Выберите вариант учета:
    • «По количеству»: Если вам достаточно контролировать наличие товаров на разных складах только в количественном выражении. При этом стоимость списания товаров будет рассчитываться как средняя стоимость по всей номенклатуре на всех складах.
    • «По количеству и сумме»: Если вы хотите вести не только количественный, но и суммовой учет в разрезе складов, что позволит определять стоимость списания товаров для каждого склада отдельно. Этот вариант является более полным и предпочтительным для детального анализа.

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

Стратегия работы с остатками и оборотами за прошлые периоды

После активации учета по складам возникает вопрос: что делать с уже закрытыми периодами, в которых субконто «Склад» было пустым? Здесь есть несколько подходов:

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

    Этот подход гарантирует отсутствие «пустых» складов, но требует больше операций и внимательности.

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

Создание обработки для переноса остатков с «пустого» склада

Мы рассмотрим самый распространенный и удобный вариант — создание внешней обработки, которая сформирует бухгалтерскую операцию по переносу остатков с «пустого» склада на указанный «Основной склад». Это позволит исправить ситуацию, не затрагивая прошлые закрытые периоды.

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

Пример кода обработки

Предположим, у нас есть внешняя обработка с формой, содержащей реквизиты: Организация (тип СправочникСсылка.Организации), Счет (тип ПланСчетовСсылка.Хозрасчетный), Дата (тип Дата) и кнопка Заполнить, которая вызывает процедуру ЗаполнитьНаСервере().

Шаг 1: Запрос к регистру бухгалтерии

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


&НаСервере
Процедура ЗаполнитьНаСервере()
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ХозрасчетныйОстатки.Счет КАК Счет,
        |    ХозрасчетныйОстатки.Субконто1 КАК Номенклатура,
        |    ХозрасчетныйОстатки.Субконто2 КАК Склад,
        |    ХозрасчетныйОстатки.Организация КАК Организация,
        |    ХозрасчетныйОстатки.КоличествоОстатокДт КАК КоличествоОстатокДт,
        |    ХозрасчетныйОстатки.СуммаОстатокДт КАК СуммаОстатокДт
        |ИЗ
        |    РегистрБухгалтерии.Хозрасчетный.Остатки(&ДатаСведений, Счет = &Счет, , ) КАК ХозрасчетныйОстатки
        |ГДЕ
        |    ХозрасчетныйОстатки.Счет = &Счет
        |    И ХозрасчетныйОстатки.Организация = &Организация
        |    И ХозрасчетныйОстатки.Субконто2 = &Субконто2"; // Ищем пустую ссылку
    
    Запрос.УстановитьПараметр("Организация", Объект.Организация);
    Запрос.УстановитьПараметр("Счет", Объект.Счет);
    Запрос.УстановитьПараметр("Субконто2", Справочники.Склады.ПустаяСсылка()); // Передаем пустую ссылку склада
    Запрос.УстановитьПараметр("ДатаСведений", НачалоДня(Объект.Дата));
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    // ... дальнейшая часть кода ...
КонецПроцедуры

В этом запросе мы выбираем счет, номенклатуру (Субконто1), текущее значение склада (Субконто2), организацию и количество/сумму остатка по дебету. Параметр &Субконто2 устанавливается как Справочники.Склады.ПустаяСсылка(), что позволяет найти все остатки, для которых склад не был указан.

Шаг 2: Формирование движений в операции

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


&НаСервере
Процедура ЗаполнитьНаСервере()
    // ... Начало процедуры с запросом ...
    
    РезультатЗапроса = Запрос.Выполнить().Выгрузить();
    
    // Создаем документ "Операция (бухгалтерский и налоговый учет)"
    Операция = Документы.ОперацияБухгалтерская.СоздатьДокумент();
    Операция.Дата = Объект.Дата;
    Операция.Организация = Объект.Организация;
    Операция.Содержание = "Перенос остатков по счету 41 с 'пустого' склада на 'Основной склад'";
    
    // Получаем набор записей регистра Хозрасчетный
    НаборДвижений = Операция.Движения.Хозрасчетный;
    НаборДвижений.Очистить(); // Очищаем существующие движения, если они есть
    
    // Определяем Основной склад, на который будем переносить
    ОсновнойСклад = Справочники.Склады.НайтиПоНаименованию("Основной склад");
    Если ОсновнойСклад.Пустая() Тогда
        ВызватьИсключение "Не найден 'Основной склад'. Проверьте название или создайте его.";
    КонецЕсли;

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

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

КонецПроцедуры

Пояснения к коду:

  1. Мы создаем новый документ типа ОперацияБухгалтерская, заполняем его шапку (дата, организация, содержание).
  2. Для записи движений используем НаборДвижений = Операция.Движения.Хозрасчетный;. Это более корректный способ работы с движениями документа.
  3. Транзитный счет: Мы ввели ПланыСчетов.Хозрасчетный.ТранзитныйСчет. В 1С:Бухгалтерии 3.0 нет явного счета 000. В зависимости от настроек вашего плана счетов и специфики, вы можете использовать, например, счет 76.09 "Прочие расчеты с разными дебиторами и кредиторами" или создать специальный вспомогательный счет (например, 00) с соответствующими настройками, чтобы он не влиял на баланс. Если такого нет, можно использовать, например, технический счет 76.09 (Прочие расчеты) временно. Суммы по дебету и кредиту этого счета в рамках одной операции будут равны, поэтому он не повлияет на отчетность.
  4. Для каждого элемента из результата запроса формируются две проводки:
    • Кредит: Списывает количество и сумму с основного счета 41 (Объект.Счет) и субконто "пустая ссылка на Склад" в дебет транзитного счета.
    • Дебет: Оприходует то же количество и сумму с кредита транзитного счета на основной счет 41 (Объект.Счет), но уже с указанием ОсновнойСклад.
  5. НовСтрока.СубконтоДт.Номенклатура = ТекСтрока.Номенклатура; и аналогично для кредита: мы заполняем субконто "Номенклатура".
  6. НовСтрока.СубконтоДт.Склады = ОсновнойСклад; и НовСтрока.СубконтоКт.Склады = Справочники.Склады.ПустаяСсылка();: Здесь мы явно указываем склад, на который переносим, и пустой склад, с которого списываем.
  7. Операция.Записать(РежимЗаписиДокумента.Проведение);: Записываем и проводим созданный документ. Это гарантирует, что все движения будут сформированы и учтены в регистрах.

Важные нюансы и дополнительные рекомендации

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

    Если ваше обособленное подразделение ведет учет на общем балансе, то описанный выше метод с переносом остатков по складам будет вполне применим.

  5. Документирование изменений: Крайне рекомендуется составить внутренний документ (служебную записку или приказ), в котором будет изложена причина перехода на учет по складам, выбранный метод переноса остатков и дата начала ведения учета по новой аналитике. Это поможет при внутренних проверках или при взаимодействии с налоговыми органами, чтобы объяснить логику изменений в учетной системе.
  6. Возможные ошибки на счете 41: После переноса остатков и начала работы с новой аналитикой по складам внимательно отслеживайте состояние счета 41. Распространенные ошибки могут включать:
    • Отрицательные остатки на складах: возникают при неправильном списании или отсутствии достаточного количества на конкретном складе.
    • Расхождения между бухгалтерским и складским учетом: могут быть из-за ошибок в документах поступления/реализации, инвентаризации, некорректных ручных корректировок.
    • Неверное указание счетов учета номенклатуры.

    Для выявления таких ошибок регулярно формируйте оборотно-сальдовую ведомость по счету 41 с детализацией по субконто «Склады» и «Номенклатура».

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

← На главную