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

На практике CFU (или КФУ в русскоязычной документации) — это не просто технический жаргон, а ключевой элемент архитектуры 1С, который отвечает за конвертацию форматов данных при обмене между разными системами. Без правильной настройки CFU многие интеграции (например, с 1С:EDT, EnterpriseData или сторонними API) просто не будут работать. В этой статье мы подробно разберём:

  • 🔹 Что такое CFU и как расшифровывается аббревиатура
  • 🔹 Где применяется в типовых и нетиповых конфигурациях 1С
  • 🔹 Как настроить CFU для обмена данными с внешними системами
  • 🔹 Типичные ошибки и способы их устранения
📊 С какой системой вы чаще всего интегрируете 1С?
Сайт на CMS
Мобильное приложение
Другую 1С
CRM (Bitrix24, amoCRM)
ERP-систему (SAP, Oracle)
Собственное ПО

1. Расшифровка CFU: что скрывается за аббревиатурой

Аббревиатура CFU расшифровывается как Conversion Format Unit (в русскоязычных источниках — Конвертер Форматов Универсальный). Это встроенный механизм платформы 1С:Предприятие 8, предназначенный для преобразования данных из одного формата в другой при обмене между системами.

Проще говоря, CFU выполняет роль "переводчика" между:

  • 📄 Внутренним форматом 1С (например, данные в виде объектов конфигурации: справочники, документы, регистры)
  • 📥 Внешними форматами (JSON, XML, CSV, Protobuf и др.)
  • 🔄 Форматами других систем 1С (например, при обмене между 1С:УТ 11 и 1С:БП 3.0)

Ключевая особенность CFU — поддержка двунаправленной конвертации: механизм умеет не только экспортировать данные из 1С во внешний формат, но и импортировать их обратно, сохраняя структуру и связи между объектами. Это критично для интеграций, где важна синхронизация (например, остатки товаров на сайте и в 1С).

⚠️ Внимание: В документации 1С термин CFU может упоминаться как часть Библиотеки стандартных подсистем (БСП) или модуля EnterpriseData. Если в вашей конфигурации этих компонентов нет, функционал CFU может быть ограничен или отсутствовать.

2. Где используется CFU в 1С: типовые сценарии

Механизм CFU активно применяется в следующих случаях:

Сценарий использования Примеры Типовые конфигурации
Обмен данными между базами 1С Синхронизация справочников Номенклатура и Контрагенты между 1С:УТ и 1С:БП Управление торговлей, Бухгалтерия, ERP
Интеграция с веб-сервисами Выгрузка каталога товаров на сайт в формате JSON или загрузка заказов из API интернет-магазина УТ 11, Розница, Комплексная автоматизация
Работа с 1С:EDT (Enterprise Development Tools) Конвертация метаданных конфигурации для совместной разработки в команде Любые конфигурации при использовании EDT
Экспорт/импорт данных в внешние системы Обмен с CRM (Bitrix24, amoCRM), WMS, или банковскими системами (клиент-банк) ERP, УТ, ЗУП

В типовых конфигурациях (например, 1С:Управление торговлей 11 или 1С:ERP) механизм CFU часто скрыт за стандартными обработками обмена данными. Однако в нетиповых решениях или при кастомизации может потребоваться ручная настройка конвертеров.

Пример из практики: если вы настраиваете выгрузку товаров на сайт, то без CFU данные придётся конвертировать вручную через ЗаписьJSON или ЗаписьXML, что занимает в разы больше времени и чревато ошибками.

💡

Перед настройкой CFU проверьте, не реализован ли нужный обмен через стандартные механизмы (например, УниверсальныйОбменДанными в БСП). Это сэкономит время на разработку.

3. Структура CFU: из чего состоит конвертер форматов

Механизм CFU в 1С состоит из нескольких ключевых компонентов:

  1. Описание формата (Format Description) — шаблон, определяющий структуру данных (например, какие поля объекта 1С соответствуют полям в JSON).
  2. Правила конвертации (Conversion Rules) — логика преобразования типов данных (например, как конвертировать Дата 1С в строку ISO 8601).
  3. Обработчики событий — пользовательский код, который выполняется на этапах чтения/записи данных (например, для валидации или трансформации значений).
  4. Настройки связей — определение, как объекты 1С сопоставляются с объектами внешней системы (например, справочник Контрагенты → таблица Customers в базе PostgreSQL).

Визуально структуру CFU можно представить так:

┌───────────────────────┐ ┌───────────────────────┐

│ Данные 1С │ │ Внешний формат │

