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