DellShop B2B
Корзина

Сохранение и создание файлов на сервере 1С

10 апреля 2026 г.·12 мин чтения·Алексей РомашовАлексей Ромашов
Сохранение и создание файлов на сервере 1С

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

Зачем создавать файлы на сервере, а не на клиенте

Размещение файлов на сервере решает несколько критических задач. Во-первых, серверная обработка гарантирует единую точку хранения для всех пользователей. Файлы доступны из любого клиентского подключения, независимо от настроек локальной машины. Во-вторых, это безопасность: серверная файловая система изолирована от пользовательских устройств, и разработчик контролирует права доступа к каталогам. В-третьих, производительность: операции с большими объёмами данных на сервере выполняются быстрее, чем при передаче через канал клиент-сервер.

Типичные сценарии использования серверных файлов: выгрузка реестров для передачи в банк, формирование XML-документов для электронного документооборота, создание временных CSV-файлов для импорта в учётную систему, логирование операций обмена с внешними API. Все эти задачи требуют стабильной работы с файловой системой сервера, и 1С предоставляет для этого готовый инструментарий.

Основные функции для работы с файлами на сервере 1С

Платформа 1С:Предприятие 8 содержит встроенные объекты и функции для манипуляций с файлами. Основные из них:

  • ЗаписьТекста — объект для записи текстовых данных в файл. Поддерживает кодировки UTF-8, UTF-16, Windows-1251 и другие.
  • ЧтениеТекста — объект для чтения текстовых файлов построчно или целиком.
  • ЗаписьXML и ЧтениеXML — специализированные объекты для работы с XML-документами.
  • ДвоичныеДанные — тип для хранения и передачи бинарных файлов: изображений, архивов, PDF-документов.
  • КаталогВременныхФайлов() — функция, возвращающая путь к каталогу временных файлов на сервере. Этот каталог автоматически очищается платформой после завершения сеанса.
  • ПолучитьИмяВременногоФайла() — генерирует уникальное имя файла во временном каталоге.
  • УдалитьФайлы() — удаляет файлы или каталоги по указанному пути.

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

Пошаговая инструкция: создание текстового файла на сервере

Создание и запись текстового файла

Рассмотрим базовый сценарий: нужно создать текстовый файл на сервере, записать в него данные и сохранить по определённому пути. Последовательность действий:

  1. Определить путь к файлу. Используйте функцию КаталогВременныхФайлов() для временного хранения или укажите абсолютный путь к каталогу на сервере. Пример: ПутьКФайлу = КаталогВременныхФайлов() + "Отчет.txt";
  2. Создать объект ЗаписьТекста. Конструктор принимает два параметра: путь к файлу и кодировку. Если файл не существует, он будет создан автоматически. Пример: Запись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);
  3. Записать данные. Используйте методы ЗаписатьСтроку() для записи строки с переносом или Записать() для записи без переноса. Пример: Запись.ЗаписатьСтроку("Заголовок отчёта");
  4. Закрыть файл. Вызовите метод Закрыть(), чтобы сбросить буфер и освободить дескриптор файла. Без этого шага данные могут не записаться на диск. Пример: Запись.Закрыть();

Полный пример серверной процедуры:

&НаСервере
Процедура СоздатьТекстовыйФайлНаСервере()
    ПутьКФайлу = КаталогВременныхФайлов() + "Реестр.txt";
    Запись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);

    Запись.ЗаписатьСтроку("Номер;Дата;Сумма");
    Запись.ЗаписатьСтроку("001;01.02.2026;15000.50");
    Запись.ЗаписатьСтроку("002;02.02.2026;22300.00");

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

    Сообщить("Файл создан: " + ПутьКФайлу);
КонецПроцедуры

Этот код создаст файл Реестр.txt во временном каталоге сервера, запишет три строки с разделителем «точка с запятой» и закроет файл. Путь к созданному файлу выведется в сообщении пользователю.

Работа с бинарными данными: сохранение файлов произвольного формата

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

Пример: пользователь загружает файл через веб-форму, и нужно сохранить его на сервере.

&НаСервере
Процедура СохранитьБинарныйФайлНаСервере(АдресВоВременномХранилище)
    ДанныеФайла = ПолучитьИзВременногоХранилища(АдресВоВременномХранилище);
    ПутьКФайлу = КаталогВременныхФайлов() + "Документ.pdf";

    ДанныеФайла.Записать(ПутьКФайлу);

    Сообщить("Файл сохранён: " + ПутьКФайлу);
КонецПроцедуры

Функция ПолучитьИзВременногоХранилища() извлекает бинарные данные из временного хранилища 1С (куда они попадают после загрузки с клиента), а метод Записать() объекта ДвоичныеДанные сохраняет их на диск по указанному пути.

