Все уже знают, что основной причиной, по которой многие организации не хотят переходить на Linux, является серия программ 1С, которые изначально не работают даже под бесплатным эмулятором WINE. Коммерческий эмулятор Wine от компании Etersoft конечно же решает многие проблемы с запуском, но менталитет русских людей таков, что никто не хочет ни за что платить, даже 472 рубля за самую дешевую версию Wine@Etersoft Local. А с другой стороны, уйдя от Windows, мы опять же попадаем в зависимость от одного единственного производителя ПО, что противоречит идеологии Linux, когда у нас должна быть свобода выбора.
В этой статье пойдёт речь о том, как правильно установить и запустить драйвера ключей HASP, а также будет описан процесс установки и настройки 1С 7.7 и 8.1.
Статья не претендует на оригинальность, в ней всего лишь собраны и скомпонованы воедино различные материалы, которые разбросаны по всемирной паутине под названием Интернет, а также мои собственные наработки.
ЧАСТЬ 1. Установка драйверов USB-ключей HASP HL и HASP SRM.
Драйвера HASP-ключей состоят из трех модулей: AksUSBD, HASPLM и WineHASP. Для LPT-ключей нужно устанавливать ещё четвертый драйвер – AksParLNX, но поскольку эти ключи уже давно сняты с производства и не поддерживаются компанией Aladdin, то процесс установки драйверов для них будет описан отдельно. Сейчас же речь пойдет о USB-ключах: HASP HL и HASP SRM.
AksUSBD – общий драйвер для всех ключей HASP и Hardlock. Без него ничего работать не будет!
HASPLM – менеджер лицензий для сетевых ключей HASP; если у вас только локальный ключ HASP, устанавливать программу необязательно.
WineHASP – модуль для взаимодействия локальных ключей HASP с эмулятором Wine; если у вас только сетевые ключи HASP, то устанавливать модуль не обязательно (хотя можно этот модуль не устанавливать вообще, потому как локальные ключи HASP все равно не будут работать с Wine).
Но поскольку у нас в архиве лежат все три модуля, установим их все сразу одним скриптом. Итак, заходим на сайт техподдержки Aladdin:
http://www.aladdin.com/support/hasp/enduser.aspx#lmи скачиваем последнюю версию драйверов и других необходимых утилит для своего дистрибутива. Вот прямая ссылка на последнюю версию архива (на момент написания статьи):
ftp://ftp.aladdin.com/pub/hasp/srm/Linux/HASP_SRM_LINUX_3.50_Run-time_Installer_script.tar.gzСамые свежие версии драйверов HASP всегда можно найти здесь:
ftp://ftp.aladdin.com/pub/hasp/srm/Linux/Важное замечание: к сожалению в отличии от других систем Linux система Ubuntu не может автоматически монтировать ключ HASP через udev (как например RedHat и SuSE). Это нужно сделать вручную. Если вы планируете только попробовать ключ в действии, то достаточно выполнить команду
mount -t usbfs none /proc/bus/usb
Если же ключ будет постоянно вставлен в USB-порт компьютера или сервера, то имеет смысл прописать монтирование ключа в файл /etc/fstab:
none /proc/bus/usb usbfs defaults 0 0
Распакуем архив в домашний каталог, затем откроем консоль и войдем в папку с распакованным архивом. Находясь в этой папке, под профилем root выполним установку:
./dinst .
(обратите внимание, что в команде в самом конце присутствует точка!)
Примечание: для удаления драйверов системы служит скрипт dunst
Теперь для просмотра параметров ключей, конфигурирования менеджера лицензий и т.д. можно воспользоваться утилитой управления через веб-интерфейс, открыв браузер и набрав адрес
http://localhost:1947Если вы перейдете по вкладке HASP HL, вы увидите информацию о своем ключе. Если же в окне ничего не будет, значит ключ не смонтировался либо у вас ключ более старой модели, в этом случае удалите драйверы и установите более старый версии, как описано в ч.2 (перед удалением рекомендую сохранить скрипт /etc/init.d/aksusbd и использовать его для запуска драйверов).
ЧАСТЬ 2. Установка драйверов USB- и LPT-ключей HASP4.
Процесс установки для этого типа ключей будет несколько иным. Поскольку эти ключи сняты с производства и драйвера для них давно не обновлялись, нам потребуется устанавливать компоненты AksUSBD, HASPLM и WineHASP более старых версий, но предварительно нужно будет установить ещё один компонент: AksParLNX (если у вас ключ для последовательного порта LPT).
Сначала скачиваем архив с исходниками модуля AksParLNX:
ftp://ftp.ealaddin.com/pub/aladdin.de/hardlock/linux/v1.7/i386/aksparlnx-1.7-i386.tar.gzУстанавливаем модуль:
1) распаковать архив aksparlnx-1.7-i386.tar.gz;
2) войти в распакованную папку и дать команду:
sudo ./build.sh --install
3) если в процессе установки появилась ошибка, что вместо CFLAGS нужно использовать EXTRA_CFLAGS, то редактируем файл Makefile:
а) в строках 22 — 26 удалить запись $(LINUX_DEFINE);
б) закомментировать строки 17 и 19;
в) в строках 18 и 28 вместо записи CFLAGS прописать OUR_CFLAGS;
г) самое важное: в строке 39 вместо текущего пути исходников ядра нужно прописать истинный путь; строка будет выглядеть так: KERNSRC ?= /lib/modules/$(shell uname -r)/build
После этого дать команду make clean и повторить sudo ./build.sh --install
Драйвер должен установиться в каталог /lib/modules//misc
Примечание: данные исправления были подсмотрены в файле Makefile, который находится в пакете haspd-modules-2.0, собранным в ООО "Этерсофт".
4) Далее даём команды:
генерируем устройство:
mknod /dev/Hardlock c 42 0
присваиваем ему необходимые права:
chmod 666 /dev/Hardlock
запускаем:
modprobe aksparlnx
Если драйвер загрузился нормально, должно появиться сообщение, например:
Feb 2 12:16:01 panther kernel: aksparlnx: EYE/HASP driver v1.01/API v3.77/major 42 loaded (ppi)
Если вы хотите ограничить доступ к использованию ключа, то вместо команды chmod создайте группу Aladdin и присвойте нужные права:
chgrp aladdin /dev/Hardlock
chmod 660 /dev/Hardlock
5) скачиваем остальные архивы:
Примечание: драйвер AksUSBD, представленный по ссылке выше, имеют версию 1.8, самая последняя версия драйвера — 1.10 — была выпущена только под системы RedHat и SuSE, но его также можно использовать и в системе Ubuntu, для этого скачиваем архив для системы RedHat:
ftp://ftp.aladdin.com/pub/hasp/hl/linux/HDD_RPM_RedHat_i386.tar.gzРаспаковываем архив в домашний каталог, а затем RPM-пакет также распаковываем как архив; дальнейшие указания к действию см. ниже;
6) распаковать скачанные архивы в домашний каталог
7) из этих архивов скопировать файлы aksusbd, hasplm и winehasp в каталог /usr/sbin
8) для каждого из этих файлов установить права: владелец – root с правами r-w-x, группа – root с правами r-x, для остальных права r-x; сделать это можно в mc через меню «Файл → Расширенные права» либо из командной строки;
9) скопировать aksusbd.debian в папку /etc/init.d/, переименовать его в aksusbd и сделать исполняемым (владелец – root с правами r-w-x, группа – root с правами r-w-x, для остальных права r-x);
10) теперь в этой же папке необходимо создать два файла: hasplm и winehasp, и сделать их исполняемыми; содержание этих файлов будет абсолютно таким же, что и aksusbd, только во всех строках параметр aksusbd нужно заменить на hasplm и winehasp соответственно.
11) создать симлинки с именами @S90aksusbd, @S90hasplm и @S90winehasp в каталогах /etc/rc2.d/, /etc/rc3.d/, /etc/rc4.d/ и /etc/rc5.d/
12) запустить драйвера по очереди:
/etc/init.d/aksusbd start
/etc/init.d/hasplm start
/etc/init.d/winehasp start
После успешного запуска AksUSBD в логе событий /var/log/messages должно появиться сообщение, например:
Feb 2 12:42:43 panther aksusbd:[21772]: loaded, daemon version: 1.00, key API (USB) version: 3.77, key API (parallel) version: 3.77
Куда сливаются логи событий, можно посмотреть в файле /etc/syslog.conf
Если AksUSBD после старта не получил доступ к LPT-ключу, сообщение будет таким:
Feb 2 12:46:11 panther aksusbd:[21789]: loaded, daemon version: 1.00, key API (USB) version: 3.77 (parallel driver not available)
Дополнения:
1) AskParLNX:
а) можно изменить уровень записи логов командой
insmod aksparlnx.o loglevel=2
всего существует 4 уровня: 0 – записываются только ошибки; 1 – нормальный (по умолчанию); 2 – подробный; 3 – очень подробный;
б) по умолчанию драйвер использует главное число 42; это число можно изменить на другое, например, 123:
insmod aksparlnx.o major=123
Также эти изменения необходимо отразить в драйвере:
mknod /dev/Hardlock c 123 0
в) если параллельный порт LPT не был обнаружен системой, его можно указать вручную:
insmod aksparlnx.o hlportaddress=0x278
только делать это надо аккуратно; если порт будет указан неправильно, система может рухнуть
г) можно задать время ожидания перед доступом драйвера к параллельному порту (значение по умолчанию 100 равно 1 секунде):
insmod aksparlnx.o timeout=500
Если по истечении этого времени (в данном примере это 5 секунд) доступ драйвера к порту предоставлен не будет, запрос будет прерван, а системе будет возвращена ошибка PORT_BUSY
2) AksUSBD:
а) как и AskParLNX, демон AksUSBD может вести логи событий; уровень записи логов можно изменить командой
aksusbd -l 2
(уровень детализации – 2; всего уровней – от 0 до 3);
б) приложения могут обращаться к демону через сокет /tmp/.aksusb, который по умолчанию имеет права доступа 666; можно заставить демон использовать и другие права, например 660:
aksusbd -u 660
3) HASPLM:
а) для настройки HASPLM необходимо создать файл nhsrv.ini (или дернуть его из windows из папки с установленным менеджером лицензий), скопировать его в каталог, например, /etc/hasplm, и присвоить необходимые права. Затем нужно указать менеджеру лицензий путь к файлу конфигурации:
hasplm -c /etc/hasplm/nhsrv.ini
Вот исходный текст этого файла, который потом надо править под свои потребности. Стоит сразу заметить, что при указании порта нужно использовать только протокол UDP, по протоколу TCP ключ работать не будет. После настройки проверяем, какой порт занимает менеджер лицензий (должен быть 475):
netstat -ap | grep hasplm
;*******************************************************************************
;*
;* NetHASP License Manager configuration file.
;*
;* requires HASP LM version 8.20 or newer
;*
;* boolean switches may have the values
;* 1, yes, true, enabled
;* 0, no, false, disabled
;*
;*******************************************************************************
; ------------------------------------------------------------------------------
; global LM settings
; ------------------------------------------------------------------------------
[NHS_SERVER]
NHS_USERLIST = 1000 ; maximum number of concurrent logins
; to this LM (default=1000, max = 65520)
NHS_SERVERNAMES = sausage, cad, ; server names to match the name a client
LM017, ; requests (max 6 names, max 7 chars/name)
oefibla
NHS_HIGHPRIORITY = no ; run LM at high priority (default=no)
; ------------------------------------------------------------------------------
; settings for the IP protocol
; ------------------------------------------------------------------------------
[NHS_IP]
NHS_USE_UDP = enabled ; enabled or disabled (default: enabled)
NHS_USE_TCP = enabled ; enabled or disabled (default: enabled)
NHS_IP_portnum = 475 ; IP port number (default: 475 (IANA registered))
; CAUTION: clients must use the same port!
;NHS_IP_LIMIT = 10.24.2.18-99, 10.1.1.9/16, 10.25.0.0/24,
; 192.0.0.*, 194.0.*.*, 11.*.*.*,
; 10.24.7.8-12 /30, 10.24.2.17
; specifies the range of station the LM serves
; the LAST byte may be a range (e.g., 10-120)
; the 4th, the 4th and 3rd, or the 4th and 3rd and 2nd byte may be an asterisk,
; acting as wildcard (e.g., 10.*.*.*, but NOT 10.*.20.1)
; an additional bitmask can be specified as number of one-bits (e.g., 10.0.0.0/8)
; ------------------------------------------------------------------------------
; settings for the IPX protocol
; ------------------------------------------------------------------------------
[NHS_IPX]
NHS_USE_IPX = yes ; enabled or disabled (default: enabled)
;NHS_addrpath = c:\temp ; pathname for haspaddr.dat (default: current dir)
NHS_AppendAddr = no ; append to haspaddr.dat (default: no=replace)
NHS_usesap = enabled ; enabled or disabled (default: enabled)
NHS_ipx_socketnum = 0x7483 ; IPX socket number (default: 0x7483)
; CAUTION: clients must use the same number!
; ------------------------------------------------------------------------------
; settings for the NetBios protocol
; ------------------------------------------------------------------------------
[NHS_NETBIOS]
NHS_USE_NETBIOS = enabled ; enabled or disabled (default: enabled)
;NHS_NBNAME = MyNBName ; use another than predefined NetBios name
; CAUTION: clients must use the same name !
;NHS_use_lana_nums = 3,0,7,2 ; default = all (automatic)
; ------------------------------------------------------------------------------
; end of file
; ------------------------------------------------------------------------------
4) WineHASP:
а) в каталоге /linux найдите файл setwinehaspport.exe и скопируйте его в каталог с эмулятором Wine; файл должен находиться в папке по адресу c:\windows\system32\
По умолчанию winehasp работает с Wine через порт 2790, если этот порт уже занят, вы можете назначить другой порт (например, 1234), для этого нужно запустить winehasp, указав номер нужного порта:
winehasp -p 1234
После этого также необходимо изменить номер порта в самом Wine:
wine setwinehaspport.exe 1234
ЧАСТЬ 3. Установка клиентской части 1С.
1С версии 7.7 лучше устанавливать пропатченную (патчи от soaron'а, Херурга и т.д.; их можно найти в интернете). К сожалению вопрос о легальности такого патча (даже официально купленной программы 1С) остается пока что открытым, поэтому патч вы будете использовать на свой страх и риск. С версией 8.1 будет сложнее: к ней существуют только HASP-эмуляторы, которые в программе Wine не работают, так что для запуска программы придется использовать оригинальный сетевой ключ (увы, 1С-ка с локальными ключами в бесплатной версии Wine не работает).
Примечание: чтобы не мучиться в поисках нужных файлов для Wine, всё можно установить в автоматическом режиме, для этого нужно скачать программу winetricks:
wget http://www.kegel.com/wine/winetricks
chmod 755 winetricks
sudo mv winetricks /usr/bin
Затем запускаем программу из консоли одноименной командой и выставляем галочки напротив нужных компонентов. Не исключено, что для установки некоторых компонентов нужно будет доустановить некоторые пакеты из репозиториев. Например, в процессе установки IE6 программа ругнулась, что не может распаковать CAB-архив, пришлось установить пакет cabextract и запустить весь процесс заново.
Иногда возникает необходимость выгружать документы в MS Word или MS Excel. Для этого можно использовать Open Office. В самом простейшем случае нужно скачать два скрипта:
http://rvcgnivc.ru/download/idw/other/linux/oofficehttp://rvcgnivc.ru/download/idw/other/linux/ooffice.reg
Первый файл нужно положить в папку с Wine: c:\windows\command
Второй файл нужно импортировать в реестр через wine regedit. Этот прием позволит открывать файлы *.doc и *.rtf прямо из запущенной программы. Чтобы также открывались файлы *.xls, я в файл ooffice.reg добавил ещё строчки:
[HKEY_LOCAL_MACHINE\Software\Classes\.xls]
@="file.office"
Как вы уже поняли, этим способом можно открывать другие файлы формата MS Office, нужно всего лишь добавить необходимые ключи в файл ooffice.reg, а затем импортировать его в реестр. Единственный недостаток этого способа: стили форматирования документов при импорте в OpenOffice не сохраняются.
Данный прием был подсмотрен в инструкции по установке программы "Налогоплательщик ЮЛ".
Ну а если этот способ не устраивает, то можно поступить следующим образом: установить windows-версию OpenOffice под Wine, а затем прикрутить одну из следующих программ:
2) Unioffice@Etersoft: http://wiki.etersoft.ru/UniOffice
3) TOpenOffice: http://triteh.ru/libooo/
Чтобы формы особо не "расползались", необходимо установить некоторые windows-шрифты. Сделать это можно либо при помощи того же winetricks, установив галочку напротив corefonts и tahoma (для верности можно и allfonts), либо выдернуть эти шрифты из оригинальной windows (папка c:\windows\fonts\) и поместить в такую же папку в Wine.
Установка 1С 7.7
Источники:
http://gloomka.livejournal.com/35655.html#cutid1http://www.openkazan.info/node/126
http://forum.ctline.ru/lofiversion/index.php/t2189.html
Я думаю, что перед установкой этой программы вы уже установили и настроили систему Linux и бесплатный эмулятор Wine последней версии, поэтому эти шаги пропустим. Стоит лишь отметить, что существует версия Wine@Etersoft Public, которая является бесплатной и работает лучше оригинального Wine. Взять бесплатную версию Wine@Etersoft можно отсюда:
ftp://ftp.etersoft.ru/pub/Etersoft/Wine-publicЗатем выбираете нужную вам версию, ваш дистрибутив, скачиваете и устанавливаете все пакеты, которые будут в папке.
Итак, вернемся к установке платформы.
Установите 1С 7.7 обычным способом (как вы это делаете в Windows), в конце откажитесь от предложения установить конфигурацию. После установки не забудьте пропатчить соответствующий файл (если у вас ещё ничего не пропатчено). Патчи нормально запускаются и работают в среде Wine. После патча установите нужную конфигурацию (или скопируйте базы в нужное место). А вот теперь начинаем настраивать Wine на запуск 1С. Для начала нам нужно выдернуть 4 файла из Windows95 или Windows98: ole32.dll, olepro32.dll, oleaut32.dll, rpcrt4.dll (c другими версиями этих файлов 1С 7.7 работать не будет). Лучше всего конечно же использовать библиотеки DCOM98, но если вас очень сильно волнует вопрос с лицензионной "чистотой", используйте DCOM95.
Небольшое замечание: практика показала, что если заменить файл rpcrt4.dll, то другие windows-программы при установке и запуске могут "ругаться" на неправильную библиотеку rpcrt4, поэтому сначала попробуйте настроить 1С 7.7 без этой библиотеки, и только в том случае, если будет работать некорректно или не работать вовсе, скопируйте и пропишите библиотеку rpcrt4.dll.
Получить файлы нужных версий можно несколькими способами:
а) с сайта http://www.dll-files.com/
б) из самой системы Win95/98 (если у кого она ещё жива);
в) из архива DCOM95.EXE или DCOM98.EXE и т.д.
Если вы выбрали третий способ, то нужно сделать следующие шаги:
1) качаем DCOM95/DCOM98 (с официального сайта мелкософта можно скачать DCOM95 только пересобранную версию от 2001 г. - DC95Inst.EXE, если вам нужна оригинальная DCOM95.EXE, попробуйте поискать ее в интернете на других сайтах):
http://download.microsoft.com/download/platformsdk/Redist/4.71.1015.0/W95/EN-US/DC95Inst.EXEhttp://download.microsoft.com/download/d/1/3/d13cd456-f0cf-4fb2-a17f-20afc79f8a51/DCOM98.EXE
2) копируем скачанный файл в ~/.wine/drive_c/
3) распакуем его в папку c:\temp: wine c:\\DCOM95.EXE /C /T:c:\\temp /Q (если у вас DCOM98, то соответственно вместо DCOM95 надо прописать DCOM98)
4) из распакованного архива нужно скопировать файлы ole32.dll, olepro32.dll, rpcrt4.dll, oleaut32.dll и поместить их в наш Wine в папку c:\windows\system32\; при копировании система спросит о замене существующих файлов; для всех файлов нажимаем Заменить;
Для запуска программы могут также потребоваться библиотеки mfc42.dll, msvcrt.dll и/или msvcrt40.dll, которые нужно взять из WindowsXP и скопировать в ту же папку.
Теперь настраиваем сам Wine на работу с 1С 7.7. Запускаем конфигуратор Wine (команда winecfg) и выполняем следующие действия:
1) во вкладке «Приложения» нажать «Добавить приложение» и добавить в список файл 1cv7.exe (исполняемый файл, который запускает приложение; в зависимости от версии установленной программы этот файл может называться 1cv7l.exe (локальная версия), 1cv7.exe (сетевая версия) или 1cv7s.exe (SQL-версия)); затем в этой вкладке выделить добавленный файл, перейти во вкладку «Библиотеки» и добавить следующие библиотеки и настройки к ним:
ole32 — «сторонняя»;
oleaut32 — «сторонняя»;
olepro32 — «сторонняя»;
rpcrt4 — «сторонняя, встроенная»;
можно также прописать библиотеки msvcrt, msvcrt40 и mfc42 (параметры для всех – «сторонняя, встроенная»), но делать это надо аккуратно и только в том случае, если что-то не заработает (логи ошибок можно будет посмотреть, запустив 1С из командной строки);
2) теперь открываем вкладку «Графика» и снимаем галочку с параметра «Разрешить менеджеру окон управлять окнами Wine»;
если этого не сделать, то при старте программы в случае управления окнами оконным менеджером окно авторизации может оказаться под заставкой и программа может зависнуть на строчке «Загрузка конфигурационной информации...»;
с другой стороны, если при запуске программа не требует ввода логина/пароля, а бухгалтер знает, что в случае подобных «зависаний» надо нажимать клавишу Enter, то галочку лучше оставить для большего удобства работы.
3) запускаем 1С; в первый раз желательно это сделать из командной строки, сразу увидим все ошибки:
wine "c:\Program Files\1cv77\Bin\1cv7s.exe"
при первом запуске программа ругнётся сообщением «Порядок сортировки, установленный для базы данных, отличается от системного!»; нажимаем на ОК и открываем конфигуратор текущей базы; в меню «Окна» — «Панель окон» снимаем галочку с параметра «Показать» (из-за этой панели приложение будет постоянно вылетать);
далее в меню «Администрирование» выбираем пункт «Кодовая страница таблиц ИБ» и устанавливаем «+Текущая системная установка» и нажимаем OK;
ВНИМАНИЕ! Если доступ к базам будет осуществляться не только из-под Линукса, но и из-под windows, то менять кодовую страницу нежелательно, так как базы могут стать недоступными для windows-клиентов; решение: в каталоге, куда установлена 1С (как правило это c:\Program Files\1cv77\bin), создать пустой файл с именем OrdNoChk.prm, и 1С при старте не будет проверять кодовые страницы; данный трюк работает только в версии 1С 7.7.026 и выше; в версиях 7.7.025 и более ранних этот трюк не срабатывает;
4) снова запускаем 1С и быстренько в меню «Окна» — «Панель окон» снимаем галочку с параметра «Показать»; этот пункт нужно обязательно повторить для каждой базы;
если 1С вылетает быстрее, чем вы можете отключить этот параметр, то запускаем в командной строке wine regedit и ищем ветку [HKEY_USERS/S-1-5-4/Software/1C/1Cv7/7.7/<имя базы>/V7/Default/Taskbar/], создаем в ней ключ «Строковое значение» (string), задаем имя Show и прописываем значение — 0.
5) чтобы в цифровой клавиатуре вместо запятой ставилась точка, нужно в автостарт при входе пользователя прописать дополнительную команду; открываем Система → Параметры → Сеансы → во вкладке «Автоматически запускаемые программы» нажимаем «Добавить» в строке «Имя» вводим любое имя команды (например «Точка вместо запятой»), а в строке «Команда» прописываем
xmodmap -e "keycode 91 = KP_Delete KP_Decimal KP_Delete KP_Decimal"
Дополнения:
а) если при запуске в меню вместо русских букв знаки вопросов, то запускаем wine regedit и редактируем ветку [HKEY_CURRENT_USER/Sofware/Wine/Fonts/]: в ключе Codepages меняем параметр 1251,437 на 1251,866
б) также следует обратить внимание на права доступа, выставленные для рабочих папок; для того, чтобы другие пользователи имели доступ к базе 1С, нужно правильно присвоить ей права: права на все папки — 2770, права на все файлы — 0660 (для всех папок и файлов владелец — пользователь или root, группа — wine); затем необходимо завести дополнительных пользователей и внести их в группу wine (в коммерческом Wine это быстро можно сделать при помощи скрипта setwineshare, в бесплатном все придется делать ручками);
Если клиенты будут подцепляться базам по сети, то для автоматического монтирования баз достаточно в /etc/fstab прописать следующую строку:
/// // cifs username=/,password=,rw,iocharset=utf8,noperm,forcemand,direct 0 0
Для систем windows необходимо будет создать скрипт <имя>.bat и поместить его в автозагрузку в профиле каждого пользователя; содержание файла будет таково:
net use z: \\\ /user:\ ""
Также необходимо правильно настроить блокировки в сервере Samba, чтобы документ, открытый одним пользователем, не был бы доступен другому; пример конфигурации см. в Приложении;
в) для того, чтобы подключить базы 1С, расположенные на сервере Windows, нужно создать папку в любом месте (можно в домашнем каталоге), присвоить ей необходимые права доступа (можно 777), обязательно проконтролировать, чтобы эта папка была в области видимости программы Wine, затем примонтировать расшаренную папку с базами (желательно по протоколу CIFS) в нашу созданную папку:
mount.cifs // / -o
Про все возможные варианты параметров вы можете прочитать в файле помощи mount.cifs --help или man mount.cifs
Если папка с базами расположена на сервере Windows и имеет в своем имени русские буквы, то в дополнительных параметрах полезно будет указать codepage=cp866,iocharset=utf8
г) в процессе эксплуатации системы вскрылся ещё один мелкий, но не приятный момент: некоторые меню не открываются и не выбираются нажатием клавиши Enter, только по двойному щелчку мыши; это создает определенные неудобства бухгалтеру в процессе работы с программой 1C;
проблема решается очень просто: для открытия таких меню нужно использовать не клавишу Enter, а сочетание клавиш Shift+Enter, а чтобы сделать выбор документа — Ctrl+Enter; переключение курсора по ячейкам таблиц документа — клавишей Tab.
Замеченные неустраненные проблемы:
а) к сожалению с бесплатной версией Wine 1С 7.7 работает только в локальном режиме (по принципу "1 пользователь = 1 база"); в многопользовательском режиме 1С 7.7 не работает; если вам необходим многопользовательский режим, обратитесь к коммерческой версии Wine@Etersoft Network или SQL;
б) с локальными ключами HASP 1C также не работает; если вы не желаете использовать "ломаную" версию 1С 7.7, то вы можете приобрести коммерческий эмулятор Wine@Etersoft, в котором такой проблемы не будет.
Установка 1С 8.1
ВНИМАНИЕ! 1С 8.1 не работает под эмулятором Wine с локальными ключами HASP. Если вам необходимо использовать 1С 8.1 только с локальными ключами, есть два варианта:
а) пересобрать Wine из исходников с наложением патча, который позволяет эмулятору напрямую работать с портом USB и "родными" драйверами от windows; этот патч не вошел в официальную ветку Wine;
более подробно можно прочитать здесь: http://wiki.jswindle.com/index.php/Drivers
взять патч можно отсюда: http://wiki.winehq.org/USB
б) если неохота мучиться, то можно использовать коммерческую версию эмулятора Wine@Etersoft Local, которая стоит всего лишь 472 рубля ( http://sales.etersoft.ru/price ).
С сетевыми ключами такой проблемы нет, и если настройки сети, менеджера лицензий и самой 1С 8.1 выполнены корректно, программа запускается и работает нормально. Стоит заметить, что с 1С 8.1 как в коммерческом, так и в бесплатном Wine таких глобальных заморочек, как с версией 7.7, не будет (хотя в более старых версиях Wine не работал конфигуратор).
Для стабильности работы 1С 8.1 желательно установить оригинальный IE6. Я это сделал при помощи утилиты winetricks (подключение к интернету обязательно). После установки для проверки нужно запустить IE6:
wine "c:\Program Files\Internet Explorer\iexplore.exe"
Я не стал мучиться с установкой IE6 вручную, потому что winetricks все сделал лучше и быстрее меня (во время установки помимо самого IE6 устанавливается InstMsiA.exe и скачивается файл ie6sites.dat); кому интересно, тот сможет сделать это сам по этим описаниям:
http://forum.micmedia.ru/archive/index.php?t-8325.htmlhttp://appdb.winehq.org/objectManager.php?sClass=version&iId=469
http://www.opennet.ru/tips/info/1653.shtml
Если кто-то сомневается в лицензионности данного метода, тот может использовать вместо IE6 программу FakeIE6 (как ее установить, можно прочитать здесь: http://www.kubuntu.ru/node/1915 ) или его замену — Wine Gecko, но в этом случае стабильность работы будет гораздо хуже. Есть ещё одна особенность: 1С 8.1 практически не работает со связкой Wine v.1.1.12 (и выше) + Gecko v.0.9.0. В надстройке Gecko этой версии отображение HTML-страниц реализовано с ошибками, а Wine v.1.1.12 не работает с предыдущей версией Gecko 0.1.0. Поэтому рекомендуется установить Wine v.1.1.10 или более раннюю, либо стабильную версию Wine 1.0 или 1.0.1 из репозиториев Ubuntu. Затем после установки запустите в консоли wine regedit и найдите ветку: [HKEY_CURRENT_USER\Software\Wine\MSHTML\], откройте ключ GeckoUrl и в значении ключа подставьте любую ссылку на файл wine_gecko-0.1.0.cab, например, такую:
http://superb-east.dl.sourceforge.net/sourceforge/wine/wine_gecko-0.1.0.cab илиftp://de-mirror.org/distro/gentoo/distfiles/wine_gecko-0.1.0.cab
Затем в консоли запустите:
wine "c:\Program Files\Internet Explorer\iexplore.exe"
и в окне с предложением установиь Wine Gecko нажмите "Установить".
Можно также установить Gecko локально, для этого скачать архив wine_gecko-0.1.0.cab, скопировать его в любую папку Wine, например, c:\windows\temp, а в ключе GeckoUrl вместо веб-ссылки прописать локальный путь к архиву: c:\windows\temp\wine_gecko-0.1.0.cab
Затем запускаем iexplore.exe и нажимаем "Установить".
Если все сделано правильно, то можно приступать к установке 1С 8.1. Устанавливаем 1С 8.1 стандартным образом, но когда программа предложит установить HASP-драйвер, просто снимаем с этого пункта галочку и продолжаем установку.
Затем устанавливаем конфигурацию или подключаем базы, и запускаем программу.
Дополнения:
1) если программа не запускается или работает некорректно (например, после запуска сразу закрывается), попробуйте запустить ее в командной строке:
wine "c:\Program Files\1Cv81\BIN\1cv8.exe"
Таким образом вы сможете отследить ошибки, которые возникают в процессе работы, а затем их исправить. Очень часто бывает, что программе не хватает какой-либо библиотеки, которую нужно добавить в папку c:\windows\system32\ эмулятора Wine;
2) для использования 1С 8.1 в многопользовательском режиме желательно установить определенные права на базы и файлы (как и для 1С 7.7, см. выше), но если лень возиться, то можно предоставить всем полный доступ:
chmod 777 -R -c /<путь>/<до>/<базы>
Если в этом случае не будут правильно работать блокировки, то тогда лучше повозиться и настроить сервер Samba также, как и для 1С 7.7;
3) для того, чтобы программа 1С 8.1 работала с сетевым ключом, необходимо отредактировать файл nethasp.ini, который можно найти в папке c:\Program Files\1cv81\bin\conf\. В этом файле нужно указать адрес компьютера, к которому подключен сетевой ключ, порт, протокол, а также другие необходимые параметры:
[NH_COMMON]
NH_TCPIP = Enabled ; Используем только IP-протокол
[NH_TCPIP]
NH_SERVER_ADDR = 192.168.1.1 ; IP-адрес машины с ключом
NH_TCPIP_METHOD = UDP ; Использование протокола UDP или TCP
NH_USE_BROADCAST = Disabled ; Отключить поиск ключа по всей сети
В свою очередь чтобы сетевой ключ работал, нужно настроить программу «Менеджер лицензий» (для Windows) или HASPLM (для Linux и MacOS). Как это сделать, описано выше.
ЗАКЛЮЧЕНИЕ
Какую версию Wine лучше всего использовать: бесплатную или коммерческую, решать Вам. Вы также можете попробовать настроить 1С в коммерческом аналоге Wine американских разработчиков — CrossOver. Вот подробная инструкция, как настроить 1С 7.7 в системе CrossOver:
http://www.arlc.ru/CrossOverRus+1Cv77.pdfИнструкция написана для системы MacOS X, но ее также можно применить и в версии для Linux. Стоимость программы CrossOver: 39$ версия Standart и 69$ версия Pro.
Если вам по какой-либо причине не понравится, как работает 1С в бесплатном Wine, либо вы считаете, что описанные методы нарушают права Microsoft, то я рекомендую приобрести коммерческий эмулятор Wine от компании Etersoft. Эта версия решит все ваши проблемы, в том числе и с лицензией на Windows. Более того: вы будете обеспечены техподдержкой и обновлениями, в которых исправляются различные мелкие баги. А если вам что-то не понравится в работе коммерческого эмулятора, вы всегда можете высказать все свои претензии фирме-разработчику, которые будут учтены в последующих обновлениях или новых версиях.
Более подробную информацию вы сможете получить на сайте: http://etersoft.ru/
ПРИЛОЖЕНИЕ
Конфигурация сервера Samba для размещения на нем баз 1С 7.7
Данная конфигурация была взята сайта http://hidx.wordpress.com/2009/03/26/1c-samba-my/#more-439 Она была применена автором на сервере FreeBSD.
Может быть кому-то этот материал будет полезен.
[global]
workgroup = ADS
security = DOMAIN
password server = ADS.LOCAL
realm = ADS.LOCAL
netbios name = EPO
server string = EPO multi server
# log level = 10log file = /var/log/samba/%m.%U.log
max log size = 50000
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes
winbind enum users = Yes
winbind enum groups = Yes
display charset = koi8-r
unix charset = koi8-r
dos charset = 866
# for mail
# template homedir = /shares/mail/%U
#FOR 1C
os level = 255
wins support = yes
#Блокировки на сервере. Важно для 1с
locking = yes
kernel oplocks = yes
# level2 oplocks = no
# oplocks = yes
strict locking = Auto
share modes = yes
# ole locking compatibility = yes
client ntlmv2 auth = yes
hostname lookups = Yes
# socket options = IPTOS_LOWDELAY TCP_NODELAY
interfaces = lo0, em0
bind interfaces only = yes
[Base]
comment = Папка для баз 1с
path = /base/base
# список тех, кому разрешён доступ на чтение
read list = “@ADS\Пользователи домена”
# список тех, кому разрешён доступ на запись
write list = “@ADS\Пользователи домена”
admin users = “@ADS\Администраторы домена”, ADS\epo
read only = No
# маска для создаваемых файлов
create mask = 0660
# маска для создаваемых директорий
directory mask = 0770
# наследовать владельца (вышестоящей директории)
inherit owner = yes
# наследовать ACL
inherit acls = yes
# наследовать права
inherit permissions = yes
# позвоялет редактору прав из винды корректно обрабатывать права
map acl inherit = yes
locking = yes
map archive = Yes
не за что :)
ОтветитьУдалитьЗдравствуйте, данный метод работает в многопользовательском режиме если в 1с будут заходить одновременно с Linux и Windows?
ОтветитьУдалитьПривет всем, как правильно патчить 1С под ubuntu 13.10 (х32), с помощью 1c8_uni2patch_lin, тоести все по порядку, а то попробовал пару методов и не получилось,спасибо заранее!(1C 8.3.4.365)
ОтветитьУдалитьУ меня тоже не получилось пропатчить с помощью 1c8_uni2patch_lin. Получилось с помощью 1c8_uni2patch_win.exe.
Удалить- Виртуальная машина: VMWare Player v.6.0.1 + Tools for Linux 9.6.1.1379776
- ОС (хост): Windows 7 Pro (x64)
- ОС (гостевая): Ubuntu 13.10 (x86)
- Платформа 1С: 8.3.4.365 (x86)
- Патч из ScrewDrivers_All: версия для Windows - 1c8_uni2patch_win.exe
Платформу устанавливал по инструкции в этом посте (платформа -> HASP -> шрифты). Затем из директории /opt/1C/v8.3/i386 скопировал на флешку файл backbas.so. Отключил флешку, перешёл в ОС (хост) Windows, подключил флешку. В Windows создал директорию на диске C (C:\TEMP), скопировал туда файлы 1c8_uni2patch_win.exe и backbas.so. Запустил cmd.exe, перешёл в директорию TEMP (cd C:\TEMP), ввёл команду (1c8_uni2patch_win.exe backbas.so). В ответ получил сообщение: Well done! Success!!! В директории C:\TEMP теперь есть пропатченный файл (backbas.so) и резервная копия оригинального файла (backbas.so.bak). Скопировал (заменил) файл backbas.so на флешку. Отключил флешку, перешел в гостевую ОС Ubuntu, скопировал файл в директорию: Домашняя папка/Temp, запустил Terminal, ввёл команду: sudo cp ~/Temp/backbas.so /opt/1C/v8.3/i386 Перезагрузился... Теперь 1С отучена от ключа... Пользуйся, на здаровье!
Привет всем, как правильно патчить 1С под ubuntu 13.10 (х32), с помощью 1c8_uni2patch_lin, тоести все по порядку, а то попробовал пару методов и не получилось,спасибо заранее!(1C 8.3.4.365)
ОтветитьУдалить