Как правильно сторнировать принятие к учету основного средства, если период уже закрыт?

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

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

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

Почему стандартное сторнирование не всегда работает?

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

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

Программная очистка непериодических регистров

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

Рассмотрим пример кода, который позволяет очистить записи в конкретном регистре по заданному регистратору:


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

// Устанавливаем фильтр по ошибочному документу (регистратору)
НаборЗаписей.Отбор.Регистратор.Установить(СсылкаНаОшибочныйДокумент);

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

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

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


Процедура ОчиститьРегистрыОС(ОшибочныйДокумент)
    
    // Список регистров, которые нужно очистить
    МассивРегистров = Новый Массив;
    МассивРегистров.Добавить("НоменклатураОсновныхСредств");
    МассивРегистров.Добавить("СостоянияОС");
    МассивРегистров.Добавить("СостоянияОСОрганизаций");
    МассивРегистров.Добавить("ПараметрыАмортизацииОСБухгалтерскийУчет");
    МассивРегистров.Добавить("ПервоначальныеСведенияОСБухгалтерскийУчет");
    
    Для Каждого ИмяРегистра Из МассивРегистров Цикл
        Набор = РегистрыСведений[ИмяРегистра].СоздатьНаборЗаписей();
        Набор.Отбор.Регистратор.Установить(ОшибочныйДокумент);
        Набор.Записать();
        Сообщить("Регистр " + ИмяРегистра + " очищен успешно.");
    КонецЦикла;
    
КонецПроцедуры

Использование "Группового изменения реквизитов" без программирования

Разберем ситуацию, когда написать код нет возможности. В типовых конфигурациях 1С (например, БП 3.0) есть мощный инструмент — обработка Групповое изменение реквизитов. С ее помощью также можно попытаться воздействовать на регистры.

  1. Перейдем в раздел Администрирование — Обслуживание — Корректировка данных.
  2. Выберем пункт Групповое изменение реквизитов.
  3. В поле "Выбрать элементы" найдем нужный регистр сведений (например, Номенклатура основных средств).
  4. В настройках отбора ОБЯЗАТЕЛЬНО укажем Регистратор Равно [Ваш ошибочный документ].
  5. В дополнительных параметрах обработки (кнопка "Дополнительные параметры") установим флажок "Показывать служебные реквизиты" и "Режим разработчика". Это позволит нам увидеть технические поля. Подобные повторяющиеся действия в интерфейсе 1С можно автоматизировать с помощью визуального конструктора роботов без написания кода.

Внимание: Будьте предельно осторожны при использовании этого метода. Ошибка в отборе может привести к потере данных по всему регистру. Чтобы обезопасить систему, стоит автоматически заархивировать базы 1С перед техническим обслуживанием или внесением массовых изменений.

Исправление ошибок налогового учета и амортизации

Проанализируем ситуацию из сообщения 17: основное средство было принято верно по стоимости, но неверно указан порядок включения стоимости в состав расходов в налоговом учете (НУ). Вместо амортизации нужно было единовременное списание. Для контроля правильности отражения таких операций можно автоматически сверить бухгалтерские и налоговые проводки между двумя базами 1С.

В этом случае, помимо сторнирования проводок по счету 02 (амортизация), нам нужно изменить состояние объекта. Если мы не хотим полностью "удалять" принятие к учету, можно пойти по следующему пути:

  1. Использовать документ Изменение состояния ОС, чтобы прекратить начисление амортизации с нужного месяца.
  2. Использовать Операцию, введенную вручную для корректировки налоговых счетов (например, КВ или затратных счетов НУ) в корреспонденции со счетом 91 или 84.
  3. Если амортизация уже начислилась за несколько месяцев, ее сторнируют проводкой Дт 20 (26, 44) Кт 02 со знаком минус в текущем периоде.

Важные регистры, которые необходимо проверить

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

Методический совет: "Вывод" на счет 08

Рассмотрим альтернативный способ. Если программное удаление записей кажется слишком рискованным, некоторые методологи рекомендуют сделать обратную проводку Дт 08.04 Кт 01.01 текущим периодом (через Операцию) и вручную создать записи в регистрах сведений, меняющие статус объекта на "Снят с учета" или "К передаче".

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

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

← На главную