Обратная операция — чтение бинарного файла с сервера:

&НаСервере
Функция ПрочитатьБинарныйФайлССервера(ПутьКФайлу)
    ДанныеФайла = Новый ДвоичныеДанные(ПутьКФайлу);
    Возврат ПоместитьВоВременноеХранилище(ДанныеФайла);
КонецФункции

Этот код создаёт объект ДвоичныеДанные из файла на сервере и помещает его во временное хранилище для передачи клиенту.

Каталог временных файлов: где хранить данные на сервере

Функция КаталогВременныхФайлов() возвращает путь к специальному каталогу, который платформа 1С автоматически создаёт для текущего сеанса. Расположение каталога зависит от операционной системы сервера: в Windows это обычно подпапка в %TEMP%, в Linux — в /tmp/. Платформа гарантирует, что этот каталог доступен для записи и будет очищен после завершения сеанса пользователя.

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

Если требуется постоянное хранение, укажите абсолютный путь к каталогу на сервере. Например, создайте на диске папку C:\1C\Exports\ (в Windows) или /var/1c/exports/ (в Linux) и настройте права доступа для учётной записи, под которой работает сервер 1С. Пример записи в постоянный каталог:

&НаСервере
Процедура СохранитьВПостоянныйКаталог()
    ПутьККаталогу = "C:\1C\Exports\";
    ИмяФайла = Формат(ТекущаяДата(), "ДФ=ггггММдд_ЧЧммсс") + ".xml";
    ПутьКФайлу = ПутьККаталогу + ИмяФайла;

    Запись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.UTF8);
    Запись.ЗаписатьСтроку("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");
    Запись.ЗаписатьСтроку("<data></data>");
    Запись.Закрыть();
КонецПроцедуры

Файл будет сохранён в C:\1C\Exports\ под уникальным именем, содержащим дату и время создания.

Настройка прав доступа к файлам на сервере

Работа с файлами на сервере 1С требует правильной настройки прав доступа в операционной системе. Серверный процесс 1С:Предприятие работает под определённой учётной записью (например, NETWORK SERVICE в Windows или специальный пользователь v8srv в Linux). Эта учётная запись должна иметь права на запись в каталоги, куда сохраняются файлы.

Рекомендации по настройке прав:

  • Windows: создайте отдельный каталог для файлов 1С (например, C:\1C\Data\), откройте свойства каталога, перейдите на вкладку «Безопасность» и добавьте учётную запись, под которой работает служба сервера 1С. Предоставьте права «Изменение» и «Запись».
  • Linux: создайте каталог (например, /var/1c/data/), выполните команды chown v8srv:v8srv /var/1c/data/ и chmod 750 /var/1c/data/, чтобы назначить владельца и установить права на чтение, запись и выполнение для владельца и группы.
  • Проверка прав: перед настройкой продакшн-среды протестируйте создание файла из 1С. Если платформа возвращает ошибку «Отказано в доступе», проверьте права на каталог и владельца процесса rphost.

Неправильно настроенные права — самая частая причина ошибок при работе с файлами на сервере. Всегда проверяйте права доступа перед развёртыванием решения.

Типовые конфигурации серверов для 1С с учётом работы с файлами

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

Сценарий использования Рекомендуемая конфигурация Дисковая подсистема Ссылка
Малый бизнес: до 10 пользователей, редкие выгрузки файлов Dell PowerEdge T340, 16 ГБ RAM, Intel Xeon E-2224 SSD SATA 480 ГБ в RAID 1 Серверы для 1С
Средний бизнес: 20-50 пользователей, ежедневные выгрузки отчётов Dell PowerEdge R340, 32 ГБ RAM, Intel Xeon E-2236 SSD NVMe 960 ГБ в RAID 1 Серверы для 1С
Крупный бизнес: 100+ пользователей, массовые выгрузки, интеграции Dell PowerEdge R740, 128 ГБ RAM, 2× Intel Xeon Silver 4210 SSD NVMe 1.92 ТБ в RAID 10 + Dell PowerVault для архива файлов Серверы для 1С

Для небольших компаний достаточно двух SSD SATA в RAID 1 — это обеспечит отказоустойчивость и приемлемую скорость записи. Средний бизнес выиграет от перехода на NVMe-накопители, которые дают в 3-5 раз большую пропускную способность при записи больших файлов. Крупным организациям рекомендуется выделенное хранилище Dell PowerVault для архивирования файлов выгрузок — это разгружает основной сервер и позволяет масштабировать хранение независимо от вычислительной мощности.

Частые ошибки при работе с файлами на сервере 1С

Ошибка «Файл не может быть создан»

