Разработка и Конфигурация · 13 мин
Ошибка 1С: преобразование значения к типу Дата не может быть выполнено — как исправить
Почему в 1С возникает ошибка «преобразование значения к типу Дата не может быть выполнено»: причины, способы исправления в коде и данных, проверка результата.
Ошибка «Преобразование значения к типу Дата не может быть выполнено» появляется, когда платформа 1С пытается привести строку, число или другое значение к типу «Дата», но формат исходного значения не распознаётся. Чаще всего сбой возникает при загрузке данных из Excel, CSV, при обмене между базами, при работе внешних обработок и при ручном вводе дат в нестандартном формате.
Ошибка относится к времени выполнения: код синтаксически корректен, но в момент исполнения функция Дата() или неявное приведение типа получает значение, которое невозможно интерпретировать. Например, строка «32.13.2026», пустая строка, значение NULL из запроса или текст «не указано» вместо даты.
Исправление всегда строится по одной схеме: найти место преобразования, определить, какое именно значение туда попадает, и либо скорректировать данные, либо добавить безопасную обработку в код. Ниже разобраны конкретные сценарии и способы устранения.
Где искать источник ошибки
Первый шаг — определить, в каком объекте возникает сбой. Текст сообщения об ошибке обычно содержит имя модуля и номер строки, если проблема в коде. Если ошибка появляется при проведении документа или записи элемента справочника без указания строки — ищите проблему в данных: в реквизитах объекта, в табличных частях, в связанных регистрах.
Типичные места возникновения:
- внешние обработки загрузки данных из Excel, CSV, DBF;
- обмены данными (конвертация, планы обмена, веб-сервисы);
- процедуры проведения документов, где дата вычисляется из строковых реквизитов;
- запросы с параметрами типа «Дата», куда передано пустое или строковое значение;
- печатные формы и отчёты, формирующие период из пользовательского ввода.
Если ошибка возникает у конкретного пользователя при открытии формы — проверьте сохранённые настройки отчёта или формы: в них могла сохраниться дата в формате, который текущие региональные настройки сеанса не распознают.
Откройте конфигуратор, перейдите к указанной строке и проверьте, какое значение приходит в преобразование
Проверьте формат дат в исходном файле: разделители, порядок дня и месяца, пустые ячейки
Сбросьте настройки формы или отчёта, проверьте язык сеанса
Сравните поведение на копии базы до обновления, проверьте новые обработчики
Какие значения вызывают ошибку
Платформа 1С строго относится к форматам. Функция Дата() принимает строку только в виде «ГГГГММДД» или «ГГГГММДДЧЧММСС» без разделителей, либо числовые компоненты: Дата(2026, 5, 17). Любое отклонение вызывает исключение.
Значения, которые гарантированно приводят к ошибке:
- строка «17.05.2026» с разделителями-точками — для функции
Дата()это недопустимый формат; - пустая строка или строка из пробелов;
- даты с несуществующими значениями: «20260230», «20261301»;
- значение Неопределено или NULL из запроса;
- число, переданное как единственный аргумент строкового варианта функции;
- текстовые метки вроде «бессрочно», «—», «н/д», которые попали в колонку дат при загрузке.
Отдельный случай — неявное преобразование. Когда строковому значению присваивается реквизит типа «Дата», платформа пытается выполнить приведение автоматически, и ошибка возникает уже на присваивании, а не в явном вызове функции.
Исправление в коде: безопасное преобразование
Если источник данных не контролируется (файлы контрагентов, выгрузки из других систем), преобразование нужно оборачивать в проверку. Самый надёжный способ — попытка с обработкой исключения:
Функция СтрокаВДату(СтрокаДаты)
Результат = Дата(1, 1, 1);
Если Не ЗначениеЗаполнено(СтрокаДаты) Тогда
Возврат Результат;
КонецЕсли;
Попытка
Результат = Дата(СтрЗаменить(СтрокаДаты, ".", ""));
Исключение
// Логирование или сообщение пользователю
КонецПопытки;
Возврат Результат;
КонецФункции
Для формата «ДД.ММ.ГГГГ» простая замена точек не всегда корректна: строка «17.05.2026» после удаления точек станет «17052026», что функция Дата() не примет — ей нужен порядок ГГГГММДД. Правильнее разобрать строку по разделителю и собрать дату из компонентов:
Части = СтрРазделить(СтрокаДаты, ".");
Если Части.Количество() = 3 Тогда
Результат = Дата(Число(Части[2]), Число(Части[1]), Число(Части[0]));
КонецЕсли;
При загрузке из Excel учитывайте, что ячейка с датой может приходить как число (порядковый номер дня в системе дат Excel) или как уже готовое значение типа «Дата» — в зависимости от способа чтения файла. Перед преобразованием проверяйте фактический тип через ТипЗнч().
Попытка
НоваяДата = Дата(СтрЗаменить(СтрокаИзФайла, ".", ""));
Исключение
НоваяДата = Дата(1,1,1);
Сообщить("Строка " + НомерСтроки + ": не удалось преобразовать дату '" + СтрокаИзФайла + "'");
КонецПопытки;Исправление при загрузке данных из файлов
Загрузка из Excel и CSV — самый частый источник ошибки. Проблема обычно в смешанных форматах: часть ячеек содержит даты, часть — текст, а пустые ячейки при чтении дают пустую строку. Перед запуском загрузки откройте файл и проверьте колонку с датами на единообразие.
Практический порядок действий при ошибке загрузки:
- Найдите в сообщении об ошибке номер строки файла, если обработка его выводит. Если нет — добавьте вывод номера строки в лог или загружайте файл частями.
- Откройте проблемную строку в файле и посмотрите фактическое содержимое ячейки. В Excel проверяйте не отображаемый, а реальный формат: ячейка может показывать дату, но хранить текст.
- Приведите всю колонку к единому формату: в Excel выделите колонку, задайте формат «Дата» или преобразуйте в текст вида «ДД.ММ.ГГГГ».
- Удалите или обработайте служебные значения: «—», «бессрочно», итоговые строки в конце файла.
- Повторите загрузку на копии базы или в тестовом режиме обработки, если он предусмотрен.
Если файл формирует сторонняя система и формат менять нельзя, корректируйте обработку загрузки: добавьте нормализацию строки перед преобразованием, как показано в предыдущем разделе.
- 1Зафиксируйте полный текст ошибки и номер строки файла или модуля
- 2Проверьте фактическое содержимое и формат ячеек с датами в файле
- 3Приведите колонку дат к единому формату ДД.ММ.ГГГГ или ГГГГММДД
- 4Уберите текстовые значения и пустые строки из колонки дат
- 5Повторите загрузку на копии базы и проверьте результат
- 6Если ошибка повторяется — добавьте в обработку попытку/исключение с логированием проблемных значений
Ошибка в запросах и параметрах
В запросах ошибка возникает, когда параметр типа «Дата» получает неподходящее значение: пустую строку, Неопределено или строку, которую разработчик ожидал автоматически преобразовать. Платформа не выполняет неявное приведение строки к дате в параметрах запроса так, как ожидают многие начинающие разработчики.
Перед установкой параметра проверяйте и нормализуйте значение:
Если ЗначениеЗаполнено(ПериодСтрокой) Тогда
Запрос.УстановитьПараметр("Период", Дата(СтрЗаменить(ПериодСтрокой, ".", "")));
Иначе
Запрос.УстановитьПараметр("Период", Дата(1, 1, 1));
КонецЕсли;
Ещё один сценарий — значение NULL в результате соединения таблиц. Если поле даты приходит из левого соединения, для незаполненных записей оно будет NULL, и попытка использовать его как дату в коде после выборки вызовет ошибку. Используйте в запросе ЕСТЬNULL(Поле, ДАТАВРЕМЯ(1,1,1)) или проверку Значение = NULL в обходе результата.
Настройки сеанса и региональные форматы
Если код и данные корректны, но ошибка возникает у отдельных пользователей, проверьте региональные настройки сеанса. Язык и формат дат сеанса влияют на то, как платформа интерпретирует строки при неявном преобразовании и как пользователь вводит даты в полях.
Что проверить:
- региональные настройки информационной базы (Администрирование → Параметры информационной базы);
- язык сеанса конкретного пользователя;
- сохранённые настройки отчётов и форм — очистите их через «Управление настройками» или удалением настроек пользователя;
- формат дат в операционной системе сервера, если преобразование выполняется на сервере с участием COM-объектов или внешних компонентов.
После изменения региональных настроек базы перезапустите сеанс: настройки подхватываются при старте, а не на лету.
Как проверить результат
Документ проводится, загрузка завершается без сообщений об ошибке
Ошибка возникает снова на том же или следующем значении
Даты в документах соответствуют значениям из файла, пустые даты имеют вид 01.01.0001
Даты смещены на день/месяц или стоят случайные значения
Все строки обработаны, предупреждения содержат только ожидаемые пропуски
Есть необработанные строки без объяснения причины
Типичные ошибки при исправлении
Первая распространённая ошибка — «глушение» исключения пустым блоком Попытка ... Исключение КонецПопытки; без логирования. Ошибка перестаёт появляться, но данные молча теряются: даты записываются пустыми, а расхождения обнаруживаются при сверке через месяцы. Всегда фиксируйте проблемное значение в журнале регистрации или сообщении.
Вторая — исправление данных в файле вручную без исправления причины. Если файл формируется внешней системой регулярно, ручная правка поможет один раз, и ошибка вернётся при следующей загрузке. Устойчивое решение — либо изменение формата на стороне источника, либо нормализация в обработке загрузки.
Третья — путаница между порядком дня и месяца при разборе строки. Формат «05.06.2026» может означать 5 июня или 6 мая. Если источник данных иностранный, уточните применяемый формат, иначе загрузите даты с переставленными компонентами без единой ошибки.
Как проверить, что проблема решена
После исправления выполните полный цикл операции, которая вызывала ошибку: загрузите файл целиком, проведите проблемный документ, сформируйте отчёт за тот же период. Успешное завершение без сообщений — первый признак, но не единственный.
Затем проверьте качество данных: выборочно сравните даты в загруженных документах с исходным файлом, убедитесь, что пустые даты имеют значение 01.01.0001, а не случайные значения. Если исправляли код — прогоните обработку на файле с заведомо «плохими» строками и убедитесь, что они попадают в лог, а не обрывают загрузку.
Для серверной базы дополнительно посмотрите журнал регистрации за период исправления: там не должно быть новых ошибок преобразования от других пользователей или регламентных заданий.
Что важно запомнить
Ошибка преобразования к типу «Дата» всегда означает неподходящее входное значение. Найдите его через текст ошибки или отладчик, нормализуйте формат или добавьте попытку с логированием, а массовые исправления выполняйте только после резервного копирования и проверки на копии базы.
Частые вопросы
Почему функция Дата("17.05.2026") выдаёт ошибку?
Строковый вариант функции Дата() принимает только формат «ГГГГММДД» без разделителей, например Дата("20260517"). Строку с точками нужно предварительно разобрать по разделителю и собрать дату из числовых компонентов: Дата(Год, Месяц, День).
Ошибка возникает только при загрузке Excel, вручную документы создаются нормально. Что делать?
Проблема в данных файла. Проверьте фактический формат ячеек с датами (не отображаемый, а реальный), наличие пустых ячеек и текстовых значений вроде «—» или «бессрочно». Приведите колонку к единому формату или добавьте нормализацию значений в обработку загрузки.
Можно ли просто обернуть код в Попытку/Исключение и забыть про ошибку?
Технически можно, но это опасно: проблемные значения будут молча заменяться пустыми датами, и расхождения в учёте обнаружатся поздно. Обязательно логируйте каждое неудачное преобразование с указанием исходного значения и места возникновения.
Ошибка появляется только у одного пользователя. В чём причина?
Скорее всего, дело в сохранённых настройках формы или отчёта либо в региональных настройках сеанса. Очистите настройки пользователя для проблемного объекта и проверьте язык сеанса. Если не помогло — сравните региональные параметры информационной базы с ожидаемым форматом дат.
Как исправить ошибку в запросе с параметром-датой?
Проверьте, что в УстановитьПараметр передаётся именно значение типа «Дата», а не строка или Неопределено. Нормализуйте значение перед установкой параметра, а для полей из левых соединений используйте ЕСТЬNULL(Поле, ДАТАВРЕМЯ(1,1,1)) в тексте запроса.
После обновления конфигурации начала появляться ошибка. Куда смотреть?
Сравните поведение на копии базы, снятой до обновления. Проверьте новые или изменённые обработчики проведения, подписки на события и процедуры обновления данных — именно они чаще всего начинают передавать в преобразование значения, которые раньше не встречались.