Работа с файлами в 1С:Предприятие — одна из самых востребованных операций, с которой сталкиваются и бухгалтеры, и программисты, и администраторы. Нужно ли сохранить отчет в Excel, выгрузить данные для обмена с банком или просто создать текстовый документ с комментариями — без понимания механизмов работы с файлами не обойтись. При этом способы создания файлов сильно зависят от версии платформы (8.3 или 8.2), конфигурации (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) и даже от прав пользователя в системе.

Многие новички путают создание файлов внутри 1С (например, через встроенный текстовый редактор) и экспорт данных в внешние файлы (.xlsx, .xml, .txt). В этой статье мы разберем все возможные сценарии — от простейших до продвинутых, — а также расскажем, как избежать типичных ошибок при работе с файловой системой. Если вы никогда не работали с файлами в 1С, начните с первых разделов. Опытным пользователям будет полезен блок про программное создание файлов через встроенный язык.

📊 Для чего вам чаще всего нужно создавать файлы в 1С?
Для выгрузки отчетов
Для обмена данными с банками/контрагентами
Для резервного копирования
Для внутренней документации
Другое

1. Базовые способы создания файлов без программирования

Если вам не требуется автоматизация, а нужно просто сохранить данные из 1С во внешний файл, воспользуйтесь встроенными инструментами платформы. Они доступны даже пользователям без прав на изменение конфигурации.

Самый простой способ — экспорт табличного документа (отчета, обработки) в Excel или PDF. Для этого:

  1. Откройте нужный отчет (например, Оборотно-сальдовая ведомость).
  2. Нажмите кнопку «Ещё» → «Выгрузить» (или Файл → Сохранить как в старых версиях).
  3. Выберите формат: .xlsx, .pdf, .mxl (для 1С).
  4. Укажите путь сохранения (по умолчанию предлагается папка Документы).

Обратите внимание: при экспорте в Excel крупных отчетов (более 10 000 строк) 1С может «зависнуть». В этом случае лучше использовать постраничную выгрузку или формат .csv, который обрабатывается быстрее.

  • 📄 Текстовые файлы: можно создать через Файл → Новый → Текстовый документ (доступно не во всех конфигурациях).
  • 📊 Табличные документы: экспортируются через контекстное меню отчета.
  • 📁 Архивы: 1С поддерживает создание .zip через объект ЗипФайл (требует прав на выполнение кода).
⚠️ Внимание: При сохранении файлов в сетевой папке (например, \\server\shared\) убедитесь, что у пользователя Windows есть права на запись. 1С использует учетные данные текущей сессии!

2. Создание файлов через встроенный язык (1С:Предприятие 8.3)

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

Базовый код для создания текстового файла:

// Создаем объект для работы с файлом

Файл = Новый ЗаписьТекста();

Файл.Открыть("C:\Temp\example.txt", КодировкаТекста.UTF8);

// Записываем данные

Файл.ЗаписатьСтроку("Это первая строка");

Файл.ЗаписатьСтроку("Дата формирования: " + ТекущаяДата());

// Закрываем файл

Файл.Закрыть();

Для работы с Excel через встроенный язык используйте объект ТабличныйДокумент:

ТабДок = Новый ТабличныйДокумент();

ТабДок.ВывестиСтроку("Заголовок отчета");

ТабДок.ВывестиЯчейку("Сумма", 1000);

// Сохраняем в Excel

ТабДок.Записать("C:\Temp\report.xlsx", ТипФайлаТабличногоДокумента.XLSX);

  • 🔹 Кодировки: всегда указывайте UTF-8 для текстовых файлов, чтобы избежать проблем с кириллицей.
  • 🔹 Права доступа: код выполнится только если у пользователя есть роль Администрирование или Полные права.
  • 🔹 Ошибки записи: используйте конструкцию Попытка...Исключение, чтобы обработать сбои (например, если диск переполнен).

☑️ Подготовка к программному созданию файла

Выполнено: 0 / 4

3. Особенности работы с файлами в разных конфигурациях

Не все конфигурации 1С поддерживают одинаковые способы работы с файлами. Например, в 1С:Бухгалтерия 3.0 можно выгружать отчеты в Excel стандартными средствами, а в 1С:Управление торговлей 11 для этого часто требуется доработка.

