Формат даты в 1С задают функцией Формат(): она превращает значение типа Дата в строку по форматной строке. Сама дата при этом не меняется, меняется только её вид в сообщении, печатной форме, имени файла или выгрузке. Поэтому дату без времени для вывода получают через Формат(), а для сравнений и отборов время отрезают у значения: функцией НачалоДня() в коде и НАЧАЛОПЕРИОДА() в запросе.
Во всех примерах одна дата — Дата(2026, 3, 5, 14, 7, 9), четверг. Результаты в комментариях даны для русской локали, платформа 8.3.
Синтаксис: Формат(Значение, ФорматнаяСтрока). Форматная строка — это параметры вида Имя=Значение через точку с запятой. Для дат работают четыре параметра: ДФ — свой шаблон из символов, ДЛФ — готовый формат из региональных настроек, ДП — текст для пустой даты, Л — язык названий месяцев и дней недели. Значение с пробелами, двоеточиями и запятыми берите в одинарные или двойные кавычки.
&НаКлиенте
Процедура ПоказатьФорматыДаты(Команда)
Момент = Дата(2026, 3, 5, 14, 7, 9); // четверг, 5 марта 2026 года, 14:07:09
// ДФ — свой шаблон из символов d, M, y, H, m, s
Сообщить(Формат(Момент, "ДФ=dd.MM.yyyy")); // 05.03.2026
Сообщить(Формат(Момент, "ДФ=d.M.yy")); // 5.3.26
Сообщить(Формат(Момент, "ДФ='dd.MM.yyyy HH:mm'")); // 05.03.2026 14:07
Сообщить(Формат(Момент, "ДФ='hh:mm'")); // 02:07 (12-часовой формат)
Сообщить(Формат(Момент, "ДФ=дд.ММ.гггг")); // 05.03.2026 (русские символы)
// ДЛФ — готовые форматы из региональных настроек
Сообщить(Формат(Момент, "ДЛФ=Д")); // 05.03.2026
Сообщить(Формат(Момент, "ДЛФ=ДД")); // 5 марта 2026 г.
Сообщить(Формат(Момент, "ДЛФ=В")); // 14:07:09
Сообщить(Формат(Момент, "ДЛФ=ДВ")); // 05.03.2026 14:07:09
Сообщить(Формат(Момент, "ДЛФ=ДДВ")); // 5 марта 2026 г. 14:07:09
// ДП — текст вместо пустой даты; параметры разделяются точкой с запятой
ПустаяДата = Дата(1, 1, 1);
Сообщить(Формат(ПустаяДата, "ДЛФ=Д")); // "" (пустая строка)
Сообщить(Формат(ПустаяДата, "ДЛФ=Д; ДП='не указана'")); // не указана
// Л — язык названий месяцев и дней недели
Сообщить(Формат(Момент, "Л=en_US; ДФ='d MMMM yyyy'")); // 5 March 2026
КонецПроцедуры
В ДФ важен регистр: MM — месяц, mm — минуты, HH — часы от 0 до 23, hh — от 1 до 12. ДЛФ принимает только Д, ДД, В, ДВ и ДДВ, порядок даты и времени менять нельзя. Пустую дату Формат() без ДП превращает в пустую строку, а Строка() — в «01.01.0001 0:00:00».
| Символ | Русский | Что выводит | Пример |
|---|---|---|---|
d, dd | д, дд | день месяца без нуля и с нулём | 5, 05 |
ddd, dddd | ддд, дддд | день недели кратко и полностью | четверг (для dddd) |
M, MM | М, ММ | номер месяца | 3, 03 |
MMM, MMMM | МММ, ММММ | месяц кратко и полностью | Март; «марта», если в шаблоне есть день |
q | к | номер квартала | 1 |
y, yy, yyyy | г, гг, гггг | год без века, без века с нулём, полностью | 26, 26, 2026 |
H, HH | Ч, ЧЧ | час от 0 до 23 | 14, 14 |
h, hh | ч, чч | час от 1 до 12 | 2, 02 |
m, mm | м, мм | минуты | 7, 07 |
s, ss | с, сс | секунды | 9, 09 |
| Задача | Второй параметр Формат() | Результат |
|---|---|---|
| Дата без времени | "ДЛФ=Д" | 05.03.2026 |
| Дата и время | "ДЛФ=ДВ" | 05.03.2026 14:07:09 |
| Без секунд | "ДФ='dd.MM.yyyy HH:mm'" | 05.03.2026 14:07 |
| Только время | "ДЛФ=В" | 14:07:09 |
| Месяц прописью | "ДЛФ=ДД" | 5 марта 2026 г. |
| Месяц и год | "ДФ='MMMM yyyy'" | Март 2026 |
| Месяц и год цифрами | "ДФ=MM.yyyy" | 03.2026 |
| Год | "ДФ=yyyy" | 2026 |
| Квартал | "ДФ=""q 'квартал' yyyy""" | 1 квартал 2026 |
| День недели | "ДФ=dddd" | четверг |
| Имя файла | "ДФ=yyyyMMdd_HHmmss" | 20260305_140709 |
| Дата для обмена | "ДФ=yyyy-MM-dd" | 2026-03-05 |
| Пустая дата | "ДЛФ=Д; ДП='не указана'" | не указана |
Обычный текст внутри шаблона, если его буквы совпадают с символами формата («г.», «квартал», латинская T), берут в одинарные кавычки, а само значение ДФ — в двойные. В строковом литерале 1С двойная кавычка удваивается, поэтому получается "ДФ=""d MMMM yyyy 'г.'""". Буквы, которых нет в списке, выводятся как есть.
// Модуль формы списка документов
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
// Колонка «Дата»: время не показываем, но в базе оно остаётся
Элементы.Дата.Формат = "ДЛФ=Д";
КонецПроцедуры
&НаКлиенте
Процедура ПроверитьДатуОтгрузки(Команда)
Момент = Дата(2026, 3, 5, 14, 7, 9);
ПлановаяДата = Дата(2026, 3, 5); // 05.03.2026 0:00:00
// Представление без времени — это только строка
Сообщить(Формат(Момент, "ДЛФ=Д")); // 05.03.2026
// Сравнение идёт с точностью до секунды
Сообщить("Совпадает: " + (Момент = ПлановаяДата)); // Совпадает: Нет
Сообщить("Тот же день: " + (НачалоДня(Момент) = ПлановаяДата)); // Тот же день: Да
// Границы дня для отбора в запросе
НачалоОтбора = НачалоДня(Момент);
КонецОтбора = КонецДня(Момент);
Сообщить(Формат(НачалоОтбора, "ДФ='dd.MM.yyyy HH:mm:ss'")); // 05.03.2026 00:00:00
Сообщить(Формат(КонецОтбора, "ДФ='dd.MM.yyyy HH:mm:ss'")); // 05.03.2026 23:59:59
КонецПроцедуры
Свойство Формат у колонки списка убирает время только с экрана, значение не меняется. Для сравнения используйте НачалоДня(), для отбора за день — пару НачалоДня() и КонецДня(). Если время реквизиту не нужно совсем, задайте в его типе «Состав даты: Дата» — тогда оно не хранится и не показывается.
В поле ввода даты действуют ограничения платформы: ДП не используется, ДЛФ работает только со значениями Д, В и ДВ, названия месяцев и дней недели не применяются. Вид «5 марта 2026 г.» выводите в надписи или печатной форме.
&НаКлиенте
Процедура ДатаСловами(Команда)
Момент = Дата(2026, 3, 5, 14, 7, 9);
Сообщить(Формат(Момент, "ДФ='MMMM yyyy'")); // Март 2026
Сообщить(Формат(Момент, "ДФ='d MMMM yyyy'")); // 5 марта 2026
Сообщить(Формат(Момент, "ДФ=""d MMMM yyyy 'г.'""")); // 5 марта 2026 г.
Сообщить(Формат(Момент, "ДФ='dddd, d MMMM'")); // четверг, 5 марта
Сообщить(Формат(Момент, "ДФ=""q 'квартал' yyyy 'г.'""")); // 1 квартал 2026 г.
Сообщить(Формат(Момент, "Л=en_US; ДФ='MMMM d, yyyy'")); // March 5, 2026
// Родительный падеж без числа: отрезаем «05 » от «05 марта»
МесяцРодительный = Сред(Формат(Момент, "ДФ='dd MMMM'"), 4); // марта
// Именительный падеж строчными и день недели с заглавной буквы
МесяцСтрочными = НРег(Формат(Момент, "ДФ=MMMM")); // март
ДеньНедели = Формат(Момент, "ДФ=dddd"); // четверг
ДеньНедели = ВРег(Лев(ДеньНедели, 1)) + Сред(ДеньНедели, 2); // Четверг
// Название месяца по номеру, например из настроек отчёта
НомерМесяца = 11;
НазваниеМесяца = Формат(Дата(2000, НомерМесяца, 1), "ДФ=MMMM"); // Ноябрь
Сообщить(МесяцРодительный + ", " + МесяцСтрочными + ", " + ДеньНедели + ", " + НазваниеМесяца);
// марта, март, Четверг, Ноябрь
КонецПроцедуры
&НаСервереБезКонтекста
Функция ШапкаСчета(Номер, ДатаСчета, СрокОплаты)
ТабДок = Новый ТабличныйДокумент;
ТабДок.Область("R1C1").Текст = "Счёт на оплату № " + Номер + " от " + Формат(ДатаСчета, "ДЛФ=ДД");
ТабДок.Область("R2C1").Текст = "Оплатить до: " + Формат(СрокОплаты, "ДЛФ=Д; ДП='не установлен'");
// Счёт на оплату № 15 от 5 марта 2026 г.
// Оплатить до: 12.03.2026, а для пустой даты — «Оплатить до: не установлен»
Возврат ТабДок;
КонецФункции
Падеж MMMM зависит от шаблона: рядом с днём месяц стоит в родительном падеже («5 марта»), без дня — в именительном («Март 2026»). Приём с Сред(…, 4) даёт родительный падеж без числа: dd всегда занимает два символа, ещё один — пробел. «Квартал» взят в кавычки, потому что русская к — это номер квартала. Параметр Л фиксирует язык названий независимо от языка пользователя.
В печатной форме строку собирают так же, как в ШапкаСчета. Если в макете ячейка заполняется параметром с датой, формат задают в свойстве ячейки «Формат», например ДЛФ=ДД; программно это свойство Формат у ОбластьЯчеекТабличногоДокумента.
&НаСервереБезКонтекста
Функция ИмяФайлаВыгрузки(Префикс)
// Остатки_20260305_140709.xml: без «:» и «/», файлы сортируются по времени создания
Возврат Префикс + "_" + Формат(ТекущаяДатаСеанса(), "ДФ=yyyyMMdd_HHmmss") + ".xml";
КонецФункции
&НаСервереБезКонтекста
Функция ДатаДляОбмена(ДатаЗначение)
Результат = Новый Структура;
// ISO 8601 для XML и большинства API: 2026-03-05T14:07:09
Результат.Вставить("ISO", XMLСтрока(ДатаЗначение));
// То же через Формат: буква T в одинарных кавычках выводится как текст
Результат.Вставить("ISOЧерезФормат", Формат(ДатаЗначение, "ДФ=""yyyy-MM-dd'T'HH:mm:ss"""));
// Только дата: 2026-03-05
Результат.Вставить("ТолькоДата", Формат(ДатаЗначение, "ДФ=yyyy-MM-dd"));
// Время в UTC для JSON: 2026-03-05T11:07:09Z при часовом поясе сеанса UTC+3
Результат.Вставить("UTC", ЗаписатьДатуJSON(ДатаЗначение, ФорматДатыJSON.ISO,
ВариантЗаписиДатыJSON.УниверсальнаяДата));
Возврат Результат;
КонецФункции
В имени файла год ставят первым, а двоеточия и слеши не используют: Windows не пропускает их в имени. Если выгрузка может запуститься дважды за секунду, добавьте к имени Новый УникальныйИдентификатор. Разница между XMLСтрока() и Формат() видна на пустой дате: XMLСтрока() вернёт «0001-01-01T00:00:00», Формат() — пустую строку.
ЗаписатьДатуJSON() с вариантом УниверсальнаяДата пишет время в UTC с суффиксом Z. Эта функция недоступна в веб-клиенте, а ТекущаяДатаСеанса() — в тонком, поэтому обе функции примера серверные.
// Разбирает «05.03.2026», «5.3.26 14:07», «2026-03-05T14:07:09+03:00», «20260305».
// Если строку разобрать нельзя, возвращает пустую дату.
&НаСервереБезКонтекста
Функция СтрокаВДату(Знач Текст)
ПустаяДата = Дата(1, 1, 1);
Текст = СокрЛП(Текст);
Если ПустаяСтрока(Текст) Тогда
Возврат ПустаяДата;
КонецЕсли;
Попытка
Если СтрНайти(Текст, "-") > 0 Тогда
// ISO 8601: первые 19 символов, смещение пояса и доли секунды отбрасываем
Если СтрДлина(Текст) = 10 Тогда
Текст = Текст + "T00:00:00";
КонецЕсли;
Возврат XMLЗначение(Тип("Дата"), СтрЗаменить(Лев(Текст, 19), " ", "T"));
КонецЕсли;
Если СтрНайти(Текст, ".") = 0 Тогда
// Канонический вид: ГГГГММДД или ГГГГММДДччммсс
Возврат Дата(Текст);
КонецЕсли;
// Вид дд.ММ.гггг с необязательным временем чч:мм[:сс]
Части = СтрРазделить(Текст, ". :", Ложь);
Если Части.Количество() < 3 Тогда
Возврат ПустаяДата;
КонецЕсли;
НомерГода = Число(Части[2]);
Если НомерГода < 100 Тогда
НомерГода = НомерГода + 2000;
КонецЕсли;
Часы = ?(Части.Количество() > 3, Число(Части[3]), 0);
Минуты = ?(Части.Количество() > 4, Число(Части[4]), 0);
Секунды = ?(Части.Количество() > 5, Число(Части[5]), 0);
Возврат Дата(НомерГода, Число(Части[1]), Число(Части[0]), Часы, Минуты, Секунды);
Исключение
// Например: «Преобразование значения к типу Дата не может быть выполнено»
Возврат ПустаяДата;
КонецПопытки;
КонецФункции
Конструктор Дата(Строка) надёжно понимает только канонический вид «ГГГГММДДччммсс» или «ГГГГММДД». Локальный вид синтаксис-помощник тоже допускает, но результат зависит от региональных настроек сеанса, поэтому «05.03.2026» разбираем явно: СтрРазделить() режет строку по каждому символу из «. :». ISO-строку отдаём XMLЗначение(), обратной операции к XMLСтрока(); смещение пояса («+03:00», «Z») при этом отбрасывается. Попытка превращает неверную строку в пустую дату вместо остановки обработки.
В языке запросов нет функции Формат() и нет приведения даты к строке: ВЫРАЗИТЬ(Док.Дата КАК СТРОКА(10)) завершится ошибкой. Запрос работает с датой как с датой: отрезает время, достаёт части числами, сравнивает и сдвигает.
| Задача | В запросе | В коде |
|---|---|---|
| Дата без времени | НАЧАЛОПЕРИОДА(Дата, ДЕНЬ) | НачалоДня(Дата) |
| Год, месяц, день числом | ГОД(), МЕСЯЦ(), ДЕНЬ() | Год(), Месяц(), День() |
| День недели (1 — понедельник) | ДЕНЬНЕДЕЛИ() | ДеньНедели() |
| Сдвиг и разница дат | ДОБАВИТЬКДАТЕ(), РАЗНОСТЬДАТ() | ДобавитьМесяц(), вычитание дат в секундах |
| Дата-константа | ДАТАВРЕМЯ(2026, 3, 5) | Дата(2026, 3, 5) |
| Стандартное представление | ПРЕДСТАВЛЕНИЕ(Дата), только в результат | Строка(Дата) |
| Строка по шаблону, месяц прописью | нельзя | Формат() |
&НаСервереБезКонтекста
Функция ОтгрузкиВВыходные(НачалоПериода, КонецПериода)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Док.Номер КАК Номер,
| Док.Дата КАК Дата,
| НАЧАЛОПЕРИОДА(Док.Дата, ДЕНЬ) КАК День,
| РАЗНОСТЬДАТ(Док.Дата, &ДатаОтчета, ДЕНЬ) КАК ПрошлоДней
|ИЗ
| Документ.РеализацияТоваровУслуг КАК Док
|ГДЕ
| Док.Проведен
| И Док.Дата МЕЖДУ &НачалоПериода И &КонецПериода
| И ДЕНЬНЕДЕЛИ(Док.Дата) В (6, 7)
|
|УПОРЯДОЧИТЬ ПО
| Док.Дата";
Запрос.УстановитьПараметр("НачалоПериода", НачалоДня(НачалоПериода));
Запрос.УстановитьПараметр("КонецПериода", КонецДня(КонецПериода));
Запрос.УстановитьПараметр("ДатаОтчета", ТекущаяДатаСеанса());
Строки = Новый Массив;
ТекущийДень = Дата(1, 1, 1);
Выборка = Запрос.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
// Заголовок дня собираем в коде: в языке запросов нет Формат()
Если Выборка.День <> ТекущийДень Тогда
ТекущийДень = Выборка.День;
Строки.Добавить(Формат(ТекущийДень, "ДФ='dddd, d MMMM yyyy'")); // суббота, 7 марта 2026
КонецЕсли;
// Например: № 0000-000123 в 11:30, прошло дней: 201
Строки.Добавить("№ " + Выборка.Номер + " в " + Формат(Выборка.Дата, "ДФ='HH:mm'")
+ ", прошло дней: " + Формат(Выборка.ПрошлоДней, "ЧН=0; ЧГ=0"));
КонецЦикла;
Возврат Строки;
КонецФункции
Условие ДЕНЬНЕДЕЛИ(Док.Дата) В (6, 7) отбирает субботу и воскресенье на стороне СУБД, а НАЧАЛОПЕРИОДА(…, ДЕНЬ) даёт дату без времени, по которой удобно группировать. Заголовок «суббота, 7 марта 2026» строится уже в цикле выборки через Формат(). Функция серверная: на клиенте объекта Запрос нет.
В конструкторе схемы формат задают на вкладке «Наборы данных»: колонка «Оформление» у поля, параметр «Формат», например ДЛФ=Д. Второй путь — вкладка «Настройки», «Условное оформление», параметр «Формат» для нужных полей. В вычисляемом поле доступна функция языка выражений СКД: Формат(Дата, "ДФ='MMMM yyyy'"). Программно формат задаёт условное оформление в модуле отчёта.
// Модуль объекта отчёта (выполняется на сервере).
// В наборе данных схемы есть поля «Дата» и «ДатаОплаты».
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Схема = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
УстановитьФорматПоля(Настройки, "Дата", "ДЛФ=Д"); // 05.03.2026
УстановитьФорматПоля(Настройки, "ДатаОплаты", "ДЛФ=Д; ДП='не оплачено'"); // пустая дата: не оплачено
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, Настройки, ДанныеРасшифровки);
Процессор = Новый ПроцессорКомпоновкиДанных;
Процессор.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ДокументРезультат.Очистить();
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(Процессор);
КонецПроцедуры
Процедура УстановитьФорматПоля(Настройки, ИмяПоля, ФорматнаяСтрока)
ЭлементОформления = Настройки.УсловноеОформление.Элементы.Добавить();
ОформляемоеПоле = ЭлементОформления.Поля.Элементы.Добавить();
ОформляемоеПоле.Поле = Новый ПолеКомпоновкиДанных(ИмяПоля);
ЭлементОформления.Оформление.УстановитьЗначениеПараметра("Формат", ФорматнаяСтрока);
КонецПроцедуры
ПолучитьНастройки() возвращает копию настроек, поэтому добавленное оформление не попадёт в сохранённые варианты. УстановитьЗначениеПараметра() сразу включает параметр, а при опечатке в имени «Формат» вызывает исключение. Не превращайте дату в строку ради группировки по месяцам: строковое поле сортируется по алфавиту, и апрель окажется выше января. Группируйте по НачалоПериода(Дата, "Месяц"), а вид «Март 2026» задавайте форматом.
dd.mm.yyyy строчная mm — это минуты. Платформа ошибку не выдаёт, нужна заглавная MM.дд.ММ.гггг. Заглавные Д и Г не распознаются и выводятся как текст.Строка(Год(Дата)) форматирует число с разделителем групп. Пишите Формат(Дата, "ДФ=yyyy") или Формат(Год(Дата), "ЧГ=0").Формат(): неявное преобразование выводит время и не знает про ДП.Дата() передана строка не в каноническом виде; разберите её, как в функции СтрокаВДату.&НаКлиенте; перенесите его в серверную функцию.Дата(2026, 3, 5) означает 0:00:00, передавайте КонецДня().Формат(Дата, "ДЛФ=Д") или Формат(Дата, "ДФ=dd.MM.yyyy") — «05.03.2026». Для сравнений отрежьте время у значения: НачалоДня(Дата) в коде, НАЧАЛОПЕРИОДА(Дата, ДЕНЬ) в запросе.
"ДФ='MMMM yyyy'" даёт «Март 2026», "ДФ=MM.yyyy" — «03.2026», "ДФ=yyyy" — «2026». Месяц в родительном падеже без числа — Сред(Формат(Дата, "ДФ='dd MMMM'"), 4).
XMLСтрока(Дата) вернёт «2026-03-05T14:07:09», обратное преобразование — XMLЗначение(Тип("Дата"), Строка). Время в UTC с суффиксом Z даёт ЗаписатьДатуJSON() с вариантом УниверсальнаяДата.
Нет. ПРЕДСТАВЛЕНИЕ(Док.Дата) вернёт только стандартный вид «05.03.2026 14:07:09», и передать его в другие функции нельзя. Шаблон применяйте к результату в коде или задайте формат поля в СКД.
Если даты нужно поправить в типовых печатных формах, выгрузках или отчётах на СКД, а разбираться с макетами и расширениями некогда, поручите это программисту: доработка печатных форм 1С. Разместите задание с примером нужного вида даты, и исполнитель оценит объём до начала работ.
Станьте частью сообщества!
Войдите или зарегистрируйтесь, и вы сможете участвовать в обсуждениях.