Администрирование · 9 мин
Как поменять год в дате в 1С
Разбираем, как поменять год в дате документа, справочника и через запрос в 1С. Ручное редактирование, обработки, код на встроенном языке и проверка результата.
Изменить год в дате в 1С может понадобиться в разных ситуациях: оператор ошибся при вводе документа, данные загружены из внешнего файла с неверным периодом, тестовая база требует «переноса» на другой год. В зависимости от задачи применяются разные инструменты — от ручного редактирования поля до программного изменения через встроенный язык или консоль запросов.
Простейший случай — одиночный документ или элемент справочника, где год исправляется вручную прямо в форме. Более сложные сценарии — массовая замена года в тысячах записей регистров, корректировка дат при переносе данных между базами, изменение рабочей даты сеанса. Для каждого из них есть свой безопасный порядок действий.
Важно понимать: дата в 1С хранится как единое значение типа «Дата» (дата и время), и «поменять год» означает создать новое значение с тем же днём и месяцем, но другим годом. Встроенной кнопки «сменить год» в платформе нет, поэтому используются функции языка запросов и встроенного языка.
Ручное изменение года в документе или справочнике
Самый частый сценарий — исправить год в конкретном документе. Откройте документ, щёлкните по полю «Дата» и введите нужное значение в формате ДД.ММ.ГГГГ. Можно ввести только день и месяц, а год дописать отдельно — платформа корректно распознает ввод. После исправления документ нужно перепровести, чтобы движения по регистрам обновились.
Если документ проведён, простое изменение даты без перепроведения оставит старые записи в регистрах. Поэтому порядок такой: изменили дату → нажали «Провести» или «Провести и закрыть». Если документ находится в закрытом периоде (установлена дата запрета изменения данных), платформа выдаст сообщение об ошибке и не даст сохранить изменения.
Особенности при смене года на более ранний или поздний
При переносе документа в другой год проверьте нумерацию: номер документа может конфликтовать с уже существующими номерами целевого периода. В типовых конфигурациях нумерация обычно периодическая в пределах года, поэтому после перемещения номер может потребовать ручной корректировки. Также учтите, что документ попадёт в другой отчётный период — это влияет на регламентированную отчётность, оборотно-сальдовые ведомости и закрытие месяца.
Изменение рабочей даты сеанса
Иногда под «поменять год в дате» понимают смену рабочей даты, которую 1С подставляет по умолчанию в новые документы. В клиентских приложениях это делается через меню: Сервис → Параметры (в старых интерфейсах) или через настройки сеанса в управляемом приложении, если конфигурация это поддерживает. В файловых базах рабочая дата по умолчанию совпадает с системной датой компьютера.
Если новые документы создаются с неверным годом, первым делом проверьте дату и часовой пояс операционной системы и сервера 1С. Расхождение системного времени между клиентом и сервером — типичная причина «самопроизвольно» меняющихся дат. Вручную заданная рабочая дата действует только в текущем сеансе и не меняет даты уже созданных документов.
Программная замена года на встроенном языке
Для изменения года в коде используется сборка новой даты из компонентов: функции Год(), Месяц(), День() извлекают части исходной даты, а конструктор Дата() формирует новое значение. Типовой приём выглядит так:
ИсходнаяДата = ДокументОбъект.Дата;
НоваяДата = Дата(2026, Месяц(ИсходнаяДата), День(ИсходнаяДата),
Час(ИсходнаяДата), Минута(ИсходнаяДата), Секунда(ИсходнаяДата));
ДокументОбъект.Дата = НоваяДата;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
Альтернатива — функция ДобавитьМесяц(ИсходнаяДата, 12) для сдвига ровно на год вперёд или ДобавитьМесяц(ИсходнаяДата, -12) на год назад. Этот способ короче, но помните про 29 февраля: при сдвиге 29.02 високосного года на невисокосный результатом будет 28 февраля или 1 марта в зависимости от логики функции — проверяйте такие даты отдельно.
НоваяДата = ДобавитьМесяц(ИсходнаяДата, 12); // сдвиг на год вперёдМассовая замена года через запрос и обработки
Когда год нужно поменять в сотнях или тысячах записей, ручное редактирование неприемлемо. В языке запросов для этого есть функция ДОБАВИТЬКДАТЕ(Дата, ГОД, 1) — она работает и в консоли запросов, и в текстах модулей. Запросом можно сначала отобрать записи с ошибочным годом, а затем обойти результат и записать исправленные значения.
Практический порядок массовой замены: сделать резервную копию базы, сформировать запросом список затрагиваемых объектов, выполнить изменение в транзакции на тестовой копии, сверить количество изменённых записей с ожидаемым, и только потом повторить на рабочей базе. Для регистров сведений и накопления изменение делается через наборы записей, для документов — через объекты с перепроведением.
- 1Создайте резервную копию базы или восстановите копию для теста
- 2Запросом отберите записи с ошибочным годом и зафиксируйте их количество
- 3Выполните замену через ДОБАВИТЬКДАТЕ или пересборку даты в коде
- 4Перепроведите затронутые документы
- 5Сверьте количество изменённых записей и итоговые остатки с исходными
Групповая обработка в типовых конфигурациях
В типовых конфигурациях на БСП есть обработка «Групповое изменение реквизитов» (раздел «Администрирование» → «Обслуживание»). Она позволяет отобрать документы по отбору и изменить реквизит «Дата» у всех найденных объектов. Это безопаснее самописного кода для неподготовленного пользователя, но произвольную формулу «тот же день, другой год» она применяет ограниченно — чаще через неё задают конкретную дату всем объектам.
Типичные ошибки и риски
Главный риск массовой замены года — нарушение последовательности документов и рассогласование остатков. Если изменить дату проведённого документа без перепроведения, его движения останутся на старой дате, и отчёты покажут расхождения. Вторая типичная ошибка — изменение дат в закрытых периодах, за которые уже сдана отчётность: это может привести к юридически значимым искажениям учёта.
Проверка результата после изменения
После любой замены года убедитесь, что изменения применились полностью и не сломали смежные данные. Проверьте количество обработанных записей, перепроведение документов, итоги по регистрам и корректность нумерации в целевом периоде.
Как проверить результат
Совпадает с количеством отобранных до замены
Часть записей не изменилась — ищите ошибки прав или блокировки
Записи регистров стоят на новой дате
Движения остались на старой дате — документ не перепроведён
Остатки по периодам согласованы, нет отрицательных остатков
Появились минусы или разрывы последовательности
Нет дублей номеров в целевом году
Дублирующиеся номера — требуется ручная корректировка
Если проверка выявила расхождения, не пытайтесь «докрутить» данные повторными изменениями — восстановите базу из резервной копии и повторите процедуру с исправленным алгоритмом. Это быстрее и безопаснее, чем поиск накопившихся рассогласований в живой базе.
Частые вопросы
Как поменять год в дате документа, который находится в закрытом периоде?
Нужно временно снять или сдвинуть дату запрета изменения данных (Администрирование → Поддержка и обслуживание → Даты запрета изменения данных), внести изменение, перепровести документ и вернуть запрет на место. Делать это должен пользователь с правами администратора, а само изменение в закрытом периоде следует согласовать с ответственным за учёт.
Можно ли поменять год сразу у всех документов одного вида?
Да, через обработку «Групповое изменение реквизитов» в типовых конфигурациях или программно — обходом выборки из запроса с записью каждого объекта. Перед массовой операцией обязательно сделайте копию базы и подсчитайте количество затрагиваемых документов, чтобы потом сверить результат.
Чем отличается ДОБАВИТЬКДАТЕ от ДобавитьМесяц?
ДОБАВИТЬКДАТЕ — функция языка запросов, работает внутри запроса и позволяет добавлять годы, месяцы, дни и другие единицы. ДобавитьМесяц — функция встроенного языка, сдвигает дату на указанное число месяцев (12 месяцев = год). Для сдвига на год обе дают сопоставимый результат, но применяются в разных контекстах.
Что будет с датой 29 февраля при переносе на невисокосный год?
При сдвиге через ДобавитьМесяц или ДОБАВИТЬКДАТЕ дата 29 февраля будет преобразована в ближайшую корректную дату невисокосного года. Такие записи нужно выявить запросом заранее и обработать индивидуально — например, перенести на 28 февраля или 1 марта по согласованию с пользователями.
Почему новые документы создаются с неправильным годом?
Чаще всего причина в неверной системной дате компьютера или сервера 1С либо вручную установленной рабочей дате сеанса. Проверьте дату и часовой пояс операционной системы, а также настройки сеанса в 1С. После исправления системного времени новые документы будут создаваться с правильной датой.
Нужно ли перепроводить документ после смены года в дате?
Да, обязательно. Движения документа по регистрам привязаны к моменту времени документа, и без перепроведения они останутся на старой дате. Это приведёт к расхождениям в отчётах и остатках. При записи используйте режим проведения, а после массовых изменений — перепроведите все затронутые документы.