Обмен данными между системами 1С:Предприятие и внешними сервисами часто требует корректного формирования XML-файлов. Одним из критичных моментов становится запись дат — ошибка в формате может привести к сбою загрузки, потере данных или некорректной обработке документов. Особенно актуальна эта тема для бухгалтеров, программистов 1С и специалистов по интеграциям, работающих с Коммерческой информацией (CommerceML), EnterpriseData или кастомизированными обменами.

В этой статье разберём все актуальные форматы дат для XML в 1С, типичные ошибки при их записи и способы валидации. Материал будет полезен как новичкам, так и опытным разработчикам, сталкивающимся с нюансами обмена между разными версиями платформы (8.2, 8.3) и внешними системами.

⚠️ Внимание: Форматы дат в XML могут зависеть от версий 1С:Предприятие и настроек обмена. Если вы работаете с нестандартными конфигурациями (например, 1С:ERP или 1С:УТ 11), уточните требования к формату в документации конкретного обмена или согласованного с партнёром протокола.

1. Стандартные форматы дат в XML для 1С

Платформа 1С:Предприятие поддерживает несколько форматов записи дат в XML, но наиболее распространёнными являются два:

  • 📅 Формат ISO 8601YYYY-MM-DD (например, 2026-12-31). Используется в большинстве современных обменов, включая CommerceML 2.0 и EnterpriseData.
  • 📅 Формат 1С с временемYYYYMMDDHHMMSS (например, 20261231235959). Часто применяется в выгрузках, где важно точное время (например, для документов или операций).

Выбор формата зависит от протокола обмена и требований принимающей системы. Например, ФНС для отчётности может требовать строгий ISO 8601, а внутренние обмены между базами 1С — использовать упрощённый формат без времени.

В некоторых случаях (например, при обмене с 1С:ЗУП) дата может записываться в виде ДД.ММ.ГГГГ, но это скорее исключение, связанное с настройками конкретной конфигурации. Для универсальных обменов всегда отдавайте предпочтение ISO 8601 — он поддерживается всеми современными системами и минимизирует риски ошибок.

📊 Какой формат дат вы чаще используете в XML для 1С?
ISO 8601 (YYYY-MM-DD)
YYYYMMDDHHMMSS
ДД.ММ.ГГГГ
Другой

2. Как 1С преобразует даты в XML: внутренние механизмы

При выгрузке данных в XML платформа 1С:Предприятие автоматически преобразует даты из внутреннего формата в строковый. Этот процесс зависит от:

  • 🔧 Версии платформы (в 8.3.20+ появилась улучшенная поддержка ISO 8601).
  • 📝 Типа данных (поле Дата или ДатаВремя).
  • ⚙️ Настроек обмена (в правилах конвертации можно явно указать формат).

Например, если в конфигурации задано поле типа Дата, то при выгрузке в XML оно по умолчанию преобразуется в YYYY-MM-DD. А если поле типа ДатаВремя — то в YYYY-MM-DDThh:mm:ss (с буквой"T" перед временем). Последний вариант чаще используется в обменах с 1С:ERP или 1С:УТ, где важна временная привязка документов.

Чтобы проверить, как именно 1С формирует дату в вашем случае, можно воспользоваться отладочной печатью или выгрузить тестовый XML-файл. Например, в коде обмена добавьте строку:

Сообщить(Формат(ТекущаяДата,"ДЛФ=DT"));

Это выведет дату в формате ISO 8601 с временем, который затем будет записан в XML.

💡

Если вы разрабатываете правила обмена, всегда тестируйте выгрузку дат на граничных значениях: 01.01.0001 (минимальная дата в 1С) и 31.12.9999 (максимальная). Некоторые системы могут некорректно обрабатывать крайние даты.

3. Примеры записи дат в XML для разных сценариев

Рассмотрим типовые случаи записи дат в XML-файлах для 1С с практическими примерами.

Сценарий обмена Формат даты в XML Пример записи Примечание
Выгрузка документов в CommerceML 2.0 YYYY-MM-DD <Дата>2026-10-15</Дата> Без времени, только дата
Обмен с 1С:ЗУП (табеля, начисления) YYYY-MM-DDThh:mm:ss <ДатаНачисления>2026-10-15T14:30:00</ДатаНачисления> Время важно для расчётов
Выгрузка в ФНС (отчётность) YYYY-MM-DD <ДатаСоставления>2026-12-31</ДатаСоставления> Строгий формат, ошибки не допускаются
Обмен с 1С:Розница (чеки, продажи) YYYYMMDDHHMMSS <МоментВремени>20261015143000</МоментВремени> Компактный формат для больших объёмов данных
Кастомизированный обмен (например, с CRM) Зависит от соглашения <CustomDate>15.10.2026</CustomDate> Может требовать дополнительной конвертации

Если вы разрабатываете собственный обмен, рекомендуется придерживаться ISO 8601 — это упростит интеграцию с другими системами. Например, для даты и времени в одном поле:

