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

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

Особое внимание уделим интеграции форматов с внешними системами через JSON и XML — это актуально для компаний, которые обмениваются данными с маркетплейсами, банками или государственными порталами. Все примеры приведены для 1С:Предприятие 8.3, но принципы работы с форматами универсальны и подойдут для большинства версий платформы.

Что такое формат в 1С и зачем он нужен

Формат в — это структурированное описание того, как данные должны отображаться или передаваться. Проще говоря, это шаблон, который определяет:

  • 📄 Внешний вид документов — как будет выглядеть печатная форма счета, накладной или акта.
  • 📊 Структуру отчетов — какие колонки и группировки использовать в аналитических таблицах.
  • 🔄 Правила обмена данными — как преобразовывать информацию при экспорте/импорте в другие системы.
  • 🖥️ Интерфейсные элементы — как отображать данные в формах справочников или документов.

Без форматов система 1С могла бы выдавать данные только в "сыром" виде — например, в виде списка полей без какой-либо структуры. Представьте, что бухгалтер получает накладную в виде текстового файла с перечислением всех реквизитов через запятую. Это неудобно, неинформативно и чревато ошибками. Форматы решают эту проблему, преобразуя данные в удобочитаемый и стандартизированный вид.

Ключевые преимущества использования форматов:

  • Автоматизация — исключение ручного ввода данных и снижение риска ошибок.
  • 🔄 Унификация — все документы выглядят одинаково, независимо от того, кто их формирует.
  • 🔗 Интеграция — простой обмен данными с другими программами (например, с 1С:Бухгалтерией, 1С:Зарплатой или внешними сервисами).
  • 📈 Аналитика — возможность быстро формировать отчеты с нужной структурой.
⚠️ Внимание: Форматы в 1С тесно связаны с макетами и шаблонами. Макет определяет визуальное оформление (шрифты, цвета, расположение элементов), а формат — логическую структуру данных. Часто эти понятия путают, но они дополняют друг друга. Например, для печатной формы счета вам понадобится и формат (какие данные выводить), и макет (как эти данные оформить).

Виды форматов в 1С: какой выбрать для вашей задачи

В 1С:Предприятие 8.3 существует несколько типов форматов, каждый из которых предназначен для конкретных задач. Выбор правильного типа — залог успешной настройки. Рассмотрим основные виды:

Тип формата Назначение Примеры использования
Текстовый формат Для создания печатных форм документов (счета, накладные, акты). Шаблон счета на оплату, бланк договора, этикетка для товара.
Табличный формат Для отображения данных в виде таблиц (отчеты, списки). Отчет по продажам, ведомость по зарплате, инвентаризационная опись.
XML-формат Для обмена данными с внешними системами (госорганы, банки, маркетплейсы). Экспорт деклараций в ФНС, загрузка прайс-листов от поставщиков.
JSON-формат Для интеграции с веб-сервисами и API. Обмен данными с интернет-магазином на Bitrix или Shopify.
HTML-формат Для генерации веб-страниц или email-рассылок. Шаблон письма клиенту, страница с каталогом товаров.

Какой формат выбрать? Это зависит от задачи:

  • 📑 Если нужно распечатать документ (например, счет-фактуру), используйте текстовый формат.
  • 📊 Для аналитических отчетов с группировками и итогами подойдет табличный формат.
  • 🔗 Для обмена данными с госорганами (например, отчетность в ФНС) — XML-формат.
  • 🌐 Если интегрируетесь с сайтом или мобильным приложением — JSON.
⚠️ Внимание: Некоторые форматы требуют дополнительных настроек в конфигураторе. Например, для работы с XML может понадобиться подключить библиотеку XDTO, а для JSON — использовать встроенный парсер или внешние компоненты. Перед выбором формата проверьте, поддерживает ли ваша версия 1С нужные функции.
📊 Какой тип форматов вы используете чаще всего?
Текстовые (печатные формы)
Табличные (отчеты)
XML/JSON (обмен данными)
Не работаю с форматами

