Как установить и изменить рабочую дату в 1С:Комплексная автоматизация 2.0

Программист 1С v8.3 (Управляемые формы) 1С:Комплексная автоматизация
← На главную

При работе в современных конфигурациях на платформе 1С:Предприятие 8.3, таких как 1С:Комплексная автоматизация 2.0, ERP 2 или Управление торговлей 11, пользователи часто сталкиваются с тем, что привычные инструменты из старых версий (например, 1С:КА 1.1 или УПП) изменили свое местоположение. Одним из таких «пропавших» инструментов является рабочая дата. В этой статье мы подробно разберем, как найти эту настройку в интерфейсе, как изменить ее программно и какие технические особенности следует учитывать при работе с ней.

Поиск рабочей даты в пользовательском интерфейсе

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

  1. Откроем главное меню программы (кнопка в виде «бутерброда» или стрелочки в самом верху окна).
  2. Перейдем в раздел Настройки (или «Сервис» в зависимости от версии платформы), далее выберем пункт Параметры.
  3. В открывшемся окне мы увидим поле Рабочая дата.

По умолчанию в системе установлен переключатель в положение Использовать текущую дату компьютера. Это означает, что при создании любого нового документа система будет подставлять текущее системное время. Чтобы изменить это поведение, мы переставляем флажок в положение Другая дата и выбираем нужное нам число в календаре. После нажатия кнопки «ОК» все новые объекты будут создаваться именно этой датой.

Программный способ изменения рабочей даты

Зачастую перед разработчиком встает задача изменить рабочую дату программно, например, для пакетного ввода документов за прошлый период. Проанализируем ситуацию: стандартные методы платформы 1С 7.7 или 8.2 (обычные формы) здесь не сработают напрямую через глобальный контекст. В конфигурациях, построенных на Библиотеке стандартных подсистем (БСП), для этого предусмотрены специальные процедуры.

Посмотрим на пример кода, который позволяет установить рабочую дату для конкретного пользователя. Для этого используется экспортная процедура из модуля ОбщегоНазначения:


// Пример программной установки рабочей даты
НоваяДата = Дата(2023, 12, 31); // Указываем необходимую дату
ИмяПользователя = Пользователи.ТекущийПользователь(); // Получаем текущего пользователя

// Вызываем процедуру БСП
ОбщегоНазначения.УстановитьРабочуюДатуПользователя(НоваяДата, ИмяПользователя);

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

Получение рабочей даты в коде конфигурации

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

ТекущаяРабочаяДата = ОбщегоНазначения.РабочаяДатаПользователя();

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

Особенности и технические нюансы работы с датой

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

  1. Влияние на существующие документы: Изменение рабочей даты влияет только на новые документы в момент их создания. Если вы перепроводите старый документ, его дата не изменится автоматически на рабочую.
  2. Смена суток в полночь: В настройках системы часто включена опция автоматического обновления даты. Однако, если дата была зафиксирована вручную через «Параметры», автоматический перенос на следующий день работать не будет. Пользователь может «застрять» во вчерашнем дне, что приведет к ошибкам в учете.
  3. Хранение данных: Информация о рабочей дате хранится в системной таблице настроек (хранилище данных форм). Вы не найдете это значение простым запросом к справочнику Пользователи.
  4. Отчеты: Большинство отчетов в КА 2.0 используют текущую дату сеанса или системную дату для формирования остатков «на текущий момент», игнорируя персональную рабочую дату. Помните об этом при сверке данных.

Рекомендации по использованию

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

Для разработчиков: всегда используйте методы БСП, такие как ОбщегоНазначения.РабочаяДатаПользователя(), чтобы ваш код соответствовал общим стандартам разработки 1С и корректно учитывал настройки, заданные пользователем в интерфейсе.

← На главную