Как исправить проблему с открытием прикрепленных файлов в 1С:УПП 1.3 на РЕД ОС?

Программист 1С v8.3 (Обычные формы) IT и автоматизация бизнеса
← На главную

Перевод пользователей с операционной системы Windows на отечественные дистрибутивы Linux, такие как РЕД ОС 8, часто сопровождается техническими сложностями в работе устаревших конфигураций. Одной из самых распространенных проблем в 1С:Управление производственным предприятием (УПП) 1.3 является невозможность открытия прикрепленных файлов (договоров в PDF, спецификаций в DOCX или отчетов в XLSX). При нажатии на кнопку «Открыть» система не выдает ошибок, но и ничего не происходит. Рассмотрим подробно, почему так случается и как адаптировать конфигурацию (включая хранение файлов в томах на диске) для корректной работы в Linux-среде.

Выясним причину: почему Windows-код не работает в Linux

Проанализируем архитектуру решения. Конфигурация УПП 1.3 разрабатывалась в эпоху доминирования Windows и использует обычные формы. Основная часть функционала по работе с внешними файлами была написана с использованием технологии COM (Component Object Model). Когда вы пытаетесь открыть файл Word, 1С обращается к объекту Word.Application. Однако в РЕД ОС и других Linux-системах технология COM отсутствует в принципе. В то же время более современные конфигурации, такие как Документооборот 2.1, работают исправно, так как они изначально проектировались как кроссплатформенные на управляемых формах.

Второй критический момент — это жесткая привязка к символам разделителей путей. В Windows используется обратный слеш \, а в Linux — прямой /. Если в коде программно формируется путь к временному файлу путем конкатенации строк, приложение просто не сможет найти этот путь в файловой системе Linux.

Шаг 1. Замена COM-объектов на системные вызовы

Разберем, как изменить механизм открытия файлов. Вместо попыток создать COM-объект, мы должны использовать встроенную команду 1С ЗапуститьПриложение(). В Linux эта команда инициирует вызов системного обработчика (обычно это xdg-open), который определяет программу по умолчанию для конкретного расширения файла (например, Р7-Офис или LibreOffice).

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


// Старый вариант (только для Windows)
// Объект = Новый COMОбъект("Word.Application");
// Объект.Documents.Open(ПолноеИмяФайла);

// Новый кроссплатформенный вариант
Если ИмяТипаЗнч(Платформа) <> "Windows" Тогда
    // Для Linux используем системный запуск
    ЗапуститьПриложение(ПолноеИмяФайла);
Иначе
    // Для Windows можно оставить старый механизм или также перейти на ЗапуститьПриложение
    ЗапуститьПриложение(ПолноеИмяФайла);
КонецЕсли;

Шаг 2. Исправление разделителей пути и регистрозависимости

Рассмотрим ситуацию, когда файл сохраняется во временный каталог, но не открывается из-за ошибки в пути. Файловая система Linux (обычно ext4) является регистрозависимой. Это значит, что файл Document.pdf и document.PDF — это разные объекты. Проанализируем, как формируется имя файла в коде.

Важно исключить использование конструкций типа Путь + "\" + Имя. Вместо этого необходимо использовать системную переменную ПолучитьРазделительПути() или стандартные функции платформы для работы с путями. Посмотрим на правильный пример формирования пути:


Разделитель = ПолучитьРазделительПути();
ПутьКФайлу = КаталогВременныхФайлов() + ИмяФайла;
// Платформа 8.3 сама подставит нужный слеш в зависимости от ОС

Шаг 3. Проверка прав доступа и временных каталогов

Выясним ситуацию с правами доступа. В РЕД ОС 8 безопасность настроена строже, чем в Windows. Если 1С сохраняет файл в папку, на которую у пользователя нет прав «выполнения» или «чтения» сторонними приложениями, то Р7-Офис не сможет его открыть.

Проанализируем следующие моменты:

  1. Временная папка: Убедитесь, что каталог /tmp не примонтирован с флагом noexec.
  2. Права файла: После записи файла на диск программно, убедитесь, что текущий пользователь ОС имеет на него полные права.
  3. Flatpak приложения: Если Р7-Офис установлен через Flatpak, он работает в изолированной «песочнице» и может не видеть файлы в системных временных папках 1С. Рекомендуем использовать RPM-пакеты для установки офисного ПО.

Шаг 4. Установка недостающих системных библиотек

Иногда проблема кроется не в коде 1С, а в отсутствии необходимых библиотек в самой РЕД ОС 8 для корректной работы 64-битного клиента 1С. Проанализируем список необходимых пакетов. Для того чтобы механизмы взаимодействия с рабочим столом (включая открытие файлов) работали стабильно, в системе должны присутствовать библиотеки совместимости.

Рекомендуем проверить наличие следующих пакетов через терминал:

Шаг 5. Отладка без конфигуратора

Если код кажется верным, но файл все равно не открывается, проверим ассоциации файлов вручную. Это поможет нам понять, на чьей стороне проблема: 1С или операционной системы. Зайдите в терминал РЕД ОС под тем же пользователем, под которым запущен клиент 1С, и выполните команду:

xdg-open /путь/к/вашему/файлу.docx

Если файл открылся в офисном редакторе — значит, проблема в логике 1С (например, некорректно передается путь в метод ЗапуститьПриложение). Если файл не открылся и в терминале — необходимо настраивать ассоциации файлов в настройках рабочего стола РЕД ОС (Мате/Cinnamon).

Резюмируем последовательность действий

Для восстановления работы открытия файлов в УПП на РЕД ОС необходимо:

  1. Провести глобальный поиск по конфигурации вызовов COMОбъект, связанных с офисными приложениями.
  2. Заменить их на вызов процедуры, использующей ЗапуститьПриложение().
  3. Проверить все участки кода, где пути к файлам собираются «вручную» с использованием обратного слеша.
  4. Убедиться, что расширения файлов передаются в нижнем регистре (.pdf вместо .PDF), чтобы избежать проблем с регистрозависимостью Linux.
  5. Проверить установку необходимых системных библиотек в РЕД ОС.

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

← На главную