Тип: ЧастиДаты. Определяет допустимые части даты.
Полное описание, параметры и ограничения
КвалификаторыДаты.ЧастиДаты (DateQualifiers.DateFractions)
КвалификаторыДаты (DateQualifiers)
ЧастиДаты (DateFractions)
Доступен, начиная с версии 8.0.
Использование:
Только чтение.
Описание:
Тип: ЧастиДаты.
Определяет допустимые части даты.
Доступность:
Тонкий клиент, веб-клиент, мобильный клиент, сервер, толстый клиент, внешнее соединение, мобильное приложение (клиент), мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.0.
Методическая информация
Практические примеры
Сохранить календарную дату без времени и расширить набор типов
Создаём тип даты с частью Дата, приводим известную дату-время, затем показываем копирование ОписаниеТипов с добавлением и вычитанием типов.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Все значения учебные и создаются в памяти; документы, регистры и рабочие данные не изменяются.
Выполняйте на сервере учебной базы. Представление десятичного разделителя в сообщениях зависит от локали.
Квалификаторы = Новый КвалификаторыДаты(ЧастиДаты.Дата);
ТипДаты = Новый ОписаниеТипов("Дата", , , Квалификаторы);
ИсходнаяДата = Дата(2026, 9, 15, 15, 30, 45);
ТолькоДата = ТипДаты.ПривестиЗначение(ИсходнаяДата);
Сообщить(Формат(ТолькоДата, "ДФ=yyyy-MM-dd HH:mm:ss"));
Сообщить(Квалификаторы.ЧастиДаты);
Сообщить(ТипДаты.КвалификаторыДаты.ЧастиДаты);
ЧисловойТип = Новый ОписаниеТипов("Число");
Составной = Новый ОписаниеТипов(ЧисловойТип, "Строка");
СноваСтрока = Новый ОписаниеТипов(Составной, , "Число");
Сообщить(ЧисловойТип.СодержитТип(Тип("Строка")));
Сообщить(Составной.СодержитТип(Тип("Строка")));
Сообщить(Составной.СодержитТип(Тип("Число")));
Для Каждого РазрешённыйТип Из СноваСтрока.Типы() Цикл
Сообщить(РазрешённыйТип);
КонецЦикла;Разбор по шагам
Дата с временем задана фиксированно, поэтому результат не зависит от текущих часов.
КвалификаторыДаты передаются четвёртым параметром первого конструктора ОписаниеТипов.
Приведение к части Дата удаляет время, но не выполняет преобразование часового пояса.
Во втором варианте конструктора первый аргумент — существующее описание: добавляем Строка и затем вычитаем Число, не изменяя оригинал.
Как проверить результат
Результат даты 2026-09-15 00:00:00; обе части даты — Дата.
Проверки строкового типа: Ложь у оригинала, Истина у составного; Число также есть в составном.
В СноваСтрока.Типы() остаётся только Строка.
Ожидаемый результат
Время намеренно отброшено; независимые описания типов расширены и сужены.
На что обратить внимание
Часть Дата подходит для календарного дня, но не для точного момента внешнего события.
Отбрасывание времени не заменяет конвертацию UTC в местный часовой пояс.
Типы в составном описании — разрешённые варианты, а не одновременно несколько значений в одной переменной.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.
Задать точность цены, длину кода и дату без времени
ОписаниеТипов задаёт ограничения значений, квалификаторы уточняют конкретный тип. Приведение значения не заменяет проверку исходного ввода.
Где и как запускать
Учебная база: создайте серверный общий модуль УчебныеЗадачи (флаг Сервер). Код без директив вставьте в тело процедуры ВыполнитьПример() Экспорт. Вызовите её из серверного обработчика команды учебной обработки. Не запускайте в рабочей базе.
Подготовка
Можно выполнить на сервере; данные заданы константами, файлы и справочники не нужны.
Точность числа 10 включает целую и дробную части; 2 разряда отведены дробной части.
ПараметрыЧисла = Новый КвалификаторыЧисла(10, 2, ДопустимыйЗнак.Неотрицательный);
ТипЦены = Новый ОписаниеТипов("Число", ПараметрыЧисла);
ПараметрыСтроки = Новый КвалификаторыСтроки(8, ДопустимаяДлина.Переменная);
ТипКода = Новый ОписаниеТипов("Строка", , ПараметрыСтроки);
ПараметрыДаты = Новый КвалификаторыДаты(ЧастиДаты.Дата);
ТипДня = Новый ОписаниеТипов("Дата", , , ПараметрыДаты);
Сообщить(ТипЦены.СодержитТип(Тип("Число")));
Сообщить(ТипЦены.СодержитТип(Тип("Строка")));
Цена = ТипЦены.ПривестиЗначение(12.346);
Код = ТипКода.ПривестиЗначение("ABC-123456");
День = ТипДня.ПривестиЗначение(Дата(2026, 10, 2, 14, 30, 0));
Сообщить(Цена);
Сообщить(Код);
Сообщить(Час(День));
Сообщить(ТипЦены.КвалификаторыЧисла.Разрядность);
Сообщить(ТипЦены.КвалификаторыЧисла.РазрядностьДробнойЧасти);
Сообщить(ТипЦены.КвалификаторыЧисла.ДопустимыйЗнак);
Сообщить(ТипКода.КвалификаторыСтроки.Длина);
Сообщить(ТипКода.КвалификаторыСтроки.ДопустимаяДлина);
Сообщить(ТипДня.КвалификаторыДаты.ЧастиДаты);
Для Каждого ДопустимыйТип Из ТипЦены.Типы() Цикл
Сообщить(ДопустимыйТип);
КонецЦикла;Разбор по шагам
Создаём квалификаторы отдельно и передаём их в правильные позиции конструктора ОписаниеТипов.
СодержитТип проверяет допустимый тип, но ещё не проверяет конкретное введённое значение.
ПривестиЗначение округляет число, ограничивает строку и убирает время из даты.
Читаем ограничения обратно и обходим массив Типы.
Как проверить результат
Проверки типа дают Истина и Ложь; цена получается 12,35, код ABC-1234.
Час приведённой даты равен 0; свойства квалификаторов показывают 10, 2 и длину 8.
Ожидаемый результат
Цена, код и дата приведены к заданным ограничениям.
На что обратить внимание
Для пользовательского ввода сначала сообщайте о слишком длинном коде: молчаливое обрезание может создать дубликаты.
ПривестиЗначение может вернуть значение по умолчанию при неподходящем вводе; не используйте его как единственную проверку корректности.
Пример не запускался в вашей базе. Перед применением проверьте его в указанном учебном контексте.