Пошаговая инструкция: как создать текстовый формат в 1С

Текстовые форматы — самый распространенный тип, который используется для печатных форм документов. Рассмотрим, как создать такой формат на примере счета на оплату.

Шаг 1. Открыть конфигуратор и выбрать объект

Запустите 1С:Предприятие в режиме Конфигуратор. Перейдите в дерево объектов и найдите документ, для которого нужно создать печатную форму (например, СчетНаОплату). Кликните по нему правой кнопкой и выберите Открыть форму документа.

Шаг 2. Создать новый макет

В открывшейся форме документа перейдите на вкладку Макеты и нажмите Добавить. Выберите тип макета — Текстовый документ. Укажите имя макета, например, ПечатнаяФормаСчета.

Открыть конфигуратор в режиме редактирования|

Найти нужный документ в дереве объектов|

Создать новый макет типа "Текстовый документ"|

Задать имя макета (например, ПечатнаяФормаСчета)-->

Шаг 3. Настроить структуру формата

В открывшемся редакторе текстового документа вы увидите пустой шаблон. Здесь можно:

  • 📝 Добавлять статический текст (например, заголовок "Счет на оплату №").
  • 🔢 Вставлять динамические поля из документа (номер, дата, сумма).
  • 🖼️ Добавлять логотип компании или другие изображения.
  • 📏 Настраивать выравнивание, шрифты и отступы.

Пример кода для вставки динамического поля (номер счета):

&НомерДокумента;

Шаг 4. Привязать макет к документу

Вернитесь в форму документа и найдите событие Печать. Добавьте в него код для открытия вашего макета:

Процедура Печать(Кнопка)

Макет = Документы.СчетНаОплату.ПолучитьМакет("ПечатнаяФормаСчета");

Текст = Новый ТекстовыйДокумент;

Текст.УстановитьТекст(Макет.ПолучитьТекст());

Текст.Показать();

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

💡

Если вам нужно добавить в печатную форму табличную часть (например, список товаров), используйте цикл Для Каждого и конструкцию &ТекстТаблицы; в макете.

Шаг 5. Тестирование и доработка

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

Что делать, если печатная форма отображается некорректно?

Если текст накладывается, проверьте настройки шрифтов и отступов в макете. Если не выводятся динамические данные, убедитесь, что поля документа заполнены и правильно указаны в макете (например, &НомерДокумента, а не просто НомерДокумента).

Создание табличного формата для отчетов

Табличные форматы используются для генерации отчетов с группировками, итогами и сортировками. Например, вам нужно создать ежемесячный отчет по продажам с разбивкой по менеджерам и товарам. Вот как это сделать:

Шаг 1. Создать новый отчет

В конфигураторе перейдите в ветку Отчеты и добавьте новый отчет (например, ОтчетПоПродажам). Откройте его схему компоновки данных (СКД).

Шаг 2. Настроить источники данных

В СКД укажите, откуда будут браться данные. Например, для отчета по продажам это может быть виртуальная таблица Документ.РеализацияТоваровУслуг. Добавьте нужные поля:

  • 📅 Дата
  • 👤 Менеджер
  • 📦 Товар
  • 💰 Сумма

Шаг 3. Задать структуру отчета

В настройках СКД:

  1. Добавьте группировки по менеджерам и товарам.
  2. Настройте итоги (например, сумма по каждому менеджеру).
  3. Укажите сортировку (например, по дате или по сумме).
  4. Добавьте условное оформление (например, выделить красным строки с отрицательной прибылью).

Пример настройки группировки в СКД:

ГруппировкаМенеджер = Элементы.Добавить("Менеджер");

ГруппировкаМенеджер.Поле = Новый ПолеКомпоновкиДанных("Менеджер");

Шаг 4. Сохранить и протестировать

