К статье
Практический материал

Документы и Печать · 10 мин

Как изменить время в документах групповой обработкой в 1С

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

Массовое изменение времени в документах требуется, когда документы введены вручную с одинаковым временем, последовательность проведения нарушена, либо нужно привести регистры к правильному хронологическому порядку. Вручную открывать каждый документ долго и рискованно: легко пропустить объект или ошибиться в реквизитах. Групповая обработка решает задачу за несколько минут и снижает количество ошибок.

В типовых конфигурациях на базе Библиотеки стандартных подсистем (Управление торговлей, ERP, Комплексная автоматизация, Бухгалтерия предприятия 3.0) для этого используется стандартная обработка «Групповое изменение реквизитов». В более старых или самописных решениях применяют универсальную обработку «Групповая обработка справочников и документов» либо пишут короткий программный код.

Ниже разобраны все рабочие способы: от стандартной обработки до произвольного алгоритма, а также ограничения, проверка результата и типичные ошибки, из-за которых время меняется не так, как ожидалось.

Когда нужна групповая смена времени и что важно понять заранее

Типичные ситуации: документы загружены из внешней системы с нулевым или одинаковым временем; менеджеры вводили документы задним числом, и последовательность проведения развалилась; нужно развести документы по времени внутри одного дня для корректного расчета себестоимости или партионного учета.

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

Также учитывайте права: обработка доступна пользователям с правами администратора или с ролью, включающей групповое изменение реквизитов. Если пункта нет в меню — либо нет прав, либо конфигурация не содержит этой подсистемы.

Способ 1: стандартная обработка «Групповое изменение реквизитов»

В конфигурациях на БСП обработка находится по пути: «Администрирование» → «Обслуживание» → «Корректировка данных» → «Групповое изменение реквизитов». В некоторых конфигурациях она доступна из раздела «НСИ и администрирование». Если интерфейс отличается, обработку можно найти через «Все функции» → «Обработки».

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

Порядок действий
  1. 1
    Сделайте резервную копию базы или убедитесь, что есть актуальный бэкап
  2. 2
    Откройте «Администрирование» → «Обслуживание» → «Групповое изменение реквизитов»
  3. 3
    Выберите вид документов и настройте отбор по дате и организации
  4. 4
    В списке реквизитов отметьте «Дата» и задайте новое значение с нужным временем
  5. 5
    Нажмите «Изменить реквизиты» и дождитесь завершения
  6. 6
    Проверьте 3–5 документов из выборки: время, проведенность, движения

Ограничение стандартного способа: реквизит «Дата» содержит и день, и время. Установив новое значение, вы зададите всем отобранным документам одинаковые дату и время. Если нужно только поменять время, сохранив исходные дни, или развести документы по разному времени — потребуется произвольный алгоритм (см. ниже).

Способ 2: произвольный алгоритм внутри групповой обработки

В той же обработке «Групповое изменение реквизитов» есть режим «Выполнить произвольный алгоритм» (включается через меню «Еще» или отдельной кнопкой, в зависимости от версии БСП). Он позволяет написать код на встроенном языке, который выполнится для каждого отобранного объекта. Объект доступен в переменной Объект.

Пример: установить всем документам время 12:00:00, сохранив день:

bsl
Объект.Дата = НачалоДня(Объект.Дата) + 12 * 3600;

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

Способ 3: универсальная обработка «Групповая обработка справочников и документов»

Для конфигураций без БСП (например, старые редакции Управление торговлей 10.3, УПП, самописные решения) используется классическая универсальная обработка «Групповая обработка справочников и документов» с диска ИТС. Она открывается через «Файл» → «Открыть» и работает в обычном и управляемом приложении.

В ней выбирают тип объекта «Документы», конкретный вид, настраивают отбор, а затем на закладке «Обработка» выбирают действие «Установить реквизит» → «Дата» либо «Произвольный алгоритм». Логика та же: задать новое значение даты с нужным временем или выполнить код для каждого объекта.

Сравнение вариантов

Групповое изменение реквизитов (БСП)

Подходит для типовых конфигураций 3-й редакции; простой интерфейс, есть произвольный алгоритм. Ограничение: требует прав и наличия подсистемы БСП.

Универсальная обработка с ИТС

Подходит для старых и нетиповых конфигураций, гибкие отборы. Ограничение: нужен файл обработки, интерфейс устаревший.

Программный код (консоль кода)

Максимальная гибкость: любые условия, пакетное проведение, транзакции. Ограничение: нужны навыки разработки и осторожность.

Способ 4: программная обработка через консоль кода