<ДатаДокумента>2026-10-15T14:30:00+03:00</ДатаДокумента>

Здесь +03:00 — это временная зона (может быть важно для международных обменов).

Что делать, если принимающая система требует нестандартный формат?

Если партнёр ждёт дату в формате, отличном от ISO (например, DD/MM/YYYY), вам придётся дорабатывать правила обмена. В 1С:Предприятие это можно сделать двумя способами:

1. Через XDTO-пакеты — создать собственное преобразование даты в нужный формат.

2. Через обработку XML перед отправкой — написать скрипт на XSLT или встроенном языке, который заменит даты после выгрузки.

Пример кода для замены формата:

СтрокаXML = СтрЗаменить(СтрокаXML,"2026-10-15","15/10/2026");

Но помните, что такие"костыли" усложняют поддержку обмена. Лучше договориться с партнёром о переходе на стандартный формат.

4. Типичные ошибки при записи дат и как их избежать

Ошибки в формате дат — одна из главных причин сбоев при обмене данными. Вот наиболее распространённые проблемы:

  • Несовпадение форматов — отправляете DD.MM.YYYY, а принимающая система ждёт YYYY-MM-DD. Решение: уточните требования к формату заранее.
  • Отсутствие ведущих нулей — запись 2026-1-5 вместо 2026-01-05. Некоторые парсеры XML могут не распознать такую дату.
  • Неверная временная зона — если в дате указано время, но нет смещения (+03:00), это может привести к сдвигу на несколько часов.
  • Использование недопустимых символов — например, запись 15.10.2026 г. вместо чистого 15.10.2026.

Чтобы избежать ошибок, всегда проверяйте XML-файл на валидность. Для этого можно использовать:

  • 🔍 Встроенную проверку в 1С:Предприятие (меню Файл → Открыть → Выбрать XML → Проверить).
  • 🔍 Онлайн-валидаторы XML (например, XML Validator от W3C).
  • 🔍 Логи обмена — в них часто пишутся ошибки разбора дат.

⚠️ Внимание: Если вы работаете с CommerceML 2.0, обратите внимание на атрибут ДатаФормирования в корневом элементе <КоммерческаяИнформация>. Он должен строго соответствовать формату YYYY-MM-DDThh:mm:ss, иначе некоторые системы (например, 1С:УТ 11) откажутся принимать файл.

Убедиться, что формат даты соответствует протоколу обмена

Проверить наличие ведущих нулей (01 вместо 1)

Указать временную зону, если требуется

Валидировать XML-файл перед отправкой

Сверить даты в логах обмена на предмет ошибок

-->

5. Как программно управлять форматом дат в 1С

Если стандартные механизмы выгрузки дат вас не устраивают, можно управлять форматом программно. Для этого в 1С:Предприятие есть несколько инструментов:

1. Функция Формат

Позволяет преобразовать дату в любую строковую форму. Примеры:

// Формат ISO 8601 без времени

ДатаСтрока = Формат(ТекущаяДата,"ДФ=yyyy-MM-dd");

// Формат с временем и временной зоной

ДатаСтрока = Формат(ТекущаяДата,"ДЛФ=DT") +"+03:00";

2. XDTO-пакеты

Если вы используете XDTO для обмена, можно задать формат даты прямо в схеме. Например:

<xs:simpleType name="dateType">

<xs:restriction base="xs:date"/>

</xs:simpleType>

Это гарантирует, что все даты в XML будут в формате YYYY-MM-DD.

3. Обработка XML через XSLT

Для сложных преобразований можно написать XSLT-шаблон, который приведёт все даты к нужному формату. Пример:

<xsl:template match="Дата">

<xsl:value-of select="format-date(xs:date(.),'[Y0001]-[M01]-[D01]')"/>

</xsl:template>

⚠️ Внимание: При программном управлении датами учитывайте настройки региональных стандартов в 1С. Если в конфигурации установлен формат даты ДД.ММ.ГГГГ, а вы выгружаете в ISO, может потребоваться явное преобразование.

💡

Используйте функцию Формат с параметром ДФ или ДЛФ для гарантированного получения даты в нужном формате, независимо от региональных настроек пользователя.

6. Особенности работы с датами в разных версиях 1С

Форматы дат в XML могут отличаться в зависимости от версии платформы 1С:Предприятие:

  • 🔹 1С 8.2 — по умолчанию использует формат ДД.ММ.ГГГГ для дат без времени и ДД.ММ.ГГГГ ЧЧ:ММ:СС для даты-времени. Требует ручной конвертации в ISO 8601.
  • 🔹 1С 8.3 (до 8.3.19) — поддерживает ISO 8601, но может выгружать даты в старом формате, если это задано в правилах обмена.
  • 🔹 1С 8.3.20+ — по умолчанию использует ISO 8601 для XML, но позволяет гибко настраивать формат через XDTO.