Сохраните схему компоновки и откройте отчет в режиме 1С:Предприятие. Если данные отображаются некорректно, вернитесь в СКД и проверьте:

  • 🔌 Правильность связей между таблицами.
  • 📊 Настройки группировок и итогов.
  • 🎨 Условное оформление (цвета, шрифты).
💡

Схему компоновки данных (СКД) можно сохранять в отдельные файлы и переносить между конфигурациями. Это удобно, если вам нужно использовать один и тот же отчет в разных базах.

Работа с XML и JSON: форматы для обмена данными

Если ваша компания обменивается данными с внешними системами (например, отправляет отчетность в ФНС или загружает заказы с маркетплейсов), без XML и JSON форматов не обойтись. Рассмотрим, как их создать.

XML-формат: пример для отчетности в ФНС

Допустим, вам нужно сформировать XML-файл для декларации по НДС. Алгоритм действий:

  1. Создайте новый XML-макет в конфигураторе (в ветке Общие → Макеты).
  2. Опишите структуру XML-файла в соответствии с требованиями ФНС. Например:
    <?xml version="1.0" encoding="windows-1251"?>
    

    <Файл>

    <Декларация НДС="1">

    <СведНП>

    <ИНН>&ИНН;</ИНН>

    <КПП>&КПП;</КПП>

    </СведНП>

    </Декларация>

    </Файл>

  3. В коде модуля добавьте процедуру для заполнения XML данными из 1С:
    Процедура ЗаполнитьXML()
    

    Макет = Макеты.ДекларацияНДС.Получить();

    ТекстXML = Макет.ПолучитьТекст();

    // Замена плейсхолдеров (&ИНН;) на реальные данные

    ТекстXML = СтрЗаменить(ТекстXML, "&ИНН;", Организация.ИНН);

    ТекстXML = СтрЗаменить(ТекстXML, "&КПП;", Организация.КПП);

    // Сохранение файла

    ТекстXML.Записать("C:\Отчетность\Декларация.xml");

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

JSON-формат: интеграция с интернет-магазином

Для обмена данными с сайтом (например, выгрузка остатков товаров) удобнее использовать JSON. Пример:

  1. Создайте макет типа Текстовый документ с шаблоном JSON:
    {
    

    "products": [

    {

    "id": &КодТовара;,

    "name": "&Наименование;",

    "price": &Цена;,

    "quantity": &Остаток;

    }

    ]

    }

  2. Напишите код для генерации JSON на основе данных из 1С:
    Процедура ВыгрузитьТоварыВJSON()
    

    Макет = Макеты.СписокТоваровJSON.Получить();

    ТекстJSON = Макет.ПолучитьТекст();

    Запрос = Новый Запрос;

    Запрос.Текст = "ВЫБРАТЬ

    | Товары.Ссылка КАК Товар,

    | Товары.Наименование,

    | Товары.Цена,

    | Товары.Остаток

    |ИЗ

    | Справочник.Товары КАК Товары";

    Результат = Запрос.Выполнить();

    ТекстРезультирующий = "";

    Пока Результат.Следующий() Цикл

    ТекстДляЗамены = ТекстJSON;

    ТекстДляЗамены = СтрЗаменить(ТекстДляЗамены, "&КодТовара;", Результат.Товар.УникальныйИдентификатор());

    ТекстДляЗамены = СтрЗаменить(ТекстДляЗамены, "&Наименование;", Результат.Наименование);

    ТекстДляЗамены = СтрЗаменить(ТекстДляЗамены, "&Цена;", Результат.Цена);

    ТекстДляЗамены = СтрЗаменить(ТекстДляЗамены, "&Остаток;", Результат.Остаток);

    ТекстРезультирующий = ТекстРезультирующий + ТекстДляЗамены;

    КонецЦикла;

    // Сохранение файла

    ТекстРезультирующий = СтрЗаменить(ТекстРезультирующий, "}{", "},{");

    ТекстРезультирующий = "{" + Сред(ТекстРезультирующий, 2) + "}";

    ТекстРезультирующий.Записать("C:\Интеграция\товары.json");

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