│ (Справочники, │ │ (JSON, XML, Protobuf) │

│ Документы, Регистры) │ │ │

└──────────┬────────────┘ └───────────┬───────────┘

│ │

▼ ▼

┌───────────────────────────────────────────┐

│ CFU (Конвертер) │

│ ┌─────────────┐ ┌─────────────────┐ │

│ │ Описание │ │ Правила │ │

│ │ формата │ │ конвертации │ │

│ └─────────────┘ └─────────────────┘ │

│ ┌─────────────┐ ┌─────────────────┐ │

│ │ Обработчики │ │ Настройки связей │ │

│ │ событий │ │ │ │

│ └─────────────┘ └─────────────────┘ │

└───────────────────────────────────────────┘

│ │

▼ ▼

┌───────────────────────┐ ┌───────────────────────┐

│ Преобразованные │ │ Данные во внешней │

│ данные 1С │ │ системе │

└───────────────────────┘ └───────────────────────┘

В 1С:EDT описание CFU хранится в отдельных файлах с расширением .cfu (например, Catalogs.cfu для справочников). В классической конфигурации настройка ведётся через объекты метаданных или программно.

Как выглядит файл CFU в 1С

EDT?:Файл CFU в Enterprise Development Tools — это текстовый файл в формате JSON, который описывает структуру данных. Например, для справочника "Номенклатура" он может содержать:

{

"name": "Catalog_Номенклатура",

"source": {

"type": "CatalogObject.Номенклатура",

"fields": ["Наименование", "Артикул", "ЕдиницаИзмерения"]

},

"target": {

"format": "json",

"structure": {

"id": "{Ref}",

"name": "{Наименование}",

"article": "{Артикул}",

"unit": "{ЕдиницаИзмерения.Наименование}"

}

}

}

4. Пошаговая инструкция: как настроить CFU в 1С

Рассмотрим процесс настройки CFU на примере выгрузки справочника Номенклатура в формат JSON для интеграции с сайтом. Инструкция актуальна для конфигураций на управляемых формах (8.3.10+).

Создать резервную копию базы|Проверить наличие прав администратора|Убедиться, что в конфигурации подключена БСП или EnterpriseData|Подготовить описание структуры данных для внешней системы-->

Шаг 1. Создание описания формата

Откройте конфигуратор и перейдите в ветку Общие → КонвертацияДанных → ОписанияФорматов. Создайте новый объект:

  1. Укажите имя, например JSON_НоменклатураДляСайта.
  2. В поле Тип формата выберите JSON.
  3. В разделе Структура опишите соответствие полей:
    
    

    {

    "Номенклатура": {

    "id": "Ссылка.УникальныйИдентификатор()",

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

    "article": "Артикул",

    "price": "ЦенаПродажи"

    }

    }

Шаг 2. Настройка правил конвертации

Перейдите в Общие → КонвертацияДанных → ПравилаКонвертации и создайте новое правило:

  • 📌 Укажите источник: справочник Номенклатура.
  • 📌 Выберите целевой формат: JSON_НоменклатураДляСайта (созданный на шаге 1).
  • 📌 Настройте преобразование типов:
    • Для поля ЦенаПродажи укажите формат числа с 2 знаками после запятой.
    • Для поля Ссылка добавьте обработчик, который преобразует ссылку 1С в строковый GUID.

Шаг 3. Реализация обмена данными

Создайте обработку с следующим кодом для выгрузки данных:


Процедура ВыгрузитьНоменклатуруВJSON(КаталогВыгрузки)

// 1. Получаем данные из 1С

Выборка = Справочники.Номенклатура.Выбрать();

ДанныеДляВыгрузки = Новый Массив();

Пока Выборка.Следующий() Цикл

ДанныеДляВыгрузки.Добавить(Выборка.Ссылка);

КонецЦикла;

// 2. Создаём конвертер

Конвертер = КонвертацияДанных.СоздатьКонвертер();

Конвертер.ДобавитьПравило("Правило_НоменклатураВJSON");

// 3. Выгружаем в файл

ЗаписьJSON = Новый ЗаписьJSON;

ЗаписьJSON.ОткрытьФайл(КаталогВыгрузки + "номенклатура.json");

Конвертер.ЗаписатьДанные(ДанныеДляВыгрузки, ЗаписьJSON);

ЗаписьJSON.Закрыть();

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

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

💡

Всегда тестируйте конвертацию на копии базы! Ошибки в правилах CFU могут привести к потере данных или нарушению ссылочной целостности.

5. Типичные ошибки при работе с CFU и их решения

При настройке CFU разработчики часто сталкиваются со следующими проблемами:

