При работе в современных конфигурациях на платформе 1С:Предприятие 8.3, таких как 1С:Комплексная автоматизация 2.0, ERP 2 или Управление торговлей 11, пользователи часто сталкиваются с тем, что привычные инструменты из старых версий (например, 1С:КА 1.1 или УПП) изменили свое местоположение. Одним из таких «пропавших» инструментов является рабочая дата. В этой статье мы подробно разберем, как найти эту настройку в интерфейсе, как изменить ее программно и какие технические особенности следует учитывать при работе с ней.
Давайте проанализируем, где именно скрывается данная настройка. В управляемых формах рабочая дата больше не выносится на главную панель по умолчанию. Рассмотрим пошагово, как ее изменить:
По умолчанию в системе установлен переключатель в положение Использовать текущую дату компьютера. Это означает, что при создании любого нового документа система будет подставлять текущее системное время. Чтобы изменить это поведение, мы переставляем флажок в положение Другая дата и выбираем нужное нам число в календаре. После нажатия кнопки «ОК» все новые объекты будут создаваться именно этой датой.
Зачастую перед разработчиком встает задача изменить рабочую дату программно, например, для пакетного ввода документов за прошлый период. Проанализируем ситуацию: стандартные методы платформы 1С 7.7 или 8.2 (обычные формы) здесь не сработают напрямую через глобальный контекст. В конфигурациях, построенных на Библиотеке стандартных подсистем (БСП), для этого предусмотрены специальные процедуры.
Посмотрим на пример кода, который позволяет установить рабочую дату для конкретного пользователя. Для этого используется экспортная процедура из модуля ОбщегоНазначения:
// Пример программной установки рабочей даты
НоваяДата = Дата(2023, 12, 31); // Указываем необходимую дату
ИмяПользователя = Пользователи.ТекущийПользователь(); // Получаем текущего пользователя
// Вызываем процедуру БСП
ОбщегоНазначения.УстановитьРабочуюДатуПользователя(НоваяДата, ИмяПользователя);
Разберем подробнее, что происходит при выполнении этого кода. Метод УстановитьРабочуюДатуПользователя не просто меняет переменную в оперативной памяти, он записывает значение в хранилище общих настроек. Это означает, что даже после перезапуска сеанса рабочая дата останется зафиксированной, пока пользователь или алгоритм не вернет ее к системному значению.
Если нам нужно не установить, а получить текущую рабочую дату пользователя в своем алгоритме, крайне не рекомендуется использовать стандартную функцию ТекущаяДата(). Рассмотрим почему: ТекущаяДата() всегда возвращает время сервера или компьютера, игнорируя персональные настройки пользователя. Правильным подходом будет использование функции:
ТекущаяРабочаяДата = ОбщегоНазначения.РабочаяДатаПользователя();
Эта функция сначала проверяет, установлена ли в настройках пользователя «Другая дата». Если установлена — возвращает ее. Если нет — возвращает системную дату. Это критически важно для обеспечения корректной логики работы документов.
Выясним причину, по которой иногда возникают ошибки при массовом вводе документов. Нужно учитывать следующие аспекты:
Пользователи.Проанализировав практику использования этой настройки, можно дать несколько советов. Если вам необходимо ввести «тысячу документов за вчерашний день», установка рабочей даты — это самый быстрый способ. Но сразу после завершения работы обязательно верните настройку в режим Использовать текущую дату компьютера. Это убережет от случайного создания оперативных документов «задним числом» в будущем.
Для разработчиков: всегда используйте методы БСП, такие как ОбщегоНазначения.РабочаяДатаПользователя(), чтобы ваш код соответствовал общим стандартам разработки 1С и корректно учитывал настройки, заданные пользователем в интерфейсе.