В типовой конфигурации «1С:Управление производственным предприятием 1.3» пользователи и администраторы нередко сталкиваются с необходимостью изменить или упорядочить время проведения документов. Чаще всего эта задача возникает для документов Реализация товаров и услуг, когда требуется выстроить строгую хронологическую цепочку относительно поступлений, выпусков продукции или платежных поручений.
Разберем подробнее, почему возникает такая потребность, какими встроенными и внешними средствами можно скорректировать время документов, а также какие важные последствия для учета необходимо учитывать.
Хронологический порядок проведения документов в 1С критически важен для корректного формирования движений по регистрам. Выясним основные причины, требующие изменения времени:
Рассмотрим использование встроенного инструмента конфигурации, который доступен через меню Сервис — Универсальные обработки — Групповая обработка справочников и документов.
С помощью этой обработки можно выполнить следующие действия:
Документы и добавить вид документа Реализация товаров и услуг.23:59:59) и нажать кнопку Выполнить.Ограничение метода: типовая групповая обработка способна присвоить всем выбранным строкам только одно фиксированное значение даты и времени. Она не может автоматически распределить документы «лесенкой» с шагом в одну секунду или минуту внутри дня.
Если требуется последовательная расстановка времени с определенным шагом, применим обработку с поддержкой выполнения произвольного кода. Разберем по шагам, как реализовать алгоритм пошагового сдвига времени:
Посмотрим на пример кода для последовательного смещения времени каждого документа на одну секунду:
// Пример смещения времени документов в цикле
ТекущееВремя = НачалоДня(Объект.Дата) + 36000; // Начинаем с 10:00:00
ШагСекунд = 1;
Для Каждого СтрокаТаблицы Из ТаблицаОбъектов Цикл
ДокументОбъект = СтрокаТаблицы.Ссылка.ПолучитьОбъект();
ДокументОбъект.Дата = ТекущееВремя;
ДокументОбъект.Записать(РежимЗаписиДокумента.Проведение);
ТекущееВремя = ТекущееВремя + ШагСекунд;
КонецЦикла;
Если же стоит задача просто перенести все реализации на самый конец суток после всех складских поступлений, используем функцию КонецДня():
// Смещение даты документа на конец суток
Объект.Дата = КонецДня(Объект.Дата);
Объект.Записать(РежимЗаписиДокумента.Проведение);
Чтобы исключить необходимость регулярной ручной правки времени, проанализируем возможность доработки конфигурации. В конфигураторе в модуле объекта РеализацияТоваровУслуг или в общей подписке на событие ПередЗаписью можно зафиксировать автоназначение времени.
Посмотрим на пример установки вечернего времени для новых документов:
Если Источник.ЭтоНовый() Тогда
// Устанавливаем время по умолчанию на 23:59:59 текущего дня
Источник.Дата = КонецДня(Источник.Дата);
КонецЕсли;
При массовом изменении времени документов необходимо учитывать критические технические нюансы работы платформы 1С:
Проведение по партиям) и последовательности расчетов с контрагентами.Дата в платформе хранится с точностью до одной секунды. При совпадении времени вплоть до секунды взаимное положение записей в регистрах определяется внутренним значением МоментВремени (комбинация даты и ссылки).