Работа с файлами в 1С:Предприятие — одна из самых востребованных операций, с которой сталкиваются и бухгалтеры, и программисты, и администраторы. Нужно ли сохранить отчет в Excel, выгрузить данные для обмена с банком или просто создать текстовый документ с комментариями — без понимания механизмов работы с файлами не обойтись. При этом способы создания файлов сильно зависят от версии платформы (8.3 или 8.2), конфигурации (Бухгалтерия 3.0, УТ 11, ЗУП 3.1) и даже от прав пользователя в системе.
Многие новички путают создание файлов внутри 1С (например, через встроенный текстовый редактор) и экспорт данных в внешние файлы (.xlsx, .xml, .txt). В этой статье мы разберем все возможные сценарии — от простейших до продвинутых, — а также расскажем, как избежать типичных ошибок при работе с файловой системой. Если вы никогда не работали с файлами в 1С, начните с первых разделов. Опытным пользователям будет полезен блок про программное создание файлов через встроенный язык.
1. Базовые способы создания файлов без программирования
Если вам не требуется автоматизация, а нужно просто сохранить данные из 1С во внешний файл, воспользуйтесь встроенными инструментами платформы. Они доступны даже пользователям без прав на изменение конфигурации.
Самый простой способ — экспорт табличного документа (отчета, обработки) в Excel или PDF. Для этого:
- Откройте нужный отчет (например,
Оборотно-сальдовая ведомость). - Нажмите кнопку «Ещё» → «Выгрузить» (или
Файл → Сохранить какв старых версиях). - Выберите формат:
.xlsx,.pdf,.mxl(для 1С). - Укажите путь сохранения (по умолчанию предлагается папка
Документы).
Обратите внимание: при экспорте в 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для текстовых файлов, чтобы избежать проблем с кириллицей. - 🔹 Права доступа: код выполнится только если у пользователя есть роль
АдминистрированиеилиПолные права. - 🔹 Ошибки записи: используйте конструкцию
Попытка...Исключение, чтобы обработать сбои (например, если диск переполнен).
☑️ Подготовка к программному созданию файла
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. Автоматизация создания файлов: расписания и регламентные задания
Если файлы нужно создавать регулярно (например, ежедневная выгрузка отчетов), настройте регламентное задание. Это избавит от рутинных операций.
Для создания регламентного задания:
- Откройте
Администрирование → Поддержка и обслуживание → Регламентные задания. - Нажмите «Создать» и выберите тип задания (например,
Выполнение кода). - Укажите расписание (ежедневно, еженедельно) и время выполнения.
- В поле
Кодвставьте скрипт для создания файла (см. примеры выше). - Сохраните и запустите задание вручную для проверки.
Пример кода для регламентного задания (выгрузка списка должников в 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. Если проблема остается, попробуйте:
- Открыть файл в Блокноте и сохранить с кодировкой
UTF-8. - Использовать формат
CSVвместоXLSX. - Проверить, не содержат ли данные специальные символы (например,
¬,|).
Можно ли создать файл в 1С на Mac или Linux?
Да, но с нюансами:
- В веб-клиенте (кроссплатформенный) файлы можно только скачивать через
ПоказатьФайлНаКлиенте(). - В тонком клиенте для Linux/Mac пути к файлам указывайте в формате
/home/user/Documents/file.txt(неC:\...). - Для программной записи файлов может потребоваться установка дополнительных библиотек (например,
wineдля работы с COM-объектами).
Официально 1С:Предприятие поддерживает Linux только в серверном варианте. Для полноценной работы с файлами на Mac/Linux рекомендуется использовать веб-клиент или виртуальную машину с Windows.
Как создать файл с данными из нескольких таблиц?
Используйте объединение данных через запрос. Пример:
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Товары.Наименование КАК Товар,
| Товары.Артикул,
| ОстаткиТоваров.КоличествоОстаток КАК Остаток,
| ЦеныНоменклатуры.Цена КАК Цена
|ИЗ
| Справочник.Номенклатура КАК Товары
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ОстаткиТоваров.Остатки КАК ОстаткиТоваров
| ПО Товары.Ссылка = ОстаткиТоваров.Номенклатура
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
| ПО Товары.Ссылка = ЦеныНоменклатуры.Номенклатура
|ГДЕ
| ОстаткиТоваров.КоличествоОстаток > 0";
Результат = Запрос.Выполнить();
Файл = Новый ЗаписьТекста("C:\Temp\goods.csv", КодировкаТекста.UTF8);
Файл.ЗаписатьСтроку("Товар;Артикул;Остаток;Цена");
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
Файл.ЗаписатьСтроку(Выборка.Товар + ";" + Выборка.Артикул + ";" +
Выборка.Остаток + ";" + Выборка.Цена);
КонецЦикла;
Файл.Закрыть();
Для сложных отчетов с группировками используйте ТабличныйДокумент или специализированные обработки (например, Универсальный отчет).