Причина: недостаточно прав доступа у учётной записи сервера 1С к целевому каталогу. Решение: проверьте владельца процесса rphost через команду ps aux | grep rphost (в Linux) или через диспетчер задач (в Windows), затем предоставьте этой учётной записи права на запись в каталог.

Файл создаётся, но остаётся пустым

Причина: не вызван метод Закрыть() объекта ЗаписьТекста или ЗаписьXML. Платформа буферизует данные в памяти, и без явного закрытия файла они не сбрасываются на диск. Решение: всегда завершайте работу с файлом вызовом Закрыть().

Путь к файлу содержит кириллицу, возникают ошибки

Причина: несовместимость кодировок имён файлов в файловой системе и платформе 1С. В Linux имена файлов хранятся в UTF-8, в Windows — в кодовой странице системы. Решение: используйте только латинские символы, цифры, дефис и подчёркивание в именах файлов и каталогов. Если требуется хранить человекочитаемые имена, сохраняйте их в отдельном поле справочника, а для файловой системы генерируйте имена вида file_12345.xml.

Файлы накапливаются в каталоге и занимают место на диске

Причина: не настроена автоматическая очистка каталогов с файлами. Решение: создайте регламентное задание в 1С, которое удаляет файлы старше определённого срока. Пример процедуры:

&НаСервере
Процедура ОчиститьСтарыеФайлы()
    ПутьККаталогу = "C:\1C\Exports\";
    МассивФайлов = НайтиФайлы(ПутьККаталогу, "*.xml");

    Для Каждого Файл Из МассивФайлов Цикл
        Если (ТекущаяДата() - Файл.ПолучитьВремяИзменения()) > 86400 * 7 Тогда // старше 7 дней
            УдалитьФайлы(Файл.ПолноеИмя);
        КонецЕсли;
    КонецЦикла;
КонецПроцедуры

Этот код найдёт все XML-файлы в каталоге и удалит те, что не изменялись более 7 дней.

Ошибка «Файл используется другим процессом»

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

Практические примеры использования файлов на сервере 1С

Выгрузка реестра платежей в банк

Типовая задача: сформировать текстовый файл с реестром платёжных поручений для загрузки в клиент-банк. Файл содержит несколько секций: заголовок, список платежей, итоги.

&НаСервере
Процедура ВыгрузитьРеестрПлатежей()
    ПутьКФайлу = КаталогВременныхФайлов() + "Реестр_" + Формат(ТекущаяДата(), "ДФ=ггггММдд") + ".txt";
    Запись = Новый ЗаписьТекста(ПутьКФайлу, КодировкаТекста.Windows1251);

    // Заголовок
    Запись.ЗаписатьСтроку("1CClientBankExchange");
    Запись.ЗаписатьСтроку("ВерсияФормата=1.03");
    Запись.ЗаписатьСтроку("Кодировка=Windows");

    // Платежи
    Выборка = ПолучитьВыборкуПлатежей(); // пользовательская функция
    Пока Выборка.Следующий() Цикл
        Запись.ЗаписатьСтроку("СекцияДокумент=Платежное поручение");
        Запись.ЗаписатьСтроку("Номер=" + Выборка.Номер);
        Запись.ЗаписатьСтроку("Дата=" + Формат(Выборка.Дата, "ДФ=дд.ММ.гггг"));
        Запись.ЗаписатьСтроку("Сумма=" + Формат(Выборка.Сумма, "ЧЦ=15; ЧДЦ=2; ЧГ="));
        Запись.ЗаписатьСтроку("КонецДокумента");
    КонецЦикла;

    Запись.Закрыть();
    Сообщить("Реестр выгружен: " + ПутьКФайлу);
КонецПроцедуры

Файл создаётся в кодировке Windows-1251, так как это стандарт для систем клиент-банк в России.

Создание XML-документа для ЭДО

Для электронного документооборота часто требуется сформировать XML-файл по определённому стандарту (например, УПД). Используйте объект ЗаписьXML:

&НаСервере
Процедура СформироватьXMLДокумент()
    ПутьКФайлу = КаталогВременныхФайлов() + "УПД.xml";
    Запись = Новый ЗаписьXML;
    Запись.ОткрытьФайл(ПутьКФайлу);
    Запись.ЗаписатьОбъявлениеXML();

    Запись.ЗаписатьНачалоЭлемента("Документ");
    Запись.ЗаписатьАтрибут("Версия", "1.0");

    Запись.ЗаписатьНачалоЭлемента("Номер");
    Запись.ЗаписатьТекст("00001");
    Запись.ЗаписатьКонецЭлемента(); // Номер

    Запись.ЗаписатьКонецЭлемента(); // Документ
    Запись.Закрыть();
КонецПроцедуры