Конфигурация Поддерживаемые форматы Ограничения Требует ли доработки
1С:Бухгалтерия 3.0 .xlsx, .pdf, .mxl, .csv Нет экспорта в .docx Нет
1С:Зарплата и Управление Персоналом 3.1 .xlsx, .pdf, .txt Ограничение на 50 000 строк в Excel Частично (для больших отчетов)
1С:Управление Торговлей 11 .xlsx, .xml (для обмена) Нет встроенного экспорта в PDF Да (для нестандартных форматов)
1С:ERP Управление предприятием 2 Все основные форматы Требует лицензию на 1C:Предприятие 8.3 не ниже 8.3.15 Нет

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

⚠️ Внимание: В 1С:Бухгалтерия 2.0 (устаревшая версия) нет встроенной поддержки Excel 2007+. Для выгрузки в .xlsx требуется установка дополнительного компонента 1C:Enterprise 8.3 Compatibility Mode.

4. Создание файлов для обмена данными (XML, JSON, CSV)

Один из самых распространенных сценариев — подготовка файлов для обмена с банками, налоговой или контрагентами. Например, для загрузки платежных поручений в клиент-банк или выгрузки прайс-листа на сайт.

Пример кода для создания XML-файла с данными о контрагентах:

// Создаем объект записи XML

ЗаписьXML = Новый ЗаписьXML();

ЗаписьXML.ОткрытьФайл("C:\Exchange\contractors.xml", "UTF-8");

// Записываем заголовок

ЗаписьXML.ЗаписатьОбъявлениеXML();

ЗаписьXML.ЗаписатьНачалоЭлемента("Контрагенты");

// Получаем данные из справочника

Выборка = Справочники.Контрагенты.Выбрать();

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

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

ЗаписьXML.ЗаписатьАтрибут("ИНН", Выборка.ИНН);

ЗаписьXML.ЗаписатьТекст(Выборка.Наименование);

ЗаписьXML.ЗаписатьКонецЭлемента(); // Контрагент

КонецЦикла;

ЗаписьXML.ЗаписатьКонецЭлемента(); // Контрагенты

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

Для JSON используйте объект ЗаписьJSON (доступен с версии платформы 8.3.10):

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

ЗаписьJSON.ОткрытьФайл("C:\Exchange\data.json", "UTF-8");

ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьЗначение("Date", ТекущаяДата());

ЗаписьJSON.ЗаписатьНачалоМассива("Items");

// Добавляем элементы массива

ЗаписьJSON.ЗаписатьНачалоОбъекта();

ЗаписьJSON.ЗаписатьЗначение("Name", "Товар 1");

ЗаписьJSON.ЗаписатьЗначение("Price", 1000);

ЗаписьJSON.ЗаписатьКонецОбъекта();

ЗаписьJSON.ЗаписатьКонецМассива(); // Items

ЗаписьJSON.ЗаписатьКонецОбъекта();

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

  • 📌 XML: обязательно указывайте кодировку UTF-8, иначе возможны ошибки при чтении файла банковскими системами.
  • 📌 CSV: разделитель по умолчанию — запятая, но для российских данных лучше использовать ; (точка с запятой).
  • 📌 JSON: поддерживается только в новых версиях платформы (8.3.10+).
💡

Перед отправкой файла обмена проверьте его через валидатор (например, JSONLint для JSON или XMLValidation). Это поможет избежать ошибок при загрузке в банк.

5. Работа с файлами в тонком и веб-клиенте

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

В тонком клиенте для сохранения файла используйте метод ПоказатьВопросОСораненииФайла():

ТабДок = Новый ТабличныйДокумент();

// ... формируем документ

// Показываем диалог сохранения

ИмяФайла = ПоказатьВопросОСораненииФайла(ТабДок, "Сохранить отчет", "xlsx");

Если ИмяФайла <> Неопределено Тогда

ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);

КонецЕсли;

В веб-клиенте доступ к локальным дискам заблокирован. Чтобы пользователь мог скачать файл, используйте:

ТабДок = Новый ТабличныйДокумент();

// ... формируем документ

// Отправляем файл на скачивание

ПоказатьФайлНаКлиенте(ТабДок, "report.xlsx", Ложь);

⚠️ Внимание: В веб-клиенте размер скачиваемого файла ограничен настройками сервера 1С:Предприятие. По умолчанию лимит — 50 МБ. При превышении файла не сохранится, а пользователь увидит ошибку "Превышен максимальный размер данных".
  • 🖥️ Тонкий клиент: поддерживает диалоги сохранения, но не может напрямую записывать файлы без участия пользователя.
  • 🌐 Веб-клиент: файлы можно только скачивать, запись на сервер требует дополнительной настройки.
  • 📱 Мобильное приложение: сохранение файлов доступно только в папку приложения (требуется версия 8.3.18+).

