Как изменить и расставить время документов в 1С:УПП 1.3?

Программист 1С v8.3 (Обычные формы) Бухгалтерский учет IT и автоматизация бизнеса
← На главную

В типовой конфигурации «1С:Управление производственным предприятием 1.3» пользователи и администраторы нередко сталкиваются с необходимостью изменить или упорядочить время проведения документов. Чаще всего эта задача возникает для документов Реализация товаров и услуг, когда требуется выстроить строгую хронологическую цепочку относительно поступлений, выпусков продукции или платежных поручений.

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

Зачем требуется корректировка времени документов

Хронологический порядок проведения документов в 1С критически важен для корректного формирования движений по регистрам. Выясним основные причины, требующие изменения времени:

  1. Нарушение хронологии списания запасов: если документ отгрузки проведен раньше по времени, чем документ поступления или оприходования в рамках одних и тех же суток, в регистрах учета образуются отрицательные остатки. Это приводит к искажению расчета себестоимости и ошибкам при проведении по партиям.
  2. Некорректный зачет авансов: в подсистеме расчетов с контрагентами неверный порядок документов оплаты и отгрузки порождает лишние обороты по счетам авансов (например, 62.02 и 62.01) и искажает проводки.

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

Рассмотрим использование встроенного инструмента конфигурации, который доступен через меню Сервис — Универсальные обработки — Групповая обработка справочников и документов.

С помощью этой обработки можно выполнить следующие действия:

  1. Выбрать тип объекта Документы и добавить вид документа Реализация товаров и услуг.
  2. Настроить отбор (например, по организации, контрагенту или интервалу дат).
  3. Нажать кнопку Отобрать для формирования списка документов.
  4. В нижней части формы в поле «Действие» выбрать команду Изменить реквизит: Дата.
  5. Указать конкретное значение даты и времени (например, перенести документы на конец дня — 23:59:59) и нажать кнопку Выполнить.

Ограничение метода: типовая групповая обработка способна присвоить всем выбранным строкам только одно фиксированное значение даты и времени. Она не может автоматически распределить документы «лесенкой» с шагом в одну секунду или минуту внутри дня.

Способ 2. Обработка «Универсальный подбор и обработка объектов» с произвольным алгоритмом

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

  1. Выполняем отбор нужных документов за период.
  2. На вкладке обработки выбираем действие «Произвольный алгоритм».
  3. Пишем код перебора объектов, где к базовому времени каждого следующего документа прибавляется шаг в секундах.

Посмотрим на пример кода для последовательного смещения времени каждого документа на одну секунду:


// Пример смещения времени документов в цикле
ТекущееВремя = НачалоДня(Объект.Дата) + 36000; // Начинаем с 10:00:00
ШагСекунд = 1;

Для Каждого СтрокаТаблицы Из ТаблицаОбъектов Цикл
    ДокументОбъект = СтрокаТаблицы.Ссылка.ПолучитьОбъект();
    ДокументОбъект.Дата = ТекущееВремя;
    ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
    
    ТекущееВремя = ТекущееВремя + ШагСекунд;
КонецЦикла;

Если же стоит задача просто перенести все реализации на самый конец суток после всех складских поступлений, используем функцию КонецДня():


// Смещение даты документа на конец суток
Объект.Дата = КонецДня(Объект.Дата);
Объект.Записать(РежимЗаписиДокумента.Проведение);

Способ 3. Автоматизация времени при создании новых документов

Чтобы исключить необходимость регулярной ручной правки времени, проанализируем возможность доработки конфигурации. В конфигураторе в модуле объекта РеализацияТоваровУслуг или в общей подписке на событие ПередЗаписью можно зафиксировать автоназначение времени.

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


Если Источник.ЭтоНовый() Тогда
    // Устанавливаем время по умолчанию на 23:59:59 текущего дня
    Источник.Дата = КонецДня(Источник.Дата);
КонецЕсли;

Важные последствия и правила проведения

При массовом изменении времени документов необходимо учитывать критические технические нюансы работы платформы 1С:

  1. Сдвиг границ последовательностей: перезапись проведенного документа более ранней датой или временем автоматически смещает границу последовательностей назад. После выполнения обработки обязательно запускаем восстановление последовательности партионного учета (обработка Проведение по партиям) и последовательности расчетов с контрагентами.
  2. Дискретность реквизита: реквизит Дата в платформе хранится с точностью до одной секунды. При совпадении времени вплоть до секунды взаимное положение записей в регистрах определяется внутренним значением МоментВремени (комбинация даты и ссылки).
  3. Дата запрета редактирования: если документы находятся в закрытом периоде, массовая смена времени завершится ошибкой. Перед запуском обработки убедимся, что дата запрета изменения данных временно сдвинута.
  4. Блокировки таблиц базы данных: массовое перепроведение большого объема документов вызывает транзакционные блокировки. Процедуру рекомендуется выполнять в монопольном режиме или во внерабочее время.
← На главную