Ошибка Причина Решение
Ошибка конвертации: не найдено правило для типа "СправочникСсылка.Номенклатура" Отсутствует правило конвертации для указанного типа данных. Проверьте, что правило добавлено в КонвертацияДанных.ПравилаКонвертации и корректно связано с описанием формата.
Не удалось записать значение: тип не поддерживается (Дата) Формат даты в 1С не совпадает с ожидаемым форматом во внешней системе. Добавьте обработчик события ПриКонвертацииЗначения для преобразования даты в строку (например, Формат(Дата, "ДФ=yyyy-MM-dd")).
Циклическая ссылка при сериализации объекта В данных есть рекурсивные связи (например, справочник ссылается сам на себя). Используйте параметр ГлубинаРекурсии в настройках конвертера или исключите циклические поля из выгрузки.
В внешней системе не отображаются русские символы (кракозябры). Неверная кодировка при записи файла. Укажите кодировку UTF-8 при создании объекта ЗаписьJSON или ЗаписьXML.

Если ошибка не устраняется, проверьте:

  • 🔍 Логи обмена: включите запись логов в настройках CFU (параметр ВключитьПротоколирование).
  • 🔍 Совместимость версий: в старых версиях 1С (до 8.3.10) функционал CFU может отличаться.
  • 🔍 Права доступа: убедитесь, что у пользователя есть права на чтение/запись объектов, участвующих в обмене.
⚠️ Внимание: При обмене данными между разными версиями 1С (например, 8.3.15 и 8.3.20) могут возникать ошибки из-за изменений в метаданных. В этом случае используйте промежуточный формат (например, XML с явным описанием структуры).

6. CFU vs альтернативные способы обмена данными

CFU — не единственный способ интеграции 1С с внешними системами. Рассмотрим альтернативы и их особенности:

Метод Плюсы Минусы Когда использовать
CFU (Конвертер Форматов)

✅ Встроен в платформу

✅ Поддерживает сложные преобразования

✅ Работает с большинством форматов

❌ Требует настройки

❌ Возможны ошибки при изменении структуры данных

Для регулярного обмена с внешними системами, где важна гибкость преобразований.
УниверсальныйОбменДанными (БСП)

✅ Простота настройки

✅ Поддерживает типовые конфигурации

❌ Ограниченная кастомизация

❌ Не подходит для нестандартных форматов

Для обмена между типовыми конфигурациями 1С (например, УТ ↔ БП).
Прямой доступ к базе (SQL, ODBC) ✅ Максимальная скорость

❌ Нарушает целостность данных

❌ Требует глубоких знаний структуры БД

Только для опытных разработчиков и критических по производительности задач.
REST API / HTTP-сервисы

✅ Современный подход

✅ Подходит для облачных систем

❌ Требует настройки на стороне 1С и внешней системы

❌ Возможны проблемы с авторизацией

Для интеграции с веб-сервисами (например, Bitrix24, MoySklad).

Выбор метода зависит от задачи:

  • 🔹 Для внутреннего обмена между базами 1С подойдёт УниверсальныйОбменДанными.
  • 🔹 Для интеграции с сайтом или CRM оптимален CFU или REST API.
  • 🔹 Для одноразовой миграции данных можно использовать ЗагрузкаДанныхИзТабличногоДокумента.

7. Продвинутые возможности CFU: что умеет механизм

Помимо базовой конвертации, CFU поддерживает ряд продвинутых функций:

  • 🔹 Преобразование коллекций: автоматическая обработка массивов и таблиц значений. Например, выгрузка табличной части документа в массив JSON.
  • 🔹 Поддержка версионности: можно сохранять несколько версий описаний форматов для обратной совместимости.
  • 🔹 Валидация данных: проверка корректности данных перед конвертацией (например, обязательность полей).
  • 🔹 Расширения через код: подключение собственных обработчиков на или C#1С:EDT).
  • 🔹 Кэширование: ускорение повторной конвертации за счёт сохранения промежуточных результатов.

Пример расширенного использования: если вам нужно выгрузить не только справочник Номенклатура, но и связанные с ним Цены и Остатки, можно создать композитное правило конвертации, которое объединит несколько объектов в один JSON-документ:


{

"products": [

{

"id": "Номенклатура.Ссылка.УникальныйИдентификатор()",

"name": "Номенклатура.Наименование",

"prices": [

{

"type": "ТипЦен.Наименование",

"value": "Цены.Цена"

}

],

"stock": {

"quantity": "Остатки.Количество",

"warehouse": "Остатки.Склад.Наименование"

}

}

]

}