6. Типичные ошибки и их решения

При работе с файлами в 1С пользователи часто сталкиваются с типичными проблемами. Рассмотрим самые распространенные и способы их устранения.

Ошибка Причина Решение
"Недостаточно прав для записи" Пользователь Windows не имеет прав на папку Измените права на папку или сохраняйте в %TEMP%
"Файл используется другим процессом" Файл открыт в Excel или другом приложении Закройте все программы, работающие с файлом
"Неверный формат файла" (при открытии) Несовпадение кодировки или структуры Укажите явную кодировку (UTF-8) при записи
"Диск переполнен" Не хватает места на диске C: Сохраняйте файлы на другой диск или очистите место
"Метод не обнаружен" (в веб-клиенте) Используется неupportedный метод (например, ЗаписьТекста) Используйте ПоказатьФайлНаКлиенте()

Еще одна частая проблема — искажение кириллицы в текстовых файлах. Это происходит из-за неверной кодировки. Всегда явно указывайте UTF-8:

Файл = Новый ЗаписьТекста();
Файл.Открыть("C:\Temp\data.txt", КодировкаТекста.UTF8); // Важно!

Если файл создается, но не открывается в Excel, проверьте:

  • 🔍 Расширение файла (должно быть .xlsx, а не .xls).
  • 🔍 Формат ячеек (даты должны быть в формате ДД.ММ.ГГГГ).
  • 🔍 Наличие скрытых символов (используйте СокрЛП() для удаления лишних пробелов).
Что делать если файл не создается без ошибок?

1. Проверьте, не заблокирован ли доступ антивирусом (например, Kaspersky может блокировать запись в программные папки).

2. Попробуйте сохранить файл в другую папку (например, C:\Temp\).

3. Убедитесь, что путь к файлу не содержит запрещенных символов (*, ?, :, |).

4. Если используете сетевой путь (\\server\share\), проверьте доступность сервера по команде ping server в командной строке.

7. Автоматизация создания файлов: расписания и регламентные задания

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

Для создания регламентного задания:

  1. Откройте Администрирование → Поддержка и обслуживание → Регламентные задания.
  2. Нажмите «Создать» и выберите тип задания (например, Выполнение кода).
  3. Укажите расписание (ежедневно, еженедельно) и время выполнения.
  4. В поле Код вставьте скрипт для создания файла (см. примеры выше).
  5. Сохраните и запустите задание вручную для проверки.

Пример кода для регламентного задания (выгрузка списка должников в CSV):

Процедура ВыгрузитьДолжников() Экспорт

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

Запрос.Текст =

"ВЫБРАТЬ

| Клиент.Наименование КАК Клиент,

| СУММА(Документ.СуммаДолга) КАК СуммаДолга

|ИЗ

| Документ.РеализацияТоваровУслуг КАК Документ

| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Клиент

| ПО Документ.Контрагент = Клиент.Ссылка

|ГДЕ

| Документ.СуммаДолга > 0

|СГРУППИРОВАТЬ ПО

| Клиент.Наименование";

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

Файл = Новый ЗаписьТекста("C:\Exchange\debtors.csv", КодировкаТекста.UTF8, Истина);

// Записываем заголовки

Файл.ЗаписатьСтроку("Клиент;Сумма долга");

// Записываем данные

Выборка = Результат.Выбрать();

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

Файл.ЗаписатьСтроку(Выборка.Клиент + ";" + Формат(Выборка.СуммаДолга, "ЧЦ=2; ЧРД=' '"));

КонецЦикла;

Файл.Закрыть();

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

Для отслеживания ошибок в регламентных заданиях настройте уведомления по email. Для этого в параметрах задания укажите адрес электронной почты и шаблон сообщения.

⚠️ Внимание: Регламентные задания выполняются под пользователем, указанным в настройках. Убедитесь, что у этого пользователя достаточно прав на доступ к данным и запись файлов.
💡

Регламентные задания — самый надежный способ автоматизировать создание файлов, но требуют тщательной отладки кода. Всегда тестируйте задание вручную перед настройкой расписания!

8. Продвинутые техники: работа с ZIP, шифрование, облачные хранилища

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

Пример кода для создания ZIP-архива:

// Создаем объект ZIP

ЗипФайл = Новый ЗипФайл("C:\Exchange\archive.zip", РежимЗипФайла.Создать);

// Добавляем файлы в архив

ЗипФайл.ДобавитьФайл("C:\Temp\report.xlsx", "reports/report.xlsx");

