Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

1C_ERR_CAST_TO_DATE 1С:Предприятие и СУБД

Ошибка 1С: Преобразование значения к типу Дата не может быть выполнено

Обновлено: 25.08.2026 · Официальная документация ↗
  • Ошибка при выполнении функции Дата(Строка) или литеральной инициализации даты.
  • Сообщение об ошибке: {Модуль(Строка)}: Преобразование значения к типу Дата не может быть выполнено.
  • Сбой при загрузке дат из внешних источников (CSV, JSON, REST, Web-сервисы), если строка не соответствует строгому каноническому формату 1С.

1. Архитектурные требования к литералам дат в 1С

Во встроенном языке 1С тип Дата всегда содержит как дату, так и время (с точностью до секунды). Конструктор Дата(Строка) принимает строковый литерал строго фиксированного формата: "ГГГГММДД" или "ГГГГММДДЧЧММСС" (ровно 8 или 14 цифр без разделителей).

Любые попытки передать строки вида "31.12.2023", "2023-12-31" или "2023/12/31" в конструктор Дата() вызывают ошибку приведения типа.

2. Способы корректного создания и преобразования Даты

Способ 1: Прямой конструктор по компонентам (самый надежный)

// Дата(Год, Месяц, День, Час, Минута, Секунда)
РабочаяДата = Дата(2023, 12, 31, 23, 59, 59);
ПустаяДата  = Дата(1, 1, 1); // 0001-01-01 00:00:00 (Пустая дата в 1С)

Способ 2: Каноническая строка (без точек и дефисов)

// Формат строго 8 символов (ГГГГММДД) или 14 (ГГГГММДДЧЧММСС)
КаноническаяДата = Дата("20231231235959");

Способ 3: Парсинг произвольной строки (ДД.ММ.ГГГГ) в дату

Функция ПреобразоватьСтрокуВДoffsets(СтрДата) Экспорт
    // Входная строка формата "31.12.2023 23:59:59"
    Попытка
        // Замена точек и двоеточий на пробелы
        Стр = СтрЗаменить(СтрЗаменить(СтрДата, ".", ""), ":", "");
        Стр = СтрЗаменить(Стр, " ", ""); // Получаем "31122023235959"
        
        День   = Сред(Стр, 1, 2);
        Месяц  = Сред(Стр, 3, 2);
        Год    = Сред(Стр, 5, 4);
        Час    = ?(СтрДлина(Стр) >= 10, Сред(Стр, 9, 2), 0);
        Минута = ?(СтрДлина(Стр) >= 12, Сред(Стр, 11, 2), 0);
        Секунда= ?(СтрДлина(Стр) >= 14, Сред(Стр, 13, 2), 0);
        
        Возврат Дата(Год, Месяц, День, Час, Минута, Секунда);
    Исключение
        Возврат Дата(1, 1, 1);
    КонецПопытки;
КонецФункции

Способ 4: Использование XMLЗначение для формата ISO 8601 (2023-12-31T23:59:59)

// Парсинг дат из REST API / JSON:
ДатаISO = "2023-12-31T23:59:59";
Дата1С  = XMLЗначение(Тип("Дата"), ДатаISO);
💡 Практика специалистов: Для парсинга дат из JSON и REST сервисов никогда не пишите парсер на строковых функциях — используйте XMLЗначение(Тип('Дата'), СтрокаISO) — это нативный и максимально быстрый метод C++ ядра платформы.

Частые вопросы (FAQ)

Как в 1С проверить дату на пустоту?

Используйте функцию ЗначениеЗаполнено(ПроверяемаяДата) или сравнение: ПроверяемаяДата = Дата(1, 1, 1) (или 'Дата("00010101")').

Почему Дата('2023-02-29') вызывает ошибку приведения типа?

2023 год не является високосным, поэтому 29 февраля в нем календарно не существует. 1С выполняет строгую проверку валидности календарной даты при конвертации.

Как преобразовать дату БСП-методами?

Используйте функцию СтроковыеФункцииКлиентСервер.СтрокаВДoffsets(СтрокаДаты, ФорматнаяСтрока).

Какой диапазон дат поддерживает платформа 1С:Предприятие 8?

Платформа поддерживает диапазон дат от 0001-01-01 00:00:00 до 3999-12-31 23:59:59. Использование годов >= 4000 или отрицательных годов невозможно.

Полезные материалы
Рекомендуем