При работе с Системой Компоновки Данных (СКД) разработчики часто сталкиваются с неприятной особенностью: при попытке задать пользовательское Представление для поля в настройках отбора (например, заменить стандартное «Дата создания» на более понятное «Дата создания с:»), интерфейс 1С перестает отображать календарь или поле выбора даты. Вместо удобного элемента управления пользователь видит простое текстовое поле или вообще не может ввести значение. Разберем подробно, почему это происходит и какими способами можно добиться нужного отображения заголовков, сохранив функциональность выбора даты.
Проанализируем механику работы платформы. Когда мы меняем Представление непосредственно в строке отбора в пользовательских настройках или в конструкторе настроек СКД, система зачастую интерпретирует это как создание нового «виртуального» элемента. В этот момент механизм автоматического определения типа данных (RTTI) может дать сбой. Платформа перестает видеть, что данное поле жестко связано с типом Дата, и откатывается к универсальному типу ввода, что и приводит к исчезновению календаря.
Рассмотрим самый надежный и «чистый» с точки зрения архитектуры СКД метод. Вместо того чтобы полагаться на автоматические отборы, мы создадим явные параметры данных и свяжем их с запросом. Это позволит нам полностью контролировать заголовки, которые увидит пользователь.
Выполним следующие шаги:
НачалоПериодаСоздания и КонецПериодаСоздания.Дата для обоих параметров.ГДЕ, используя расширение языка СКД (фигурные скобки):
ВЫБРАТЬ
Продажи.Ссылка,
Продажи.ДатаСоздания
ИЗ
Документ.Продажи КАК Продажи
ГДЕ
Продажи.ДатаСоздания >= &НачалоПериодаСоздания
И Продажи.ДатаСоздания <= &КонецПериодаСоздания
{ГДЕ
(Продажи.ДатаСоздания >= &НачалоПериодаСоздания),
(Продажи.ДатаСоздания <= &КонецПериодаСоздания)}
Использование фигурных скобок {ГДЕ ...} позволяет СКД гибко управлять условиями. Если пользователь не заполнит один из параметров, условие просто не будет включено в итоговый SQL-запрос. В пользовательских настройках (вкладка Настройки -> Параметры) не забудьте включить эти параметры в состав пользовательских настроек (иконка со «звездочкой»).
Если мы не хотим использовать параметры, а предпочитаем стандартный механизм отборов, нам нужно изменить заголовок поля в самом источнике. Это правильнее, чем менять «Представление» в настройках варианта отчета.
Проанализируем этот алгоритм:
ДатаСоздания.Важный нюанс: если нам нужно два поля (для «От» и «До»), мы можем создать Вычисляемое поле с тем же выражением или добавить в запрос дубль этого поля с другим псевдонимом:
ВЫБРАТЬ
Продажи.ДатаСоздания КАК ДатаСозданияНачало,
Продажи.ДатаСоздания КАК ДатаСозданияКонец
ИЗ
Документ.Продажи КАК Продажи
Теперь в компоновке у нас есть два независимых поля. Для одного устанавливаем заголовок «Дата создания от», для другого — «Дата создания до». Поскольку заголовки прописаны в метаданных набора данных, платформа корректно пробросит тип Дата в интерфейс отборов, и календарь не пропадет.
Разберем ситуацию, когда нам нужно сохранить структуру отборов, но сделать их визуально более понятными. В СКД есть возможность группировать условия отбора. Это позволяет задать общий заголовок для группы условий.
Дата создания: один с видом сравнения «Больше или равно», другой — «Меньше или равно».При таком подходе заголовки самих полей внутри группы останутся стандартными (и календарь сохранится), но визуально они будут объединены общим заголовком группы, что упростит восприятие для пользователя.
Посмотрим на пример использования системного типа СтандартныйПериод. Это наиболее удобный способ для пользователя, так как он позволяет выбирать не только произвольные даты, но и быстрые интервалы (Вчера, Текущий месяц, Прошлый квартал и т.д.).
Для реализации:
ПериодОтчета с типом СтандартныйПериод.
ГДЕ
Продажи.ДатаСоздания МЕЖДУ &ПериодОтчета.ДатаНачала И &ПериодОтчета.ДатаОкончания
В интерфейсе это будет выглядеть как одно поле с кнопкой выбора периода. Это полностью снимает проблему «пропадания календаря», так как мы используем специализированный системный тип данных.
Подводя итог, можно сказать: старайтесь никогда не менять колонку «Представление» в самой таблице отборов, если это поле должно иметь сложный тип ввода (дата, ссылка, перечисление). Платформа 1С очень чувствительна к этим правкам в контексте динамического построения форм. Используйте либо Заголовки в описании полей набора данных, либо Параметры. Эти методы гарантируют стабильную работу интерфейса и корректное поведение элементов управления в пользовательском режиме.