Переход на новые версии платформы 1С:Предприятие (начиная с 8.3.15 и 8.3.16) часто преподносит сюрпризы системным администраторам и программистам. Одной из самых распространенных проблем является внезапный отказ обработок, которые работают с внешними файлами: .dbf, .xls, .doc. Ошибка проявляется одинаково: файлы, расположенные в сетевых папках, перестают открываться в процедурах, выполняемых на стороне сервера, хотя локальные файлы на диске сервера продолжают обрабатываться корректно. Разберем детально, почему это происходит и как вернуть работоспособность системы.
Проанализируем процесс установки новой платформы. В версиях 8.3.16 и выше мастер установки был обновлен. При инсталляции новой ветки платформы программа часто предлагает создать нового локального пользователя usr1cv8 для запуска службы агента сервера. Даже если ранее ваша служба работала под доменной учетной записью, имеющей доступ к сетевым ресурсам, нажатие кнопки "Далее" по умолчанию сбрасывает эти настройки.
Локальный пользователь usr1cv8 (или аналогичный) не обладает правами доступа к объектам вне локальной машины. Для него сетевые пути вида \\ServerName\Folder\File.ext просто не существуют или закрыты на уровне прав доступа Windows.
Как проверить и исправить:
services.msc) на сервере приложений 1С.Рассмотрим ситуацию, когда в коде прописаны пути типа Z:\Files\data.dbf. Важно понимать, что сетевые диски являются частью сеанса конкретного пользователя. Служба 1С работает в своем изолированном сеансе (Session 0) и "не видит" дисков, подключенных под вашей учетной записью. Выясним причину: для операционной системы Z:\ — это всего лишь ссылка, которая создается при логине пользователя.
Решение: Всегда используйте полные UNC-пути (Universal Naming Convention). Вместо буквы диска указывайте сетевое имя сервера:
ПутьКФайлу = "\\FileServer\Public\Bases\file.dbf";
Если ваши обработки используют COM-соединение для открытия файлов Microsoft Office на сервере, после обновления платформы (особенно при переходе на 64-битную версию) могут возникнуть специфические ошибки инициализации. Посмотрим на технические нюансы: приложения Office требуют наличия профиля рабочего стола для корректного запуска в фоновом режиме.
Чтобы исправить это, создадим необходимые директории вручную:
C:\Windows\SysWOW64\config\systemprofile\DesktopC:\Windows\System32\config\systemprofile\DesktopБез этих папок попытка создания объекта Excel.Application на сервере может возвращать неочевидные ошибки или просто "зависать".
В новых версиях платформы 1С значительно усилен контроль безопасности. Если ваша обработка является "внешней" или код выполняется в "безопасном режиме", доступ к файловой системе может быть ограничен настройками профилей безопасности в консоли администрирования кластера 1С. Проанализируем настройки базы в консоли: убедитесь, что для информационной базы не включены жесткие ограничения на работу с внешними ресурсами, или добавьте нужные сетевые пути в исключения профиля безопасности.
Современная методология разработки на платформе 1С рекомендует минимизировать прямые обращения сервера к сетевым ресурсам. Самым надежным способом, который будет работать независимо от настроек службы, является передача файла с клиента на сервер через временное хранилище.
Разберем этот метод по шагам:
Посмотрим на пример реализации:
&НаКлиенте
Процедура ЗагрузитьФайл(Команда)
ПараметрыДиалога = Новый ДиалогВыбора Файла(РежимДиалогаВыбораФайла.Открытие);
Если ПараметрыДиалога.Выбрать() Тогда
ОписаниеФайла = Новый ОписаниеПередаваемогоФайла(ПараметрыДиалога.ПолноеИмяФайла);
МассивФайлов = Новый Массив;
МассивФайлов.Добавить(ОписаниеФайла);
НачатьПомещениеФайловНаСервер(,, МассивФайлов, УникальныйИдентификатор);
КонецЕсли;
КонецПроцедуры
&НаСервере
Процедура ОбработатьФайлНаСервере(АдресХранилища)
// Получаем файл из хранилища во временный каталог сервера
ИмяВременногоФайла = ПолучитьИмяВременногоФайла("dbf");
ДвоичныеДанные = ПолучитьИзВременногоХранилища(АдресХранилища);
ДвоичныеДанные.Записать(ИмяВременногоФайла);
// Теперь работаем с локальным файлом на сервере
БД = Новый XBase;
БД.ОткрытьФайл(ИмяВременногоФайла);
// ... логика обработки ...
БД.ЗакрытьФайл();
УдалитьФайлы(ИмяВременногоФайла);
КонецПроцедуры
Преимущества этого метода:
rphost.Если после обновления платформы 1С 8.3.16 у вас перестали открываться сетевые файлы, первым делом проверьте владельца службы 1C:Enterprise 8.3 Server Agent. В 90% случаев проблема кроется именно в автоматической смене пользователя на usr1cv8. Однако для долгосрочной стабильности системы мы рекомендуем пересмотреть архитектуру ваших обработок в пользу использования ВременногоХранилища. Это избавит вас от необходимости настраивать права доступа при каждом обновлении платформы или смене серверов.