ЗаписьXML автоматически форматирует структуру документа, добавляет отступы и закрывающие теги.

Логирование операций обмена во внешний файл

Для отладки интеграций полезно вести лог операций в отдельный файл:

&НаСервере
Процедура ЗаписатьВЛог(Сообщение)
    ПутьКЛогу = "C:\1C\Logs\exchange.log";

    Запись = Новый ЗаписьТекста(ПутьКЛогу, КодировкаТекста.UTF8, , Истина); // Истина = дописывать в конец
    Запись.ЗаписатьСтроку(Формат(ТекущаяДата(), "ДЛФ=DT") + " | " + Сообщение);
    Запись.Закрыть();
КонецПроцедуры

Четвёртый параметр конструктора ЗаписьТекста (Истина) указывает, что данные нужно дописывать в конец файла, а не перезаписывать его.

Оптимизация работы с большими файлами

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

  • Построчная запись. Не формируйте весь файл в строковой переменной, а сразу записывайте данные в объект ЗаписьТекста. Это снижает потребление памяти в десятки раз.
  • Порционная обработка. Если данные выгружаются из базы, используйте выборку с ограничением. Получайте по 1000 записей, записывайте в файл, освобождайте память, переходите к следующей порции.
  • Использование NVMe-накопителей. Для серверов 1С, где активно работают с файлами, переход на SSD NVMe даёт прирост производительности до 5 раз по сравнению с SATA SSD.
  • Сжатие данных. Если файлы передаются по сети или архивируются, используйте встроенные средства сжатия 1С или вызывайте внешние утилиты через ЗапуститьПриложение() (осторожно: требует настройки безопасности).

Частые вопросы

Можно ли создать файл на сервере 1С из клиентской процедуры?

Нет, функции работы с файловой системой сервера доступны только в серверном контексте. Если нужно создать файл из клиентской формы, вызовите серверную процедуру с директивой &НаСервере или &НаСервереБезКонтекста. Передайте данные для записи как параметры процедуры, а на сервере выполните операции с файлом.

Как передать файл с сервера клиенту для скачивания?

Используйте временное хранилище 1С. На сервере создайте файл, прочитайте его как ДвоичныеДанные, поместите во временное хранилище функцией ПоместитьВоВременноеХранилище() и верните адрес хранилища клиенту. На клиенте вызовите ПолучитьФайл() с этим адресом — пользователю откроется диалог сохранения файла.

Какой объём диска нужен для временных файлов 1С?

Зависит от количества пользователей и интенсивности работы с файлами. Для малого бизнеса (до 10 пользователей) достаточно 10-20 ГБ свободного места на системном диске. Для среднего бизнеса (20-50 пользователей) рекомендуется 50-100 ГБ. Крупным организациям стоит выделить отдельный раздел или диск под временные файлы объёмом от 200 ГБ и настроить автоматическую очистку старых данных.

Поделиться статьёй:

TelegramVKWhatsApp

Об авторе

Алексей Ромашов
Алексей Ромашов

Виртуализация · Сложные системы

Системный администратор, mass shootу виртуализации. 10 лет строит и обслуживает серверную инфраструктуру на VMware и Proxmox. Любит сложные задачи и понятные инструкции.

Все статьи автора →

Похожие материалы

Dell E2: платформа на процессорах Xeon второго поколения и её место в портфолио Dell

Dell E2: платформа на процессорах Xeon второго поколения и её место в портфолио Dell

Dell E2 — обозначение серверов PowerEdge 12-го поколения на процессорах Intel Xeon E5-2600 v2 (архитектура Ivy Bridge, 2013 год). Платформа предлагала до 12 ядер на процессор, поддержку DDR3-1866 и до 768 ГБ памяти в двухпроцессорных системах.

16.04.20269 мин
Компьютер на серверном процессоре: возможности и ограничения

Компьютер на серверном процессоре: возможности и ограничения

Сборка ПК на серверном процессоре даёт высокую многопоточную производительность и большой объём памяти ECC за меньшие деньги, особенно на вторичном рынке. Однако серверные Xeon и EPYC проектировались для непрерывной работы под нагрузкой, а не для игр или задач с высокой одноядерной частотой.

15.04.202612 мин
Dell: история компании и страна производства

Dell: история компании и страна производства

Dell Technologies — один из крупнейших производителей серверного оборудования. Компания начинала с продажи компьютеров из студенческого общежития в 1984 году, а сегодня управляет заводами в 14 странах и генерирует выручку свыше 100 миллиардов долларов. Серверы PowerEdge занимают 18% мирового рынка благодаря прямым продажам, гибкой кастомизации и фирменным технологиям iDRAC и OpenManage.

14.04.202611 мин