Как в журнале документов продажи УТ 11.4 изменить формат даты для отображения времени

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

При работе в современных конфигурациях, таких как УТ 11.4, ERP 2.4 или КА 2.4, пользователи часто сталкиваются с тем, что в журнале документов (например, продажи или закупки) в колонке «Дата» отображается только число, месяц и год. Попытки изменить ситуацию стандартными методами через меню «Ещё — Изменить форму» или установку формата ДЛФ=DT в конфигураторе часто не приносят результата. Система игнорирует настройки и упрямо скрывает время документа.

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

Выясняем причину: почему не работает стандартный формат

Проанализируем архитектуру конфигурации. В современных решениях на базе Библиотеки стандартных подсистем (БСП) интерфейс форм часто настраивается динамически при открытии. Для журналов документов используется механизм программного установления условного оформления.

Даже если вы установите нужный формат в свойствах элемента формы в конфигураторе, при создании формы на сервере выполняется код БСП, который находит колонку даты и принудительно вешает на нее правило: отображать только дату (ДЛФ=D). Это делается разработчиками для экономии экранного пространства, так как в списках время считается вторичной информацией. Основным «виновником» является вызов процедуры УстановитьУсловноеОформлениеПоляДата в общем модуле СтандартныеПодсистемыСервер.

Способ 1. Программная корректировка в модуле формы (Рекомендуемый)

Наиболее корректным и «чистым» методом решения проблемы является внесение изменений в модуль формы списка документов через механизм расширений. Это позволит сохранить поддержку основной конфигурации и точечно решить задачу именно для журнала продаж.

Нам необходимо найти форму СписокДокументов в обработке ЖурналДокументовПродажи. Разберем по шагам наши действия в модуле этой формы:

  1. Создаем расширение и добавляем в него форму списка.
  2. Находим процедуру ПриСозданииНаСервере.
  3. Добавляем обработчик &После для этой процедуры.

В коде нам нужно либо найти и изменить существующий элемент условного оформления, либо закомментировать вызов стандартной процедуры БСП. Рассмотрим пример кода, который отключает принудительное форматирование:


&НаСервере
&После("ПриСозданииНаСервере")
Процедура ИЗМ_ПриСозданииНаСервереПосле(Отказ, СтандартнаяОбработка)
    
    // Находим вызов, который устанавливает формат даты
    // В типовом коде это обычно выглядит так:
    // СтандартныеПодсистемыСервер.УстановитьУсловноеОформлениеПоляДата(ЭтотОбъект, "Список.Дата", Элементы.СписокДата.Имя);
    
    // Чтобы вернуть отображение времени, мы можем программно переопределить 
    // условное оформление для конкретного поля:
    Для Каждого Элемент Из УсловноеОформление.Элементы Цикл
        Для Каждого ОформляемоеПоле Из Элемент.Поля.Элементы Цикл
            Если Строка(ОформляемоеПоле.Поле) = "СписокДата" Тогда
                // Устанавливаем формат Дата + Время
                Элемент.Оформление.УстановитьЗначениеПараметра("Формат", "ДЛФ=DT");
            КонецЕсли;
        КонецЦикла;
    КонецЦикла;

КонецПроцедуры

Проанализируем ситуацию: если мы просто закомментируем вызов процедуры БСП, система перестанет принудительно форматировать дату, и тогда начнут работать настройки, заданные в конфигураторе или через «Изменить форму».

Способ 2. Использование пользовательских полей (Без конфигуратора)

Если у вас нет возможности вносить изменения в код, можно попробовать решить задачу через настройки динамического списка в режиме «1С:Предприятие». Этот способ основан на добавлении дублирующего поля.

  1. Откройте журнал продаж и перейдите в меню «Ещё — Настройка списка».
  2. Перейдите на закладку «Поля».
  3. Нажмите кнопку «Добавить — Новое поле-выражение».
  4. В заголовке укажите «Дата со временем», а в выражении выберите путь к данным: Дата (или ДатаДокументаИБ, если используется Реестр документов).
  5. Зайдите в «Установить формат» для этого нового поля и выберите вариант, включающий время.
  6. Нажмите «ОК» и выведите это поле в список, а стандартную колонку «Дата» скройте.

Важное замечание: Как отмечают опытные разработчики (см. Сообщение 10), использование в выражениях полей через точку (например, Ссылка.Дата) может привести к существенному замедлению работы списка. Однако, если использовать поле Дата напрямую из основного источника данных (регистра РеестрДокументов), падения производительности быть не должно.

Способ 3. Глобальное изменение в общем модуле

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

Внутри этой процедуры создается элемент оформления. Мы можем изменить строку установки формата:


// Было:
// ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ДЛФ=D");

// Стало:
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", "ДЛФ=DT");

Внимание: Этот метод крайне не рекомендуется, так как он затронет все документы (Заказы, Поступления, Акты, Складские ордера и т.д.). Колонки станут шире, и интерфейс может стать перегруженным. Используйте этот вариант только в исключительных случаях.

Нюансы работы с «Реестром документов»

В УТ 11.4 данные в журнал продаж попадают не напрямую из документов, а из специального вспомогательного регистра сведений РеестрДокументов. Это сделано для ускорения работы больших списков. Проанализируем состав этого регистра: в нем есть измерение Дата и ресурс ДатаДокументаИБ.

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

Влияние на группировки и сортировку

Разберем еще один важный момент. Когда в колонке «Дата» отображается только дата без времени, стандартная группировка списка (например, по дням) работает корректно. Если вы примените формат ДЛФ=DT, это изменит только визуальное представление, но не изменит тип данных. Сортировка по-прежнему будет учитывать секунды, что правильно.

Однако, если вы создадите пользовательское поле-выражение и попытаетесь по нему сгруппировать список, система может создать отдельную группу на каждую секунду. Поэтому для группировки всегда оставляйте исходное поле Дата, а формат «Дата + Время» используйте только для отображения в колонке.

Подведем итоги

Для изменения формата даты в журнале продаж УТ 11.4 рекомендуется:

  1. Использовать расширение конфигурации.
  2. Программно корректировать условное оформление в процедуре ПриСозданииНаСервере формы списка.
  3. Избегать изменения общего модуля БСП, чтобы не загромождать интерфейс других разделов программы.

Такой подход гарантирует стабильность работы системы, легкость будущих обновлений и достижение желаемого результата для пользователей.

← На главную