Если вы обновляете конфигурацию с 8.2 на 8.3, обязательно проверьте, как изменился формат дат в XML. Например, в 1С:Бухгалтерия 3.0 при переходе с 8.2 на 8.3 формат дат в выгружаемых отчётах для ФНС может поменяться с ДД.ММ.ГГГГ на YYYY-MM-DD, что потребует корректировки на стороне получателя.

Для проверки версии платформы и её возможностей используйте код:

Сообщить("Версия платформы:" + Строка(Платформа8.ХХ)); // где XX - ваша версия
Как узнать, какой формат дат используется в вашей конфигурации?

1. Выгрузите тестовый XML-файл через стандартный обмен.

2. Откройте его в текстовом редакторе и найдите тег с датой.

3. Если дата в формате 31.12.2026 — у вас старый формат (typical для 8.2).

4. Если 2026-12-31 — современный ISO 8601 (typical для 8.3).

5. В сомнительных случаях проверьте настройки XDTO-пакетов или правил обмена.

7. Практический пример: выгрузка даты в CommerceML

Рассмотрим пошаговый пример, как правильно записать дату в XML для обмена CommerceML 2.0 — одного из самых распространённых форматов обмена данными в 1С.

Шаг 1. Подготовка данных

Допустим, у нас есть документ РеализацияТоваровУслуг с датой 15.10.2026 14:30:00. Нам нужно выгрузить её в XML в формате YYYY-MM-DD (без времени).

Шаг 2. Код выгрузки

// Получаем дату документа

ДатаДокумента = Документ.Дата;

// Преобразуем в строку в формате ISO

ДатаСтрока = Формат(ДатаДокумента,"ДФ=yyyy-MM-dd");

// Записываем в XML

ЗаписатьXML;

ПисательXML.ЗаписатьНачалоЭлемента("Дата");

ПисательXML.ЗаписатьТекст(ДатаСтрока);

ПисательXML.ЗаписатьКонецЭлемента;

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

Шаг 3. Результирующий XML

<Документ>

<Дата>2026-10-15</Дата>

<Номер>РТУ-00001</Номер>

</Документ>

Шаг 4. Проверка

Откройте полученный XML в валидаторе (например, Notepad++ с плагином XML Tools) и убедитесь, что дата записана корректно. Если обмен идёт с 1С:УТ или 1С:ERP, проверьте логи загрузки на предмет ошибок типа "Неверный формат даты".

⚠️ Внимание: В CommerceML дата документа (<Дата>) и дата формирования файла (<ДатаФормирования>) могут иметь разные форматы. Убедитесь, что оба поля соответствуют требованиям протокола.

8. Частые вопросы и решения (FAQ)

🔍 Почему при обмене дата сдвигается на один день?

Эточная проблема при несовпадении временных зон. Например, если в 1С дата записана как 2026-10-15T23:00:00+03:00 (московское время), а принимающая система интерпретирует её как UTC (2026-10-15T20:00:00Z), то при конвертации в локальное время может получиться 2026-10-16.

Решение: Явно указывайте временную зону в дате или договоритесь с партнёром об использовании UTC.

🔍 Как выгрузить дату в формате ДД.ММ.ГГГГ, если система требует ISO?

Используйте функцию Формат с параметром "ДФ=DD.MM.YYYY", но помните, что это может привести к ошибкам при загрузке в системы, ожидающие ISO 8601. Лучше согласуйте с партнёром переход на стандартный формат.

Пример кода:

ДатаСтрока = Формат(ТекущаяДата,"ДФ=DD.MM.YYYY");
🔍 Можно ли в XML для 1С записать дату без разделителей (например, 20261015)?

Да, такой формат (YYYYMMDD) поддерживается, но он менее читаемый и может вызвать проблемы при ручной проверке XML. Чаще всего его используют в высоконагруженных системах для экономии места (например, в обменах с 1С:Розница).

Пример:

<Дата>20261015</Дата>
🔍 Как обработать дату 01.01.0001 в XML?

Дата 01.01.0001 (минимальная дата в 1С) часто вызывает ошибки при обмене, так как многие системы не поддерживают такие крайние значения. Решения:

  • Замените её на null или пустую строку в XML.
  • Используйте условную дату (например, 01.01.1900), если это допустимо бизнес-логикой.
  • Настройте правила обмена так, чтобы такие даты не выгружались.

Пример кода для замены:

Если Дата = Дата(1,1,1) Тогда

ДатаСтрока ="";

Иначе

ДатаСтрока = Формат(Дата,"ДФ=yyyy-MM-dd");

КонецЕсли;

🔍 Где в 1С посмотреть логи ошибок обмена с датами?

Логи обмена хранятся в следующих местах:

  • Для CommerceML: Администрирование → Обмен данными → Логи обмена.
  • Для EnterpriseData: Администрирование → Поддержка и обслуживание → Логи регистрации.
  • Для кастомизированных обменов: проверьте каталог временных файлов (обычно %TEMP% или подкаталог базы 1С).

Ищите ошибки с текстами типа "Ошибка разбора даты" или "Неверный формат значения".