Если логика сложная — например, выставить время по данным из табличной части, из связанного документа-основания или по внешнему файлу — удобнее написать код в консоли кода (обработка «Консоль кода» с ИТС) или во внешней обработке.

bsl
Запрос = Новый Запрос("ВЫБРАТЬ Ссылка ИЗ Документ.РеализацияТоваровУслуг ГДЕ Дата МЕЖДУ &Нач И &Кон");
Запрос.УстановитьПараметр("Нач", НачалоДня(ТекущаяДатаСеанса()) - 86400);
Запрос.УстановитьПараметр("Кон", КонецДня(ТекущаяДатаСеанса()));
Выборка = Запрос.Выполнить().Выбрать();
Сч = 0;
Пока Выборка.Следующий() Цикл
  Объект = Выборка.Ссылка.ПолучитьОбъект();
  Объект.Дата = НачалоДня(Объект.Дата) + 9 <em> 3600 + Сч </em> 60;
  Объект.Записать(РежимЗаписиДокумента.Проведение);
  Сч = Сч + 1;
КонецЦикла;

Ключевые моменты кода: НачалоДня() отсекает старое время, смещение в секундах задает новое; РежимЗаписиДокумента.Проведение перепроводит документ с новым моментом времени. Для больших выборок оборачивайте запись в транзакцию партиями и отключайте вывод сообщений, чтобы ускорить выполнение.

Проверка результата после обработки

Не ограничивайтесь сообщением об успешном завершении. Откройте несколько документов из выборки и сверьте дату-время в шапке. Затем сформируйте отчет по регистру (например, «Товары на складах» или оборотно-сальдовую ведомость) на дату после обработки и сравните итоги со значениями до обработки — сальдо не должно измениться, если менялось только время внутри дня.

Контрольные точки

Как проверить результат

Время в шапке документов
Норма

Соответствует заданному, день не изменился

Тревожный признак

Сбросился день или время не применилось — проверьте формулу алгоритма

Проведенность документов
Норма

Документы остались проведенными, движения есть

Тревожный признак

Документы сняты с проведения или ошибки записи в журнале

Итоги по регистрам
Норма

Сальдо на конец дня не изменилось

Тревожный признак

Итоги «поплыли» — восстановите последовательность или откатите копию

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

Типичные ошибки и ограничения

Типичные ошибки
01
Задать новое значение реквизита «Дата» целиком — все документы получат одинаковый день и время, исходные даты потеряются
02
Не настроить отбор — обработка затронет все документы вида за все периоды, включая закрытые
03
Менять время в документах закрытого периода — запись не выполнится из-за даты запрета, либо изменится прошлая отчетность
04
Забыть про перепроведение — после смены даты документ перепроводится, и при ошибках проведения (нет остатков на новый момент) часть документов не запишется
05
Игнорировать последовательности — граница откатывается, итоги по партиям становятся неактуальными

Отдельное ограничение касается обменов: если база участвует в синхронизации (РИБ, обмен с сайтом, другой конфигурацией), измененные документы будут зарегистрированы к выгрузке и уйдут в другие узлы. Убедитесь, что приемная сторона корректно примет новые даты и не возникнет коллизий.

Перед массовой обработкой выполните пробный запуск с отбором по одному документу. Если результат устраивает — расширяйте отбор. Это занимает минуту, но страхует от необратимой порчи тысяч документов.
ПЗ
Практическое замечание

FAQ

Можно ли изменить только время, не трогая день документа?

Да. В типовом реквизите «Дата» день и время хранятся вместе, поэтому напрямую задать «только время» нельзя. Используйте произвольный алгоритм: формула вида Объект.Дата = НачалоДня(Объект.Дата) + Часы 3600 + Минуты 60 сохраняет исходный день и устанавливает нужное время.

Почему после обработки часть документов не изменилась?

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

Изменятся ли проводки и движения по регистрам?

Да, если документ проведен: при записи с новой датой он перепроводится, и движения перезаписываются с новым моментом времени. Суммы обычно не меняются, но позиция в хронологии меняется, что влияет на расчет себестоимости и партионный учет внутри дня.

Нужно ли восстанавливать последовательности после смены времени?

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

Можно ли отменить групповую обработку?

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

Работает ли способ в 1С:Бухгалтерии 8.3?

Да. В Бухгалтерии предприятия 3.0 обработка «Групповое изменение реквизитов» доступна в разделе «Администрирование» → «Обслуживание» → «Корректировка данных». Если пункта нет, проверьте права пользователя и включите режим «Все функции» для поиска обработки вручную.

Итог

Что важно запомнить

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