Форматы в 1С 8.3: числа, даты, макеты печатных форм и обмен XML и JSON
Содержание
Чтобы создать формат в 1С, откройте в конфигураторе свойство Формат у поля формы или ячейки макета и нажмите кнопку выбора — запустится «Конструктор форматной строки». В коде то же самое делает функция Формат(Значение, "ЧДЦ=2; ЧГ=0"). Форматная строка — это набор параметров через точку с запятой: сколько знаков после запятой, как писать дату, что показывать вместо нуля или пустой даты.
Формат меняет только отображение. Само значение в базе остаётся числом, датой или булевым. Для обмена с другими программами «формат» означает уже другое — структуру файла XML или JSON. Ниже оба смысла, с примерами кода, которые можно вставить в обработку и проверить.
Что такое формат в 1С и где его задают
Форматная строка нужна, когда стандартный вид значения не подходит. Типичные задачи:
- 💰 сумма в печатной форме без дробной части или ровно с двумя знаками;
- 📅 дата словами: «7 октября 2026 г.» вместо «07.10.2026 0:00:00»;
- 🔢 номер с ведущими нулями: «000042»;
- ✅ «Да/Нет» вместо «Истина/Ложь»;
- 🧾 число без пробелов-разделителей для выгрузки в файл или банк.
Где форматная строка встречается в конфигурации:
| Место | Свойство | Что форматирует |
|---|---|---|
| Поле управляемой формы | Формат, ФорматРедактирования | Показ значения и вид при вводе |
| Ячейка макета табличного документа | Формат в палитре свойств ячейки | Параметр в печатной форме |
| Поле набора данных СКД | Колонка «Оформление» → Формат | Значение в отчёте |
| Встроенный язык | Функция Формат() | Любое значение в строку |
| Условное оформление | Параметр оформления Формат | Значение при выполнении условия |
Свойство Формат поля формы работает, когда поле не редактируется. Для режима ввода есть отдельное свойство ФорматРедактирования. Если формат «не применяется», проверьте, какое из двух вы заполнили.
Какие бывают форматы: числа, даты, булево и файлы обмена
Форматная строка состоит из пар Параметр=Значение, разделённых ;. Параметры делятся на три группы — по типу значения. Строки форматной строкой не форматируются: для них используют функции СтрШаблон, ВРег, Лев и подобные.
Числа:
| Параметр | Назначение | Пример |
|---|---|---|
ЧЦ | Всего знаков | ЧЦ=10 |
ЧДЦ | Знаков после запятой | ЧДЦ=2 |
ЧРД | Разделитель дробной части | ЧРД=. |
ЧРГ | Разделитель групп разрядов | ЧРГ=' ' |
ЧГ | Группировка разрядов, ЧГ=0 — без групп | ЧГ=0 |
ЧН | Строка для нуля | ЧН=0 или ЧН=- |
ЧВН | Выводить ведущие нули | ЧВН= |
ЧС | Сдвиг разрядов (деление на 10ⁿ) | ЧС=3 — тысячи |
ЧО | Вид отрицательного числа | ЧО=1 |
ЧФ | Шаблон вывода | ЧФ='Ч руб.' |
Даты:
| Параметр | Назначение | Пример |
|---|---|---|
ДФ | Произвольный формат даты | ДФ=dd.MM.yyyy |
ДЛФ | Готовый локальный формат | ДЛФ=DD — длинная дата |
ДП | Строка для пустой даты | ДП='не указана' |
Булево: БЛ — текст для Ложь, БИ — текст для Истина. Параметр Л задаёт язык: Л=ru_RU.
Отдельная история — форматы файлов обмена: XML, JSON и формат EnterpriseData в типовых конфигурациях. О них — в пятом разделе.
Как создать формат через конструктор в конфигураторе
Конструктор избавляет от запоминания параметров и сразу показывает результат на примере.
- Откройте форму или макет в конфигураторе.
- Выделите поле формы или ячейку макета, откройте палитру свойств (
Alt+Enter). - Найдите свойство
Формати нажмите кнопку с тремя точками справа. - В «Конструкторе форматной строки» выберите вкладку по типу данных: число, дата или булево.
- Заполните нужные поля: точность, разделители, вид даты. Внизу видна готовая строка и образец.
- Нажмите
ОК. Строка попадёт в свойство, напримерЧДЦ=2; ЧН=0,00. - Запустите отладку (
F5) и проверьте форму или печать на реальных данных.
В модуле конструктор тоже доступен. Поставьте курсор внутрь кавычек второго параметра функции Формат, откройте контекстное меню правой кнопкой и выберите пункт конструктора форматной строки. Готовая строка вставится в код.
У параметров есть английские имена: NFD вместо ЧДЦ, NG вместо ЧГ, DF вместо ДФ, DLF вместо ДЛФ. Обе записи работают, но в одном модуле держитесь одной — так код легче читать.
Функция Формат() в коде: рабочие примеры
Функция возвращает строку. Ниже пример для обработки, результаты указаны в комментариях:
Сумма = 1234567.891;
Сообщить(Формат(Сумма, "ЧДЦ=2")); // 1 234 567,89
Сообщить(Формат(Сумма, "ЧДЦ=2; ЧГ=0")); // 1234567,89
Сообщить(Формат(Сумма, "ЧДЦ=2; ЧРД=.; ЧГ=0")); // 1234567.89
Сообщить(Формат(Сумма, "ЧДЦ=1; ЧС=3")); // 1 234,6 (в тысячах)
Номер = 42;
Сообщить(Формат(Номер, "ЧЦ=6; ЧВН=; ЧГ=0")); // 000042
Сообщить(Формат(0, "ЧДЦ=2")); // пустая строка!
Сообщить(Формат(0, "ЧДЦ=2; ЧН=0,00")); // 0,00
Д = Дата(2026, 10, 7, 14, 5, 0);
Сообщить(Формат(Д, "ДФ=dd.MM.yyyy")); // 07.10.2026
Сообщить(Формат(Д, "ДФ='dd MMMM yyyy'")); // 07 октября 2026
Сообщить(Формат(Д, "ДФ=HH:mm")); // 14:05
Сообщить(Формат(Д, "ДЛФ=DD")); // 7 октября 2026 г.
Сообщить(Формат(Дата(1, 1, 1), "ДП='—'")); // —
Сообщить(Формат(Истина, "БЛ=Нет; БИ=Да")); // Да
Проверим арифметику сдвига: 1 234 567,891 / 1000 = 1 234,567891, с одним знаком — 1 234,6. Совпадает.
Сумму прописью для счёта или платёжки делает отдельная функция:
Текст = ЧислоПрописью(1250.50, "Л=ru_RU; ДП=Истина",
"рубль, рубля, рублей, м, копейка, копейки, копеек, ж, 2");
// Одна тысяча двести пятьдесят рублей 50 копеек
== Буквы в ДФ чувствительны к регистру: MM — месяц, mm — минуты. Перепутаете — в дате появятся минуты вместо месяца. ==
Формат ячеек табличного документа для печатных форм и отчётов
Печатная форма собирается из макета. У ячейки макета три способа заполнения, и от него зависит, где писать формат.
| Заполнение ячейки | Что в ячейке | Где задать формат |
|---|---|---|
| Текст | Постоянная надпись | Не нужен |
| Параметр | Имя параметра, например Сумма | Свойство Формат ячейки |
| Шаблон | Текст с параметрами в квадратных скобках | Формат параметра в шаблоне или подготовка значения в коде |
Пошагово для суммы в печатной форме:
- Откройте макет, выделите ячейку с параметром
Сумма. - В палитре свойств проверьте, что
Заполнение=Параметр. - В свойстве
Форматчерез конструктор задайтеЧДЦ=2; ЧН=0,00. - В модуле, где выводится область, передайте число, а не строку:
Область.Параметры.Сумма = Строка.Сумма;.
Если передать в параметр уже отформатированную строку, формат ячейки не сработает: строка выводится как есть. Это нормально, когда текст собран из нескольких значений:
Область.Параметры.Заголовок = СтрШаблон("Счёт № %1 от %2",
Документ.Номер, Формат(Документ.Дата, "ДЛФ=DD"));
Для ширины колонок в отчёте задавайте формат с ЧГ: разделитель групп читается легче. Для выгрузки в Excel или текстовый файл ставьте ЧГ=0 — иначе в числе окажется неразрывный пробел, и Excel примет значение за текст.
Обмен данными: форматы XML и JSON
Когда говорят «настроить формат для обмена», речь о структуре файла, а не о форматной строке. Во встроенном языке 1С 8.3 для этого есть готовые объекты.
JSON
Функции ЗаписатьJSON и ПрочитатьJSON появились в платформе 8.3.6. Они работают со структурами, соответствиями и массивами примитивных значений.
Данные = Новый Структура;
Данные.Вставить("inn", "7700000000");
Данные.Вставить("sum", 1250.5);
Данные.Вставить("date", ТекущаяДата());
Запись = Новый ЗаписьJSON;
Запись.УстановитьСтроку(Новый ПараметрыЗаписиJSON(, Символы.Таб));
ЗаписатьJSON(Запись, Данные, Новый НастройкиСериализацииJSON);
ТекстJSON = Запись.Закрыть();
Чтение = Новый ЧтениеJSON;
Чтение.УстановитьСтроку(ТекстJSON);
Результат = ПрочитатьJSON(Чтение, Истина); // Истина — читать в Соответствие
Чтение.Закрыть();
Ссылки на справочники и документы так не запишутся. Передавайте вместо них код, ИНН или уникальный идентификатор строкой: Строка(Ссылка.УникальныйИдентификатор()).
XML
Для XML есть два пути:
- 📄 «ручная» запись через
ЗаписьXML: вы сами пишете элементы и атрибуты — удобно под чужую схему; - 📦 сериализация через
СериализаторXDTO: объект 1С целиком превращается в XML и обратно — удобно для обмена между базами 1С.
Запись = Новый ЗаписьXML;
Запись.ОткрытьФайл("C:\Exchange\order.xml", "UTF-8");
Запись.ЗаписатьОбъявлениеXML();
Запись.ЗаписатьНачалоЭлемента("Order");
Запись.ЗаписатьАтрибут("Number", Документ.Номер);
Запись.ЗаписатьАтрибут("Date", XMLСтрока(Документ.Дата));
Запись.ЗаписатьКонецЭлемента();
Запись.Закрыть();
XMLСтрока() пишет дату в виде 2026-10-07T14:05:00 — его понимают почти все внешние системы. Для обмена не используйте Формат() с русским видом даты: на стороне получателя такую строку придётся разбирать вручную.
Условное оформление: формат, который меняется от данных
Условное оформление позволяет задать формат только для строк, где выполнено условие. Например, показывать просроченные суммы красным или выводить нули прочерком.
В списке на форме (режим пользователя):
- В списке нажмите
Ещё→Настроить список. - Перейдите на вкладку условного оформления.
- Добавьте элемент: в оформлении выберите цвет текста или формат, в условии — поле и значение.
- Укажите, к каким полям применять, и нажмите
Завершить редактирование.
В конфигураторе для формы: у формы есть свойство УсловноеОформление. Его же можно заполнить в коде при создании формы:
Элемент = УсловноеОформление.Элементы.Добавить();
Поле = Элемент.Поля.Элементы.Добавить();
Поле.Поле = Новый ПолеКомпоновкиДанных("СписокСумма");
Отбор = Элемент.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
Отбор.ЛевоеЗначение = Новый ПолеКомпоновкиДанных("Список.Сумма");
Отбор.ВидСравнения = ВидСравненияКомпоновкиДанных.Меньше;
Отбор.ПравоеЗначение = 0;
Элемент.Оформление.УстановитьЗначениеПараметра("ЦветТекста", WebЦвета.Красный);
Элемент.Оформление.УстановитьЗначениеПараметра("Формат", "ЧДЦ=2; ЧО=1");
Имя поля в Поля — это имя элемента формы, а в отборе — путь к данным. Перепутаете — оформление молча не сработает.
В отчёте на СКД: в схеме компоновки откройте настройки варианта, вкладку условного оформления, добавьте элемент с параметром Формат. Для поля, которое всегда выводится одинаково, проще задать формат в колонке «Оформление» на вкладке наборов данных.
Внешние системы: где формат решает больше всего
В интеграциях ошибки формата стоят дороже, чем в печатной форме: файл просто не загрузится у получателя.
- 🏦 Банк и платёжные файлы. Разделитель дробной части — точка, без групп разрядов:
ЧДЦ=2; ЧРД=.; ЧГ=0. Ноль — явно: добавьтеЧН=0.00. - 🌐 HTTP-сервисы и REST. Даты — в ISO 8601 через
XMLСтрока()илиЗаписатьДатуJSON. Числа — числами JSON, а не строками с запятой. - 📊 CSV для Excel. Разделитель полей
;, дробная часть — запятая,ЧГ=0, кодировка UTF-8 с BOM или Windows-1251 — по договорённости с тем, кто открывает файл. - 🔄 Обмен между типовыми конфигурациями. В современных типовых решениях для этого используют формат EnterpriseData. Его версии и правила конвертации задаются на стороне конфигураций; дописывать их стоит только если вы владеете инструментом «Конвертация данных».
Для схемы чужой системы (XSD) удобно загрузить её в конфигурацию как пакет XDTO. Тогда объекты XML будут проверяться по схеме прямо при записи, а ошибки структуры всплывут до отправки файла.
Перед изменением форм, макетов и модулей в рабочей базе сделайте резервную копию и согласуйте доработку по своему регламенту. Изменения в типовой конфигурации на поддержке усложняют обновление — используйте расширения или внешние печатные формы.