⚠️ Внимание: При работе с XML и JSON важно учитывать кодировки файлов. ФНС часто требует windows-1251, а веб-сервисы — UTF-8. Несоответствие кодировки может привести к ошибкам при загрузке файлов. Всегда уточняйте требования к формату в документации внешней системы.

Условное оформление: как сделать формат динамичным

Статичные форматы удобны, но часто требуется, чтобы внешний вид документа или отчета менялся в зависимости от данных. Например, в отчете по продажам можно выделить красным строки с убыточными сделками, а в счете — жирным шрифтом сумму к оплате. Для этого используется условное оформление.

Пример 1: Выделение цветом в табличном отчете

Допустим, в отчете по продажам нужно выделить красным строки, где прибыль отрицательная. В СКД:

  1. Откройте настройки отчета и перейдите на вкладку Условное оформление.
  2. Добавьте новое правило и укажите условие:
    Прибыль < 0
  3. Выберите стиль оформления: красный цвет текста или заливка ячейки.

Пример 2: Динамический текст в печатной форме

В счете на оплату можно скрывать поле "НДС" для льготных категорий клиентов. Для этого в макете используйте конструкцию:

&Если Клиент.ЛьготаПоНДС Тогда

| // Пустая строка (НДС не выводим)

|Иначе

| НДС 20%: &СуммаНДС;

|КонецЕсли;

Пример 3: Изменение шрифта в зависимости от статуса

В документе "Заказ покупателя" можно выделять жирным шрифтом строки с товарами, которых нет в наличии:

&Для Каждого Товар Из Документ.Товары Цикл

| &Если Товар.Остаток < Товар.Количество Тогда

| <B>&Товар.Наименование;</B> (&Остаток; шт.)

| Иначе

| &Товар.Наименование; (&Остаток; шт.)

| КонецЕсли;

|КонецЦикла;

💡

Условное оформление работает не только в отчетах, но и в печатных формах, а также в формах справочников и документов. Главное — правильно указать условия и стили.

Типичные ошибки при работе с форматами и как их избежать

Даже опытные разработчики 1С иногда сталкиваются с проблемами при настройке форматов. Рассмотрим наиболее распространенные ошибки и способы их решения.

Ошибка Причина Решение
Печатная форма не открывается Неправильно указано имя макета в коде или макет не привязан к документу. Проверьте имя макета в процедуре Печать и убедитесь, что оно совпадает с именем в конфигураторе.
Данные в отчете не группируются Неверные настройки группировок в СКД или отсутствие связей между таблицами. Проверьте поля группировки и пути соединения таблиц в запросе.
XML-файл не принимается ФНС Несоответствие структуры XML требованиям налоговой или неправильная кодировка. Сверьте структуру с актуальными требованиями ФНС и убедитесь, что файл сохранен в windows-1251.
JSON-файл не читается веб-сервисом Ошибки в синтаксисе JSON (лишние запятые, неправильные кавычки) или неверная кодировка. Проверьте файл через валидатор JSON (например, JSONLint) и сохраните в UTF-8.
Условное оформление не применяется Неверно указано условие или стиль не сохранен. Проверьте синтаксис условия и убедитесь, что стиль привязан к нужному элементу.

Еще несколько советов, как избежать ошибок:

  • 🔍 Тестируйте форматы на копии базы — это позволит избежать сбоев в рабочей системе.
  • 📋 Ведите документацию — фиксируйте, какие форматы используются для каких документов и отчетов.
  • 🔄 Обновляйте шаблоны — требования к отчетности (например, ФНС) могут меняться, поэтому периодически проверяйте актуальность ваших форматов.
  • 🛠️ Используйте отладчик — если формат не работает, запустите код в режиме отладки и посмотрите, на каком этапе возникает ошибка.