ЗипФайл.ДобавитьФайл("C:\Temp\data.xml", "data/data.xml");

// Закрываем архив

ЗипФайл.Закрыть();

Для шифрования файлов можно использовать внешние компоненты (например, CryptoPro) или встроенные механизмы платформы (начиная с версии 8.3.16):

// Шифруем файл (требуется ключ)

ЗашифроватьФайл("C:\Temp\data.txt", "C:\Temp\data.enc", "МойСекретныйКлюч123");

Интеграция с облачными хранилищами (Яндекс.Диск, Google Drive) возможна через HTTP-запросы или специализированные обработки. Пример выгрузки файла на Яндекс.Диск:

// Получаем токен доступа (нужно получить заранее в личном кабинете Яндекс)

Токен = "y0_AgAAAAA...";

// Формируем URL для загрузки

URL = "https://cloud-api.yandex.net/v1/disk/resources/upload?path=/1C/report.xlsx&overwrite=true";

// Отправляем файл

HTTPСоединение = Новый HTTPСоединение(URL, , "Authorization: OAuth " + Токен);

HTTPСоединение.ОтправитьФайл("C:\Temp\report.xlsx", "file", "report.xlsx");

  • 🔐 ZIP: поддерживается с версии платформы 8.3.8. Для больших файлов используйте метод ДобавитьФайлПоЧастям().
  • 🔐 Шифрование: встроенные методы доступны только в последних версиях. Для старых платформ нужны внешние компоненты.
  • ☁️ Облака: для работы с API облачных сервисов требуется регистрация приложения и получение токена.
💡

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

FAQ: Частые вопросы по созданию файлов в 1С

Можно ли создать файл в 1С без прав администратора?

Да, но с ограничениями. Пользователь может сохранять файлы через стандартные отчеты (например, выгрузка в Excel), но для программного создания файлов требуются права на выполнение кода (роль Администрирование или аналогичная).

Как создать файл в сетевой папке?

Укажите полный путь вида \\server\share\folder\file.txt. Убедитесь, что:

  • Пользователь Windows (под которым работает 1С) имеет права на запись в эту папку.
  • Сетевой диск подключен и доступен (проверьте командой net use в cmd).
  • В пути нет кириллических символов (используйте латиницу).
Почему при открытии файла Excel вижу иероглифы?

Это происходит из-за неверной кодировки. При сохранении файла явно укажите КодировкаТекста.UTF8. Если проблема остается, попробуйте:

  1. Открыть файл в Блокноте и сохранить с кодировкой UTF-8.
  2. Использовать формат CSV вместо XLSX.
  3. Проверить, не содержат ли данные специальные символы (например, ¬, |).
Можно ли создать файл в 1С на Mac или Linux?

Да, но с нюансами:

  • В веб-клиенте (кроссплатформенный) файлы можно только скачивать через ПоказатьФайлНаКлиенте().
  • В тонком клиенте для Linux/Mac пути к файлам указывайте в формате /home/user/Documents/file.txt (не C:\...).
  • Для программной записи файлов может потребоваться установка дополнительных библиотек (например, wine для работы с COM-объектами).

Официально 1С:Предприятие поддерживает Linux только в серверном варианте. Для полноценной работы с файлами на Mac/Linux рекомендуется использовать веб-клиент или виртуальную машину с Windows.

Как создать файл с данными из нескольких таблиц?

Используйте объединение данных через запрос. Пример:

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

Запрос.Текст =

"ВЫБРАТЬ

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

| Товары.Артикул,

| ОстаткиТоваров.КоличествоОстаток КАК Остаток,

| ЦеныНоменклатуры.Цена КАК Цена

|ИЗ

| Справочник.Номенклатура КАК Товары

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваров

| ПО Товары.Ссылка = ОстаткиТоваров.Номенклатура

| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры

| ПО Товары.Ссылка = ЦеныНоменклатуры.Номенклатура

|ГДЕ

| ОстаткиТоваров.КоличествоОстаток > 0";

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

Файл = Новый ЗаписьТекста("C:\Temp\goods.csv", КодировкаТекста.UTF8);

Файл.ЗаписатьСтроку("Товар;Артикул;Остаток;Цена");

Выборка = Результат.Выбрать();

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

Файл.ЗаписатьСтроку(Выборка.Товар + ";" + Выборка.Артикул + ";" +

Выборка.Остаток + ";" + Выборка.Цена);

КонецЦикла;

Файл.Закрыть();

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