06.10.2010

Установка и настройка 1С

Все уже знают, что основной причиной, по которой многие организации не хотят переходить на 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/ooffice
http://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, а затем импортировать его в реестр. Единственный недостаток этого способа: стили форматирования документов при импорте в Open­Office не сохраняются.
Данный прием был подсмотрен в инструкции по установке программы "Налогоплательщик ЮЛ".
Ну а если этот способ не устраивает, то можно поступить следующим образом: установить win­dows-версию 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#cutid1
http://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.EXE
http://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.html
http://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 из репозиториев Ubun­tu. Затем после установки запустите в консоли 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
nt acl support = Yes


Источник

5 комментариев:

  1. Здравствуйте, данный метод работает в многопользовательском режиме если в 1с будут заходить одновременно с Linux и Windows?

    ОтветитьУдалить
  2. Привет всем, как правильно патчить 1С под ubuntu 13.10 (х32), с помощью 1c8_uni2patch_lin, тоести все по порядку, а то попробовал пару методов и не получилось,спасибо заранее!(1C 8.3.4.365)

    ОтветитьУдалить
    Ответы
    1. Анонимный07 января, 2014 23:07

      У меня тоже не получилось пропатчить с помощью 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С отучена от ключа... Пользуйся, на здаровье!

      Удалить
  3. Привет всем, как правильно патчить 1С под ubuntu 13.10 (х32), с помощью 1c8_uni2patch_lin, тоести все по порядку, а то попробовал пару методов и не получилось,спасибо заранее!(1C 8.3.4.365)

    ОтветитьУдалить