⚠️ Внимание: При обмене данными с внешними системами (особенно с госорганами) всегда проверяйте актуальность форматов. Требования к структуре XML или JSON могут изменяться без предварительного уведомления. Рекомендуем подписаться на рассылки ФНС или других ведомств, с которыми вы взаимодействуете.

Продвинутые техники: интеграция форматов с внешними системами

Форматы в 1С можно использовать не только для внутренних задач, но и для интеграции с другими программами. Рассмотрим несколько продвинутых сценариев.

Автоматическая выгрузка данных на сайт

Допустим, вам нужно ежедневно выгружать остатки товаров и цены на сайт интернет-магазина. Алгоритм:

  1. Создайте JSON-формат для выгрузки данных (как описано выше).
  2. Напишите обработку, которая будет:
    • 🔄 Формировать JSON-файл с актуальными данными.
    • 📤 Отправлять его на сервер по FTP или HTTP.
  • Настройте регламентное задание в 1С для автоматического запуска выгрузки (например, каждый день в 23:00).
  • Пример кода для отправки файла по FTP:

    Процедура ОтправитьФайлНаСайт()
    

    FTPСоединение = Новый FTPСоединение("ftp.example.com", 21, "login", "password");

    FTPСоединение.Соединить();

    FTPСоединение.ЗагрузитьФайл("C:\Интеграция\товары.json", "/upload/tovary.json");

    FTPСоединение.Закрыть();

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

    Импорт заказов с маркетплейсов

    Если вы продаете товары на Ozon, Wildberries или Яндекс.Маркет, можно автоматизировать загрузку заказов в 1С. Для этого:

    1. Получите XML или JSON с заказами от маркетплейса (обычно это делается через их API).
    2. Создайте в 1С обработку для парсинга файла и создания документов ЗаказПокупателя.
    3. Настройте автоматическую загрузку (например, раз в час).

    Пример кода для парсинга JSON с заказами:

    Процедура ЗагрузитьЗаказыИзJSON(ПутьКФайлу)
    

    ТекстJSON = Новый ЧтениеТекста(ПутьКФайлу);

    Данные = ПрочитатьJSON(ТекстJSON.ПрочитатьВесьКакСтроку());

    Для Каждого Заказ Из Данные.orders Цикл

    НовыйЗаказ = Документы.ЗаказПокупателя.СоздатьДокумент();

    НовыйЗаказ.Контрагент = Справочники.Контрагенты.НайтиПоНаименованию(Заказ.buyer_name);

    НовыйЗаказ.Дата = Заказ.order_date;

    Для Каждого Товар Из Заказ.items Цикл

    НоваяСтрока = НовыйЗаказ.Товары.Добавить();

    НоваяСтрока.Товар = Справочники.Номенклатура.НайтиПоАртикулу(Товар.sku);

    НоваяСтрока.Количество = Товар.quantity;

    НоваяСтрока.Цена = Товар.price;

    КонецЦикла;

    НовыйЗаказ.Записать();

    КонецЦикла;

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

    Обмен данными с 1С:Бухгалтерией

    Если у вас несколько баз 1С (например, 1С:Управление торговлей и 1С:Бухгалтерия), можно настроить автоматический обмен документами. Для этого:

    1. В обеих базах создайте XML-форматы для экспорта/импорта документов.
    2. Настройте план обмена в конфигураторе.
    3. Напишите обработки для преобразования данных из одной конфигурации в другую.
    ⚠️ Внимание: При интеграции с внешними системами учитывайте ограничения по времени выполнения операций. Например, некоторые маркетплейсы требуют, чтобы ответ на запрос приходил не позднее 30 секунд. Если ваша обработка работает дольше, разбейте задачу на более мелкие части или оптимизируйте код.

    FAQ: Ответы на частые вопросы о форматах 1С

    Как