В процессе эксплуатации 1С:Бухгалтерия 3.0 пользователи могут столкнуться с неприятной ситуацией: в карточке основного средства перестает отображаться документ-основание (например, «Ввод остатков ОС»), из-за чего становится невозможно выполнить перемещение или иные операции с активом. Рассмотрим подробнее, почему это происходит, проанализируем технические причины сбоя и разберем по шагам методы восстановления данных, даже если период давно закрыт.
Чаще всего корень проблемы кроется в некорректной работе программных обработок, предназначенных для массового изменения реквизитов или состояний ОС. Проанализируем фрагмент кода, который стал причиной сбоя в рассматриваемой ситуации:
НаборЗаписей = РГ.СоздатьНаборЗаписей;
НаборЗаписей.Отбор.Регистратор.Установить(Выборка.Регистратор);
НоваяЗапись = НаборЗаписей.Добавить;
// ... установка полей записи ...
НаборЗаписей.Записать(Истина);
Выясним причину, почему этот код «затирает» данные. В системе 1С при работе с регистрами, подчиненными регистратору, метод Записать(Истина) выполняет полную замену всех существующих записей по указанному регистратору на те, которые вы добавили в набор в текущем сеансе кода. Поскольку документ Ввод остатков ОС обычно содержит сведения о десятках или сотнях объектов, а в коде выше мы добавляем в набор запись только для одного конкретного ОС, система послушно удаляет записи по всем остальным активам и оставляет только одну новую строку. В результате остальные основные средства теряют связь с документом-основанием в регистре Состояния ОС организаций.
Если данные в регистре сведений были повреждены или восстановлены неверной датой, это может привести к следующим проблемам:
Перемещение ОС при проведении анализирует текущее состояние актива. Если запись о принятии к учету отсутствует или ее дата позже даты перемещения, программа выдаст ошибку.Состояния ОС организаций относится к будущему периоду (например, вы ввели исправление 2023 годом для данных 2019 года), то при попытке перепровести закрытие месяца за прошлые периоды амортизация перестанет начисляться.Если период 2019 года (или любой другой прошлый период) закрыт, и мы не можем просто перепровести документ ввода остатков, воспользуемся механизмом ручной корректировки регистров. Посмотрим, как это сделать правильно:
Состояния ОС организаций.Периода и Даты состояния необходимо указать дату фактического ввода остатков в 2019 году. В поле Регистратор выбираем тот самый исходный документ ввода остатков.Этот метод позволяет «подложить» нужную запись в регистр, не перепродавая сам документ и не меняя его движения напрямую, что безопасно для закрытого периода.
Для более чистого исправления в 1С:Бухгалтерия 3.0 лучше использовать специализированный документ Корректировка записей регистров. Рассмотрим алгоритм работы с ним:
Этот документ позволяет вносить изменения напрямую в любые регистры системы. Преимущество перед обычной ручной операцией заключается в том, что вы можете четко видеть, какие именно движения вы корректируете, и система сохраняет ссылку на исходный документ-регистратор в структуре записи.
Рассмотрим пошагово:
Корректировка записей регистров.Состояния ОС организаций и Первоначальные сведения ОС (бухгалтерский учет) (если они тоже пострадали).Чтобы избежать подобных ситуаций в будущем при написании собственных обработок, проанализируем, как следовало изменить код. Если нам нужно поменять дату состояния только у одного ОС, не затронув остальные записи того же документа, мы должны сначала прочитать все существующие записи в набор:
НаборЗаписей = РегистрыСведений.СостоянияОСОрганизаций.СоздатьНаборЗаписей();
НаборЗаписей.Отбор.Регистратор.Установить(НужныйРегистратор);
НаборЗаписей.Прочитать(); // Считываем ВСЕ записи по этому документу
Для Каждого Запись Из НаборЗаписей Цикл
Если Запись.ОсновноеСредство = Объект.ОсновноеСредство Тогда
Запись.ДатаСостояния = Объект.НоваяДата;
Запись.Период = Объект.НоваяДата;
КонецЕсли;
КонецЦикла;
НаборЗаписей.Записать(Истина); // Записываем измененный набор полностью
Именно метод НаборЗаписей.Прочитать() является ключевым: он загружает в память все строки, связанные с документом. После этого мы меняем только нужную нам строку и записываем весь набор обратно. Таким образом, данные по другим основным средствам, входящим в этот же документ ввода остатков, останутся в целости и сохранности.
Резюме: Если вы обнаружили, что в справочнике ОС пропали ссылки на документы, в первую очередь проверьте регистр Состояния ОС организаций. Восстановление следует проводить исторической датой события, используя документ Корректировка записей регистров или Операция, введенная вручную, чтобы не нарушить логику начисления амортизации в будущих периодах.