Работа с внешними файлами в 1С:Предприятие — одна из самых востребованных задач как для обычных пользователей, так и для разработчиков.hether вам нужно импортировать прайс-лист из Excel, загрузить выписку банка в формате XML или обработать текстовый отчёт, умение корректно открывать и интегрировать внешние данные сэкономит часы ручного ввода. При этом подходы радикально отличаются в зависимости от версии платформы, конфигурации и даже прав доступа пользователя.
Многие ошибочно считают, что для работы с файлами обязательно нужен доступ к конфигуратору или знание 1С-скриптов. На самом деле даже рядовой пользователь может загружать данные через типовой функционал — главное знать, где искать нужные кнопки и какие форматы поддерживаются"из коробки". С другой стороны, разработчики получают гораздо больше возможностей: от чтения бинарных файлов до автоматизации обмена через REST API. В этой статье мы разберём оба подхода — с нуля до продвинутых техник.
Прежде чем приступать, убедитесь, что у вас есть:
- 📁 Права на чтение/запись в каталоге с файлом (для серверного варианта)
- 🔑 Доступ к конфигуратору (если планируете писать код)
- 📊 Подходящий формат файла (1С лучше всего работает с
.xlsx,.xml,.csv,.txt) - 🔄 Резервная копия базы (при массовой загрузке данных)
1. Стандартные способы загрузки файлов без программирования
Если вы не разработчик, начинайте с типового функционала — он покрывает 80% задач по импорту данных. Большинство конфигураций (Бухгалтерия 3.0, Управление торговлей 11, Зарплата и управление персоналом) уже содержат обработки для загрузки внешних файлов.
Где искать:
- 📂 Меню"Файл" →"Открыть" (для просмотра содержимого)
- 📊 Раздел"Администрирование" →"Загрузка данных" (для импорта в справочники/документы)
- 🔄 Обработки →"Универсальный обмен данными" (для XML/Excel)
Например, в 1С:Бухгалтерии 3.0 для импорта выписки банка перейдите в Банк → Банковские выписки → Загрузить. Система сама предложит выбрать файл .xlsx или .xml и сопоставить колонки с реквизитами документов. Аналогично работает загрузка прайс-листов в Управлении торговлей через Маркетинг → Ценообразование → Загрузка цен номенклатуры.
⚠️ Внимание: При загрузке через типовой функционал 1С автоматически проверяет структуру файла. Если вExcel-файле объединены ячейки или используются формулы, система может выдать ошибку. Перед импортом сохраните файл в формате.xlsx(не.xls) и удалите все объединения.
Для текстовых файлов (.txt, .csv) часто требуется предварительная настройка разделителей. В обработке загрузки укажите:
- 📌 Разделитель колонок (запятая, точка с запятой, табуляция)
- 📌 Кодировку (обычно
UTF-8илиWindows-1251) - 📌 Наличие заголовков в первой строке
Удалить объединённые ячейки|Сохранить в формате.xlsx (не.xls)|Проверить кодировку (UTF-8 для CSV)|Убрать формулы, оставив только значения|Сопоставить колонки с реквизитами 1С-->
2. Загрузка через"Универсальный обмен данными"
Универсальный обмен данными — это встроенная обработка, которая умеет работать с XML, Excel и даже JSON (в новых версиях платформы). Она позволяет гибко настраивать правила преобразования данных и сохранять шаблоны для повторного использования.
Как открыть обработку:
- Откройте меню
Файл → Открыть. - В поле"Тип файла" выберите
Обработка (*.epf). - Перейдите в каталог шаблонов 1С (обычно
C:\Program Files\1cv8\templates\) и выберитеUniver.epf.
После запуска обработки:
- Укажите путь к файлу и его формат.
- Выберите объект 1С для загрузки (например, справочник"Номенклатура" или документ"Поступление товаров").
- Настройте соответствие полей файла и реквизитов 1С (можно сохранять шаблоны!).
- Запустите загрузку и проверьте результат.
Преимущество этого метода — гибкость. Например, вы можете:
- 🔄 Загружать данные в несколько справочников одновременно
- 📊 Преобразовывать форматы дат/чисел на лету
- 🔍 Фильтровать строки по условиям (например, загружать только активную номенклатуру)
⚠️ Внимание: В старых версиях 1С (до 8.3.10) обработка"Универсальный обмен" может не поддерживать.xlsx. В этом случае сохраните файл в формате.xls(Excel 97-2003) или используйтеCSV.
| Формат файла | Поддержка в"Универсальном обмене" | Ограничения |
|---|---|---|
.xlsx |
Да (с 8.3.10+) | Не поддерживает объединённые ячейки |
.xls |
Да | Ограничение на 65 536 строк |
.xml |
Да | Требует XSD-схемы для сложных структур |
.csv |
Да | Чувствителен к разделителям и кодировке |
.json |
Да (с 8.3.18+) | Нет визуального редактора сопоставления |
3. Чтение файлов через встроенный язык 1С (для разработчиков)
Если типовой функционал не подходит, придётся писать код. Встроенный язык 1С предоставляет несколько объектов для работы с файлами:
- 📄
ТекстовыйДокумент— для.txt,.csv - 📊
ТабличныйДокумент— для.xlsx,.xls - 📁
Файл— для бинарного чтения/записи - 🌐
HTTPСервис— для загрузки файлов по URL
Пример кода для чтения CSV-файла:
// Открываем файл для чтения
ПутьКФайлу ="C:\Data\prices.csv";
Если НЕ ЗначениеЗаполнено(ПутьКФайлу) Тогда
Сообщить("Файл не найден!");
Возврат;
КонецЕсли;
// Чтение построчно
ТекстФайла = Новый ТекстовыйДокумент;
ТекстФайла.Прочитать(ПутьКФайлу);
Строки = ТекстФайла.ПолучитьТекст;
СтрокиМассив = Строки.Разделить(Символы.ПС);
// Обработка каждой строки
Для Каждого Строка Из СтрокиМассив Цикл
Если НЕ ПустаяСтрока(Строка) Тогда
Данные = Строка.Разделить(";"); // Разделитель - точка с запятой
// Здесь логика обработки данных (например, добавление в справочник)
КонецЕсли;
КонецЦикла;
Для работы с Excel удобнее использовать ТабличныйДокумент:
ТабДок = Новый ТабличныйДокумент;
ТабДок.Прочитать("C:\Data\prices.xlsx");
// Получаем область данных
Область = ТабДок.Область("A1:D100"); // Указываем диапазон ячеек
// Чтение ячеек
Для Сч = 1 По Область.Высота Цикл
Номенклатура = Область.Ячейка(Сч, 1).Значение;
Цена = Область.Ячейка(Сч, 3).Значение;
// Дальше логика добавления в справочник или документ
КонецЦикла;
⚠️ Внимание: При чтенииExcel-файлов черезТабличныйДокумент1С преобразует все данные в строки. Чтобы получить числа или даты, используйте функции приведения типов:Число,Дата.
Для ускорения обработки больших файлов (>10 000 строк) используйте ПотокЧтенияТекста вместо ТекстовыйДокумент. Это снижает нагрузку на память.
4. Работа с XML и JSON: особенности и примеры
Форматы XML и JSON чаще всего используются для обмена данными между системами. В 1С для них есть специализированные объекты: ЧтениеXML, ЗаписьXML и ЧтениеJSON (начиная с версии 8.3.18).
Пример чтения XML-файла с банковской выпиской:
ЧтениеXML = Новый ЧтениеXML;
ЧтениеXML.ОткрытьФайл("C:\Bank\statement.xml");
// Пропускаем заголовок
Пока ЧтениеXML.Прочитать Цикл
Если ЧтениеXML.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ИмяЭлемента = ЧтениеXML.Имя;
// Обрабатываем нужные теги
Если ИмяЭлемента ="Документ" Тогда
Номер = ЧтениеXML.ПолучитьАтрибут("Номер");
Дата = ЧтениеXML.ПолучитьАтрибут("Дата");
Сумма = ЧтениеXML.ПолучитьАтрибут("Сумма");
// Сохраняем в документ 1С
КонецЕсли;
КонецЕсли;
КонецЦикла;
ЧтениеXML.Закрыть;
Для JSON код проще, но требует версии платформы не ниже 8.3.18:
ТекстJSON = Новый ЧтениеТекста;
ТекстJSON.Открыть("C:\Data\order.json");
СтрокаJSON = ТекстJSON.ПрочитатьВесьКакСтроку;
ТекстJSON.Закрыть;
Данные = ЧтениеJSON.Прочитать(СтрокаJSON);
// Пример доступа к данным
ЗаказНомер = Данные.Номер;
ДатаЗаказа = Данные.Дата;
Обратите внимание на ключевые моменты:
- 🔍
XMLчувствителен к регистру тегов и структуре. Если файл не соответствует ожидаемой схеме, 1С выдаст ошибку. - 📜 Для
JSONв 1С нет визуального редактора — только программная обработка. - 🔄 При обмене с внешними системами (например, Диадок, Контур.Диадок) используйте готовые обработки от поставщиков — они учитывают специфику форматов.
Как проверить структуру XML-файла перед загрузкой?
Используйте бесплатные инструменты вроде XML Notepad или онлайн-валидаторы (например, https://www.xmlvalidation.com/). Они покажут ошибки в структуре, незакрытые теги или неверные атрибуты. В 1С такие ошибки приводят к падению обработки без явного сообщения о причине.
5. Автоматизация загрузки: планировщик и внешние обработки
Если файлы поступают регулярно (например, ежедневные выписки банка или прайсы поставщиков), имеет смысл автоматизировать процесс. В 1С для этого есть:
- 🕒 Регламентные задания — для запуска обработок по расписанию
- 🤖 Внешние обработки — для гибкой логики с интерфейсом
- 🌐 HTTP-сервисы — для загрузки файлов по URL
Пример настройки регламентного задания:
- Откройте
Администрирование → Поддержка и обслуживание → Регламентные задания. - Создайте новое задание, укажите обработку (например,
Univer.epf). - Настройте расписание (ежедневно в 8:00) и параметры (путь к файлу, шаблон загрузки).
- Укажите пользователя, от имени которого будет выполняться задание (у него должны быть права!).
Для сложных сценариев (например, скачивание файла с FTP, распаковка ZIP-архива и загрузка данных) пишут внешние обработки. Пример кода для скачивания файла по HTTP:
HTTPСоединение = Новый HTTPСоединение("files.example.com", 80);
Запрос = Новый HTTPЗапрос("/daily_prices.xlsx");
Ответ = HTTPСоединение.Получить(Запрос);
Если Ответ.КодСостояния = 200 Тогда
Данные = Ответ.ПолучитьТелоКакДвоичныеДанные;
Данные.Записать("C:\Temp\daily_prices.xlsx");
// Далее загрузка через Универсальный обмен
ЗагрузитьДанныеИзФайла("C:\Temp\daily_prices.xlsx");
Иначе
Сообщить("Ошибка скачивания:" + Ответ.КодСостояния);
КонецЕсли;
⚠️ Внимание: При автоматизации учитывайте права доступа. Регламентное задание выполняется от имени указанного пользователя — у него должны быть права на чтение/запись в каталоге с файлами и на создание документов в 1С.
Для надёжной автоматизации используйте комбинацию: внешняя обработка (логика) + регламентное задание (расписание) + журнал регистрации (контроль ошибок).
6. Ошибки при открытии файлов и способы их решения
Даже при правильной настройке загрузки файлов могут возникать ошибки. Вот самые распространённые и способы их устранения:
| Ошибка | Причина | Решение |
|---|---|---|
| "Файл не найден" | Неверный путь или нет прав доступа | Проверьте путь (используйте \\server\share\ вместо C:\ для сетевых файлов). Запустите 1С от имени администратора. |
| "Неверный формат файла" | Файл повреждён или не соответствует ожидаемой структуре | Откройте файл в исходной программе (Excel, блокнот) и сохраните заново. Для XML проверьте валидность через XML-валидатор. |
| "Недостаточно памяти" | Файл слишком большой (>100 МБ) | Разбейте файл на части или используйте ПотокЧтенияТекста для построчной обработки. |
| "Ошибка доступа к файлу" | Файл открыт в другой программе или заблокирован антивирусом | Закройте все программы, использующие файл. Добавьте исключение в антивирус для каталога с файлами 1С. |
| "Несовпадение структуры" | Колонки в файле не соответствуют реквизитам 1С | Настройте сопоставление полей вручную в обработке загрузки или измените структуру файла. |
Если ошибка не типична, проверьте журнал регистрации (Администрирование → Журнал регистрации). Он содержит подробные логи с указанием строки кода или обработки, где произошёл сбой. Для ошибок при чтении XML/JSON полезно включить отладку:
ЧтениеXML.УстановитьОтладку(Истина);
Критическая ошибка при загрузке больших файлов (>500 МБ) может привести к падению сеанса 1С. В этом случае используйте внешние утилиты для предварительной обработки (например, разбейте файл на части с помощью PowerShell или Python).
7. Безопасность при работе с внешними файлами
Загрузка данных из внешних источников всегда сопряжена с рисками: от случайного импорта некорректных данных до целенаправленных атак (например, через вредоносные Excel-макросы). Следуйте этим правилам:
- 🔒 Проверяйте источник файлов. Не загружайте данные из непроверенных источников (например, письма от неизвестных отправителей).
- 🛡️ Используйте антивирус. Настройте сканирование каталогов, откуда 1С берёт файлы.
- 📦 Ограничивайте права. Запретите пользователям загружать файлы в обход типовых обработок (через
Файл → Открыть). - 🔄 Делайте резервные копии. Перед массовой загрузкой данных создайте бэкап базы.
Для администраторов:
- 🔐 Настройте ролевой доступ так, чтобы только доверенные пользователи могли запускать внешние обработки.
- 📂 Ограничьте каталоги, откуда 1С может читать файлы (через параметры запуска или групповую политику Windows).
- 📊 Ведите журнал загрузок: фиксируйте, кто, когда и какие файлы импортировал.
Пример настройки ограничений через параметры запуска 1С:
/DisallowExternalDataProcessing - запрещает обработку внешних данных
/DisallowRunExternalScripts - блокирует выполнение внешних скриптов
⚠️ Внимание: В файлахExcelмогут содержаться макросы, которые 1С не блокирует при открытии. Если вы загружаете.xlsx/.xlsmиз ненадёжного источника, предварительно откройте файл в Excel с отключёнными макросами и сохраните как.xlsx(без макросов).
FAQ: Частые вопросы по работе с файлами в 1С
Можно ли открыть файл .pdf или .docx в 1С?
Нет, 1С не умеет напрямую работать с этими форматами. Однако вы можете:
- Сохранить файл на диск и открыть его внешней программой (через
ЗапуститьПриложение). - Использовать COM-объекты для интеграции с Microsoft Word/Adobe Acrobat (требует лицензии).
- Преобразовать
PDFв текст через сторонние сервисы (например, ABBYY FineReader).
Как загрузить файл больше 2 ГБ? 1С выдаёт ошибку"Недостаточно памяти".
Платформа 1С имеет ограничение на размер обрабатываемых файлов. Решения:
- Разбейте файл на части (например, по 500 МБ) с помощью Python или PowerShell.
- Используйте
ПотокЧтенияТекстадля построчной обработки без загрузки всего файла в память. - Загрузите файл во временную базу данных (например, SQLite), а затем импортируйте данные порциями.
Для XML-файлов используйте ЧтениеXML с параметром ПотоковоеЧтение = Истина.
Почему при загрузке Excel даты отображаются как числа (например, 44197 вместо 01.01.2021)?
Это особенность хранения дат в Excel: они представляются как количество дней с 1 января 1900 года. Чтобы преобразовать:
// 44197 - это дата в формате Excel
ДатаExcel = 44197;
Дата1С = Дата(1899, 12, 30) + ДатаExcel;
В типовой обработке"Универсальный обмен" обычно есть галочка"Преобразовывать даты из Excel".
Можно ли открыть файл прямо из облака (Google Drive, Яндекс.Диск)?
Прямой загрузки из облаков в 1С нет, но есть обходные пути:
- Скачайте файл на локальный диск через браузер, затем загрузите в 1С.
- Используйте rclone или Google Drive API для автоматического скачивания файлов в сетевую папку, доступную для 1С.
- Настройте синхронизацию облака с локальной папкой (например, через Google Backup and Sync).
Для автоматизации подходит вариант с HTTP-сервисом, если файл доступен по прямой ссылке.
Как проверить, какой разделитель используется в CSV-файле?
Откройте файл в Блокноте или Notepad++ и посмотрите на первую строку. Распространённые разделители:
;(точка с запятой) — стандарт для Windows,(запятая) — стандарт для macOS/Linux\t(табуляция) — используется в экспорте из некоторых программ
В 1С при настройке загрузки укажите тот же разделитель, что и в файле.