132 документа
← К списку

Глава 33. Особенности разработки кроссплатформенных прикладных решений

страница

Глава 33. Особенности разработки кроссплатформенных прикладных решений

33.1. Общая информация

Данная глава содержит рекомендации по разработке прикладных решений, работающих под управлением и ОС Windows и ОС Linux.

33.2. Особенности файловой системы

В ОС Linux при работе с файлами следует учитывать, что имена файлов и каталогов являются регистрочувствительными. Например, файлы с именами file.txt и File.txt являются разными файлами и могут располагаться в одном каталоге.

В ОС Linux отсутствует понятие дисков, которое активно используется в ОС Windows. В ОС Linux существует корневая файловая система ("/") в любое место которой (в общем случае) монтируются другие файловые системы, расположенные на других носителях (диски и разделы, флэш-накопители, ISO-файлы и т. д.). Наиболее распространенными (но не обязательными!) местами монтирования внешних носителей являются точки монтирования (каталоги) /mnt или /media. При монтировании внешних носителей, они могут монтироваться как /media/<Метка раздела> или как /media/<Идентификатор устройства>. При этом автоматическое монтирование внешнего носителя не гарантировано.

Отсутствие буквенных обозначений дисков в ОС Linux может привести к следующим проблемам:

● В прикладном решении используются явно заданные пути, которые ориентированы только на использование ОС Windows;

● В прикладном решении используются механизмы проверки введенных путей, где проверяется, в том числе, и указание буквы диска;

● При указании пути, который начинается с корневого каталога, следует помнить, что для ОС Linux такой путь однозначно определяет положение каталога или файла, а для ОС Windows ‑ нет. Например, путь \temp\file.txt (или его linux-аналог /temp/file.txt) в ОС Linux точно укажет расположение и имя файла: это файл file.txt, расположенный в каталоге temp корневой файловой системы. Для ОС Windows все не так однозначно. Такой путь означает, что файл file.txt расположен в каталоге temp, который расположен в корневом каталоге текущего диска. При этом текущий диск может быть разным при двух последующих запусках одного и того же клиентского приложения с одной и той-же информационной базой.

При разработке прикладных решений следует обратить внимание на следующий момент: в ОС Windows и ОС Linux используются разные разделители пути. В ОС Windows используется "\" («обратный слэш»), а в ОС Linux ‑ "/" («прямой слэш»). При работе с методами встроенного языка такую разницу учитывать нет необходимости, т. к. они корректно работают с любым разделителем. Но если требуется передавать путь во внешнее приложение, следует указывать те разделители пути, которые используются в той ОС, под управлением которой работает «1С:Предприятие». Для получения информации о разделителях пути предназначены функции ПолучитьРазделительПути(), ПолучитьРазделительПутиКлиента(), ПолучитьРазделительПутиСервера().

Наряду с различными разделителями пути, ОС Windows и ОС Linux по разному обрабатывают файловые маски. Например, маска *.* означает указание всех файлов в ОС Windows и указание всех файлов, содержащих в имени "." ‑ в ОС Linux. Такое различие может приводить к неожиданному поведению методов встроенного языка НайтиФайлы(), УдалитьФайлы() и объекта ДиалогВыбораФайла. Особенности указания файловых масок в различных операционных системах отражены в синтакс-помощнике для функций НайтиФайлы(), УдалитьФайлы(). Для получения файловой маски, описывающей все файлы, предназначены функции ПолучитьМаскуВсеФайлы(), ПолучитьМаскуВсеФайлыКлиента(), ПолучитьМаскуВсеФайлыСервера().

Еще одной особенностью ОС Linux является то, что в ней нет возможности обращаться к сетевым ресурсам, используя UNC-нотацию (в этом случае адрес имеет следующий вид: \\server\folder\folder\file.ext). Поэтому, при необходимости использовать какой-либо внешний сетевой ресурс, его необходимо предварительно смонтировать на корневую файловую систему. При этом следует помнить, что каждое монтирование может выполняться в разную точку монтирования (разный каталог). Также можно использовать доступ к внешним сетевым ресурсам с помощью специальных приложений (например, smbclient), однако следует учитывать, что такие приложения не обязательно будут установлены в используемой копии ОС Linux.

Более подробную информацию об устройстве файловой системы ОС Linux и принципах работы с ней можно получить в документации к операционной системе или в сети Интернет.

33.3. Работа с внешними устройствами

Имена внешних устройств (и доступ к ним) по-разному выполняется в различных операционных системах. Например, последовательные порты в ОС Windows будут называть COM1, COM2 и т. д. В ОС Linux (в зависимости от дистрибутива и устройства) порты могут именоваться так: /dev/ttyS0, /dev/ttyS1 и т. д. или так: /dev/ttyUSB0, /dev/ttyUSB1 и т. д. Эту особенность следует учитывать как при разработке внешних компонент, работающих с оборудованием, так и при разработке диалогов настройки внешних компонент. Например, перечень портов, которые можно указать в обработке, следует получать непосредственно из настраиваемой внешней компоненты с помощью специального метода.

33.4. Ограниченность в правах

В ОС Linux не принято работать от имени учетной записи супер-пользователя (root). Для обычного пользователя для записи всегда доступен только домашний каталог и, как правило, каталог временных файлов. Остальная часть файловой системы может быть доступна или только на чтение или быть недоступной совсем (вся или некоторые каталоги). В связи с этим, при разработке следует учитывать, какой доступ будет иметь пользовать, от лица которого выполняется «1С:Предприятие», в каталоги, которые возвращают методы глобального контекста:

● КаталогДокументов() ‑ доступ на чтение и запись;

● КаталогПрограммы() ‑ доступ на чтение;

● КаталогВременныхФайлов() ‑ доступ на чтение и запись;

● РабочийКаталогДанныхПользователя() ‑ доступ на чтение и запись.

Для доступа к внешним устройствам может потребоваться, чтобы пользователь входил в какую-либо специализированную группу (или группы). Подробнее об этом следует смотреть в документации к используемой операционной системе.

33.5. Шрифты

При разработке прикладных решений рекомендуется всегда использовать стилевые шрифты, без явного указания гарнитуры шрифта. При необходимости можно использовать шрифты, входящие в состав Microsoft Core Fonts (http://sourceforge.net/projects/corefonts/). Не рекомендуется использовать в прикладных решениях другие шрифты, т. к. они могут отсутствовать той или иной используемой операционной системой, при этом внешний вид прикладного решения будет искажен.

33.6. Механизмы COM, OLE, ActiveDocument

Данные механизмы недоступны в ОС Linux и macOS. Для интеграции необходимо использовать другие средства, например файловый обмен в формате XML или web-сервисы.

Для внешних компонент, реализованных по COM-технологии, рекомендуется переработать их с использованием технологии NativeAPI.