Доступ к файлам сервера 1С: RDP, общие папки, консоль кластера и код
Содержание
Открыть файл на сервере 1С можно четырьмя путями: зайти на сам сервер по RDP (или по SSH, если сервер на Linux), открыть его общую папку по сетевому пути вида \\server\share, прочитать файл кодом, который выполняется на сервере, или передать его на компьютер пользователя через временное хранилище. Администратор обычно идёт через RDP, пользователь — через общую папку, разработчик — через код.
Сначала решите, какой файл нужен: служебный файл кластера, журнал регистрации, файловая база или документ, который обрабатывает конфигурация. От этого зависят и способ доступа, и права, которые придётся выдать.
Где находится «файл на сервере» и под кем к нему обращается 1С
Главная путаница в том, что у 1С две стороны: клиент и сервер. Путь C:\Обмен\prices.xlsx на компьютере бухгалтера и тот же путь на сервере — это два разных файла.
В клиент-серверном варианте серверный код выполняют рабочие процессы rphost. Они работают от имени учётной записи службы «Агент сервера 1С:Предприятия 8.3». По умолчанию это локальный пользователь USR1CV8. Отсюда три следствия:
- 📁 серверный код видит только диски и папки самого сервера, а не ваш компьютер;
- 🔐 права на файл нужны учётной записи службы, а не пользователю 1С;
- 🌐 подключённые сетевые диски (
Z:,X:) службе не видны: они существуют только в сеансе того, кто их подключил.
В файловом варианте всё проще. Базы как отдельного сервера нет, код выполняется на компьютере пользователя. «Сервером» здесь называют машину, где лежит папка с базой и файлом 1Cv8.1CD.
| Что за файл | Где обычно лежит | Как удобнее открыть |
|---|---|---|
| Служебные файлы кластера, журнал регистрации | каталог srvinfo на сервере 1С | RDP или SSH |
| Файловая база | общая папка на файловом сервере | сетевой путь в списке баз |
| Файл обмена, загрузки, выгрузки | папка на сервере, указанная в настройках | общая папка или код |
| Файл, который нужен пользователю | любой каталог сервера | код: сервер → временное хранилище → клиент |
Открываем файл прямо на сервере: RDP и терминал
Самый прямой способ — работать на самой машине. Для Windows Server это удалённый рабочий стол.
- Нажмите
Win + R, введитеmstscи нажмите Enter. - Укажите имя или IP сервера, войдите под учётной записью с правами администратора или с доступом к нужной папке.
- Откройте Проводник и перейдите в каталог. Для служебных файлов 1С по умолчанию это
C:\Program Files\1cv8\srvinfo. - Если файл текстовый (лог, XML, CSV), открывайте его в Блокноте или другом редакторе только на чтение.
На Linux-сервере то же самое делают через SSH. Каталог кластера при установке по умолчанию лежит в домашней папке пользователя службы: /home/usr1cv8/.1cv8/1C/1cv8/. Смотреть файлы удобно так:
ssh admin@srv-1c
sudo ls -la /home/usr1cv8/.1cv8/1C/1cv8/
sudo less /home/usr1cv8/.1cv8/1C/1cv8/reg_1541/1CV8Clst.lst
Скопировать файл к себе на компьютер можно через scp или WinSCP.
Не редактируйте вручную файлы в srvinfo при работающей службе. Файл 1CV8Clst.lst хранит реестр кластера: список баз, рабочих серверов, администраторов. Испорченный реестр — это кластер, который не стартует. Если без правки не обойтись, сначала сделайте копию файла, предупредите пользователей, что сеансы оборвутся, и только потом останавливайте службу в нерабочее время.
Как открыть файл на сервере 1С по сети: общие папки и UNC-пути
Если нужен регулярный доступ без входа на сервер, расшарьте папку.
- На сервере в свойствах папки откройте вкладку
Доступ → Расширенная настройкаи включите общий доступ. - В разрешениях общего ресурса дайте «Изменение» группе, которой нужен доступ.
- На вкладке
Безопасность(права NTFS) выдайте те же права. Работают оба уровня: итоговое право — наименьшее из двух. - Откройте папку с клиентского компьютера по пути
\\srv-1c\Obmen.
Если к общей папке должен обращаться сам сервер 1С
Типичный сценарий: обмен с сайтом или банком, где конфигурация кладёт файлы в сетевую папку на другом компьютере. Код выполняется под USR1CV8, а это локальная учётная запись. Чужой компьютер её не знает и в доступе откажет.
Рабочие варианты:
- 🔑 запустить службу агента сервера под доменной учётной записью и дать ей права на общую папку;
- 📂 держать папку обмена на самом сервере 1С и расшарить её для внешней системы;
- 🧭 в настройках обмена всегда указывать UNC-путь (
\\fs01\Obmen\bank), а не букву диска.
Смену учётной записи службы делайте в нерабочее время: при перезапуске агента все сеансы пользователей завершатся. После смены у новой учётной записи должны быть права на каталог srvinfo и на каталог временных файлов.
Файловая база в общей папке
Для файловой базы путь указывают при добавлении в список баз: Добавить → Добавление в список существующей информационной базы → На данном компьютере или на компьютере в локальной сети. В поле каталога вводите UNC-путь к папке с 1Cv8.1CD. Всем, кто работает в базе, нужны права на изменение этой папки: платформа создаёт в ней служебные файлы блокировок.
Консоль кластера серверов: что она покажет и чего не откроет
Консоль администрирования серверов 1С файлы не открывает. Её роль — найти, к какой базе относится файл и кто его держит.
Что в ней полезно для работы с файлами:
- 🗂 Информационные базы. Список баз кластера. По нему видно, какие базы зарегистрированы и на каком сервере СУБД лежат данные.
- 👥 Сеансы. Кто сейчас работает в базе, с какого компьютера, в каком приложении. Отсюда видно, какой сеанс может держать файл или данные.
- 🔒 Блокировки. Объекты, заблокированные сеансами.
- ⚙️ Рабочие процессы. Какой
rphostсколько памяти занимает и сколько у него соединений.
Внутри srvinfo\reg_1541 у каждой базы своя папка с именем-идентификатором. Чтобы понять, какая папка чья, получите идентификаторы через утилиту rac (сервис ras должен быть запущен):
rac cluster list
rac infobase summary list --cluster=<id-кластера>
Команда выведет для каждой базы её infobase (идентификатор) и name. Папка с тем же идентификатором и есть каталог базы на сервере. Если нужна другая команда — смотрите справку rac help.
В консоли можно завершить сеанс, который держит файл. Это обрывает работу пользователя без сохранения, так что сначала предупредите его.
Как открыть файл на сервере из кода 1С
Разработчику важно помнить, где выполняется код. Директива &НаСервере или &НаСервереБезКонтекста означает: файл ищется на диске сервера, под правами службы.
Прочитать текстовый файл на сервере
&НаСервереБезКонтекста
Функция ПрочитатьФайлНаСервере(ПутьКФайлу)
Файл = Новый Файл(ПутьКФайлу);
Если Не Файл.Существует() Тогда
ВызватьИсключение СтрШаблон("Файл %1 не найден на сервере", ПутьКФайлу);
КонецЕсли;
Чтение = Новый ЧтениеТекста(ПутьКФайлу, КодировкаТекста.UTF8);
Содержимое = Чтение.Прочитать();
Чтение.Закрыть();
Возврат Содержимое;
КонецФункции
Вызов с клиента: Текст = ПрочитатьФайлНаСервере("\\fs01\Obmen\prices.csv");. Если файл в кодировке Windows-1251, укажите КодировкаТекста.ANSI.
Отдать серверный файл пользователю
Открыть файл в Excel или Блокноте прямо на сервере из сеанса пользователя нельзя: ЗапуститьПриложение выполняется на клиенте. Поэтому файл сначала передают на компьютер пользователя.
&НаСервере
Функция АдресФайлаВХранилище(ПутьКФайлу)
Данные = Новый ДвоичныеДанные(ПутьКФайлу);
Возврат ПоместитьВоВременноеХранилище(Данные, УникальныйИдентификатор);
КонецФункции
&НаКлиенте
Процедура СкачатьФайл(Команда)
Адрес = АдресФайлаВХранилище("D:\Obmen\otchet.xlsx");
ПолучитьФайл(Адрес, "otchet.xlsx", Истина);
КонецПроцедуры
Параметр Истина показывает пользователю диалог сохранения. В веб-клиенте и в конфигурациях с отключёнными синхронными вызовами вместо ПолучитьФайл используют асинхронный аналог из синтакс-помощника, логика та же.
Положить файл пользователя на сервер
Обратная задача решается так же, через временное хранилище: на клиенте НачатьПомещениеФайла или ПоместитьФайл, на сервере ПолучитьИзВременногоХранилища(Адрес) и запись двоичных данных методом Записать(ПутьНаСервере). Для промежуточного файла берите ПолучитьИмяВременногоФайла("xlsx"): каталог временных файлов службы гарантированно доступен ей на запись.
Если для базы в консоли кластера назначен профиль безопасности, серверный код видит только разрешённые в нём каталоги. Ошибка доступа при правильных правах NTFS часто объясняется именно профилем.
Журнал регистрации и логи: где лежат и чем открыть
Журнал регистрации в обычной работе смотрят из самой 1С, а не из файлов:
- в конфигурациях на интерфейсе «Такси» (БП 3.0, ЗУП 3.1, УТ 11) —
Администрирование → Обслуживание → Журнал регистрации; - в Конфигураторе —
Администрирование → Журнал регистрации.
Файлы журнала нужны, когда база не запускается или журнал надо передать на анализ. Где они лежат:
| Вариант базы | Каталог журнала |
|---|---|
| Клиент-серверная | srvinfo\reg_1541\<идентификатор базы>\1Cv8Log |
| Файловая | подпапка 1Cv8Log рядом с 1Cv8.1CD |
В старом формате журнал хранится в файлах *.lgf и *.lgp, в новом — в одном файле 1Cv8.lgd (это база SQLite). Открывать их в текстовом редакторе бессмысленно. Скопируйте папку 1Cv8Log целиком и откройте журнал в любой базе через форму журнала регистрации, указав этот каталог, или передайте его специалисту.
Технологический журнал по умолчанию выключен. Его включают файлом logcfg.xml в каталоге conf платформы; в этом же файле задают папку для логов. После анализа выключите его: на нагруженном сервере технологический журнал быстро занимает гигабайты.
Нужно найти, кто удалил документ или менял настройку? Это журнал регистрации с отбором по пользователю и событию. Нужно понять, почему падает rphost или виснет запрос? Это технологический журнал.
Нет доступа или файл занят: права и блокировки
Большинство проблем с открытием файла сводится к трём причинам: неверная сторона (клиент вместо сервера), не та учётная запись, файл держит другой процесс.
Принудительное закрытие открытого файла через оснастку «Общие папки» обрывает работу того, кто его открыл, и несохранённые изменения пропадут. Для файловой базы это особенно опасно: закрывать 1Cv8.1CD при открытых сеансах нельзя, сначала выведите пользователей из базы.
Отдельный случай — служебные файлы файловой базы. Пока в базе есть хотя бы один сеанс, в её папке лежат файлы блокировок. Удалять их вручную допустимо только тогда, когда вы уверены, что все сеансы закрыты, и компьютер с базой никто не использует. Иначе есть риск повредить базу.
Частые вопросы
Можно ли открыть файл сервера 1С через браузер?
Какой учётной записи давать права на папку обмена?
services.msc в свойствах службы, на вкладке входа в систему. Права пользователя 1С здесь роли не играют.Почему в файловой базе код находит файл, а после перехода на сервер перестал?
Можно ли открыть файл .1CD сервера в Конфигураторе напрямую?
Где найти идентификатор базы, чтобы открыть её папку в srvinfo?
rac infobase summary list с указанием кластера. Каталог с тем же идентификатором в reg_1541 и есть папка базы.