Для работы с такими сложными структурами может потребоваться написание кастомных обработчиков на встроенном языке 1С.

💡

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

8. Будущее CFU: что меняется в новых версиях 1С

В последних версиях платформы 1С:Предприятие 8.3.20+ механизм CFU претерпевает следующие изменения:

  • 🔹 Улучшенная поддержка Protobuf: более эффективная сериализация данных для высоконагруженных систем.
  • 🔹 Интеграция с 1С:EDT: визуальный редактор правил конвертации (аналог XSLT для XML).
  • 🔹 Автоматическое генерирование схем: для JSON Schema и OpenAPI на основе метаданных 1С.
  • 🔹 Поддержка асинхронного обмена: для интеграций с системами, требующими неблокирующих запросов.

Одно из ключевых нововведений — расширенная диагностика ошибок. Теперь при сбое конвертации CFU выдаёт не только текст ошибки, но и:

  • 📍 Точное место в правиле, где произошла ошибка.
  • 📍 Контекст данных (значения полей, вызвавших сбой).
  • 📍 Рекомендации по устранению (например, "Добавьте обработчик для типа Дата").

Если вы работаете с 1С:EDT, обратите внимание на новый инструмент CFU Designer — графический интерфейс для создания и отладки правил конвертации. Он позволяет:

  • 🔹 Перетаскивать поля из метаданных 1С в структуру целевого формата.
  • 🔹 Автоматически генерировать шаблоны для JSON/XML.
  • 🔹 Тестировать конвертацию на примерах данных без записи в базу.
⚠️ Внимание: В версиях 1С ниже 8.3.15 часть функционала CFU может отсутствовать или работать иначе. Например, поддержка Protobuf появилась только в 8.3.18. Перед использованием новых возможностей проверьте совместимость с вашей версией платформы.

FAQ: Частые вопросы о CFU в 1С

Можно ли использовать CFU для обмена данными с Excel?

Да, но не напрямую. CFU работает с текстовыми форматами (JSON, XML, CSV), поэтому для обмена с Excel нужно:

  1. Выгрузить данные из 1С в CSV с помощью CFU.
  2. Импортировать CSV в Excel (или наоборот).

Для прямой работы с Excel удобнее использовать COM-соединение или библиотеку Epplus (для .NET).

Как отладить ошибку "Не найдено описание формата"?

Эта ошибка означает, что CFU не может найти шаблон для конвертации. Проверьте:

  • Корректно ли указано имя описания формата в правиле конвертации.
  • Существует ли файл .cfu1С:EDT) или объект в метаданных (в классической конфигурации).
  • Не изменялось ли имя формата после обновления конфигурации.

Если описание формата создавалось вручную, убедитесь, что оно сохранено и опубликовано (в EDT — коммичено в репозиторий).

Поддерживает ли CFU работу с binary-данными (например, картинками)?

Да, но с оговорками. Для binary-данных (например, поле Картинка в справочнике Номенклатура) нужно:

  1. В описании формата указать тип поля как BinaryData.
  2. При конвертации в JSON или XML binary-данные кодируются в Base64.
  3. Для обратной загрузки — декодировать Base64 обратно в двоичный формат.

Пример правила для картинки:


{

"image": {

"data": "Картинка.ПолучитьДвоичныеДанные()",

"format": "base64"

}

}

Можно ли использовать CFU для обмена с мобильным приложением?

Абсолютно да! CFU идеально подходит для интеграции 1С с мобильными приложениями, так как:

  • 📱 Поддерживает JSON — основной формат обмена для мобильных клиентов.
  • 📱 Позволяет гибко настраивать структуру данных под нужды приложения.
  • 📱 Обеспечивает двустороннюю синхронизацию (например, загрузку заказов из приложения в 1С и выгрузку статусов обратно).

Для ускорения обмена рекомендуется:

  • Использовать сжатие данных (gzip).
  • Выгружать только изменённые объекты (по дате модификации).
  • На стороне мобильного приложения кэшировать часто запрашиваемые данные.
Где хранится история изменений правил CFU в 1С:EDT?

В 1С:Enterprise Development Tools история изменений файлов .cfu хранится в системе контроля версий (Git или Apache Subversion, в зависимости от настройки проекта). Чтобы посмотреть историю:

  1. Откройте файл .cfu в EDT.
  2. Кликните правой кнопкой по файлу и выберите Team → Show History.
  3. В открывшемся окне вы увидите все коммиты с изменениями правила.

Если вы работаете без системы контроля версий, история не сохраняется — рекомендуется регулярно создавать резервные копии файлов .cfu.