Как в табличной части 1С убрать отображение даты 01.01.0001 и оставить только время?

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

При разработке документов или справочников разработчики часто сталкиваются с ситуацией, когда в колонках табличной части вместо компактного времени отображается полная строка вида 01.01.0001 14:00:00. Выясним причину такого поведения платформы 1С и разберем по шагам, как настроить корректный вывод данных.

Почему 1С подставляет дату 01.01.0001

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

Если для реквизита табличной части не задан требуемый состав даты или не определена строка форматирования на форме, элемент управления отображает значение целиком. Рассмотрим основные способы исправления этой ситуации.

Способ 1. Настройка состава даты в реквизитах табличной части

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

  1. Откроем дерево метаданных конфигуратора и найдем нужный документ или справочник.
  2. Раскроем ветку Табличные части и выберем соответствующую таблицу.
  3. Найдем проблемный реквизит (например, ВремяНачала или ВремяОкончания) и откроем его свойства.
  4. В свойстве Тип убедимся, что выбрано значение Дата.
  5. В параметре Состав даты переключим значение с Дата и время (или Дата) на Время.
  6. Повторим действие для второго реквизита и сохраним конфигурацию.

После такой настройки элемент управления на форме по умолчанию начнет отображать только временную часть, скрывая дату по умолчанию.

Способ 2. Настройка свойств «Формат» и «Формат редактирования» на форме

Бывают ситуации, когда реквизит уже существует в рабочей базе, используется в других механизмах или данные выводятся через точку от связанного справочника (например, Объект.ТЧ.График.Время1). В таких случаях изменение типа в метаданных может быть нежелательным или недоступным. Настроим отображение непосредственно в свойствах элемента формы.

Разберем по шагам настройку элемента управления таблицы:

  1. Откроем форму документа в конфигураторе и перейдем к элементам табличной части.
  2. Выберем колонку, отображающую время.
  3. В палитре свойств найдем строку Формат, нажмем кнопку выбора с многоточием и в конструкторе формата даты снимем галку отображения даты, оставив только время (либо вручную пропишем строку ДФ=ЧЧ:мм:сс или ДФ=ЧЧ:мм).
  4. Обратим особое внимание на свойство ФорматРедактирования. Если заполнить только Формат, то при входе пользователя в режим редактирования ячейки платформа может снова попытаться открыть выбор полной даты. Зададим в свойстве ФорматРедактирования ту же строку формата: ДФ=ЧЧ:мм:сс.

Способ 3. Использование Условного оформления формы

Если требуется применить правила отображения динамически или без изменения структуры элементов, используем механизм условного оформления формы или конкретной таблицы.

  1. В свойствах управляемой формы (или таблицы формы) откроем свойство УсловноеОформление.
  2. Добавим новый элемент оформления.
  3. На вкладке Оформление включим свойство Формат и зададим значение ДФ=ЧЧ:мм:сс.
  4. На вкладке Оформляемые поля укажем колонки табличной части, где выводятся показатели времени.
  5. Вкладку Условие оставляем пустой, чтобы правило применялось ко всем строкам таблицы.

Особенности работы со временем через справочник

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

  1. Вывод реквизита через точку: если в таблицу выводится поле вида СсылкаНаСправочник.Время1, такое поле доступно только для чтения. Состав даты реквизита справочника не всегда автоматически наследуется колонкой таблицы, поэтому для такого поля обязательно задаем свойство Формат вручную на форме.
  2. Программное заполнение реквизитов ТЧ: если при выборе элемента справочника в событии ПриИзменении значения времени переносятся в собственные реквизиты табличной части документа, важно следить, чтобы состав даты (Время) совпадал и у реквизитов справочника, и у реквизитов табличной части документа.

Посмотрим на пример правильного программного заполнения строк таблицы при изменении ссылки на справочник:


&НаКлиенте
Процедура ТЧГрафикПриИзменении(Элемент)
    СтрокаТЧ = Элементы.ТЧ.ТекущиеДанные;
    Если СтрокаТЧ <> Неопределено Тогда
        ЗаполнитьВремяПоСправочникуНаСервере(СтрокаТЧ.ГрафикРаботы, СтрокаТЧ.НомерСтроки);
    КонецЕсли;
КонецПроцедуры

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

← На главную