КваКвартет: «САМО», «1C», wine и Etersoftртет: «САМО», «1C», wine и Etersoft::Журнал СА 1.2009
www.samag.ru
     
Поиск   
              
 www.samag.ru    Web  0 товаров , сумма 0 руб.
E-mail
Пароль  
 Запомнить меня
Регистрация | Забыли пароль?
О журнале
Журнал «БИТ»
Наука и технологии
Подписка
Где купить
Авторам
Рекламодателям
Магазин
Архив номеров
Вакансии
Контакты
   

  Опросы

Какие курсы вы бы выбрали для себя?  

Очные
Онлайновые
Платные
Бесплатные
Я и так все знаю

 Читать далее...

1001 и 1 книга  
20.12.2019г.
Просмотров: 1235
Комментарии: 0
Dr.Web: всё под контролем

 Читать далее...

04.12.2019г.
Просмотров: 1257
Комментарии: 0
Особенности сертификаций по этичному хакингу

 Читать далее...

28.05.2019г.
Просмотров: 3786
Комментарии: 2
Анализ вредоносных программ

 Читать далее...

28.05.2019г.
Просмотров: 4009
Комментарии: 1
Микросервисы и контейнеры Docker

 Читать далее...

28.05.2019г.
Просмотров: 3203
Комментарии: 0
Django 2 в примерах

 Читать далее...

Друзья сайта  

Форум системных администраторов  

sysadmins.ru

 Квартет: «САМО», «1C», wine и Etersoft

Архив номеров / 2009 / Выпуск №1 (74) / Квартет: «САМО», «1C», wine и Etersoft

Рубрика: Базы данных /  Изучаем «1С»

 СЕРГЕЙ БАРАНОВСКИЙ

Квартет: «САМО», «1C», wine и Etersoft

Если проблемы миграции «САМО-Тур» под Linux постепенно исчезают, то с запуском «1С:Предприятие 7.7» пришлось изрядно повозиться. Запуск программы – это половина проблемы, гораздо важнее организация гибко настраиваемого экспорта данных. В этом вопросе разработчики не шли и не идут навстречу пользователям, желающим применять Open Source ПО в связке с программами «1С». Нюансов настолько много, что даже специализированные решения от Etersoft не могут закрыть все пробелы.

На рынке туроператоров наша фирма уже больше года держит «флаг первенства» в переходе на ОС Linux. Несмотря на то что приятно быть первыми, другие компании не решаются на столь отважный шаг. Информация о переходе в других компаниях нашей отрасли мне не известна. Если частичный переход на Open Office осуществили десятки туристических фирм, в том числе и наши партнёры, то малая популярность использования ОС Linux состоит в том, что не все компании могут организовать её грамотную поддержку. Однако когда число компьютеров исчисляется сотнями, даже первичная оценка стоимости покупки различных лицензий и обновления железа отрезвляет.

В процессе перевода «рабочих мест» сотрудников под ОС Linux выяснилось, что для сотрудников нужны не только офис, браузер и почта, но и другие нестандартные приложения, такие как бухгалтерские программы, банк-клиенты, on-line-системы бронирования, системы учёта кадров и пр. Если вначале нам казалось, что камнем преткновения являлась программа «САМО-Тур» и компания «САМО-Софт» недружелюбно к нам относилась, то сейчас, в сравнении с «1С», можно сказать, что мы ошибались. Запустить «САМО-Тур» под Linux удалось [1, 2], а имеющиеся ошибки неспешно исправляются разработчиками, когда мы о них сообщаем. С «1С» возникло больше вопросов, чем ответов. Несколько лет мы не можем добиться помощи, а ответы их технической поддержки похожи на шутку: «Извините, у нас нет туалетной бумаги, зато есть наждачная».

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

«1С:Предприятие 7.7» под Linux

На форумах много информации о запуске «1С» под Linux, но мало информации о работе сетевой версии. Поэтому что-то будет неизбежным повторением ранее придуманных решений, а что-то окажется новым. Установка будет производиться в ОС Linux Fedora 8. Попутно будут небольшие замечания о работе «САМО-Тур», так как изначальной целью установки была работа двух этих приложений под ОС Linux.

Первым делом ставим wine, на сегодня последняя версия доступная через yum 1.1.9.

# yum install wine

В результате ставится 11 пакетов:

================================================================================

 Package             Арх.        Версия             Repository            Size

================================================================================

Installing:

 wine                i386        1.1.9-2.fc8        updates-newkey         23 k

Installing for dependencies:

 wine-capi           i386        1.1.9-2.fc8        updates-newkey         27 k

 wine-cms            i386        1.1.9-2.fc8        updates-newkey         42 k

 wine-core           i386        1.1.9-2.fc8        updates-newkey         11 M

 wine-desktop        i386        1.1.9-2.fc8        updates-newkey         26 k

 wine-esd            i386        1.1.9-2.fc8        updates-newkey         37 k

 wine-jack           i386        1.1.9-2.fc8        updates-newkey         39 k

 wine-ldap           i386        1.1.9-2.fc8        updates-newkey         91 k

 wine-nas            i386        1.1.9-2.fc8        updates-newkey         25 k

 wine-tools          i386        1.1.9-2.fc8        updates-newkey        626 k

 wine-twain          i386        1.1.9-2.fc8        updates-newkey         48 k

 

Transaction Summary

================================================================================

Install     11 Package(s)

 Программа «1С:Предприятие» успешно ставится без каких-либо проблем, но запускаться и работать не хочет. При запуске в консоли получаем следующие сообщения:

$ pwd

/home/labirint/.wine/drive_c/Program Files/1Cv77/BIN

$ wine ./1cv7s.exe

err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\1Cv77\\BIN\\Type32.dll") not found

err:module:import_dll Library Type32.dll (which is needed by L"C:\\Program Files\\1Cv77\\BIN\\Frame.dll") not found

err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\1Cv77\\BIN\\Frame.dll") not found

err:module:import_dll Library Frame.dll (which is needed by L"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe") not found

...

err:module:import_dll Library MFC42.DLL (which is needed by L"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe") not found

err:module:LdrInitializeThunk Main exe initialization for L"C:\\Program Files\\1Cv77\\BIN\\1cv7s.exe" failed, status c0000135

 

Из сообщений видно, что программе явно не хватает MFC42. Удобнее всего установить библиотеки и другие пакеты, воспользовавшись утилитой winetricks [3]. Для этого скачиваем программу и запускаем:

$ wget http://kegel.com/wine/winetricks

$ sh ./winetricks

Замечание: вполне возможно, вам понадобится установить cabextract, например, через команду:

yum install cabextrac t

Если не указать параметры, то в консоли появляются различные сообщения, а далее выскакивает графическое окошко, где следует выбрать пакеты для установки (см. рис. 1).

Рисунок 1. Выбор пакетов для установки с помощью winetricks

Рисунок 1. Выбор пакетов для установки с помощью winetricks

Выбираем dcom98 и vcrun6 и нажимаем кнопку «ОК». Далее выскочит окно с запросом на установку библиотек DCOM98, отвечаем «Да».

Замечание: несмотря на то что для установки DCOM98 не требуется подтверждение прочтения лицензии, ознакомиться с ней можно тут: http://www.microsoft.com/com/dcom/dcom98/eula.asp, откуда следует, что у вас должна быть лиценция на Windows98. При желании можно обойтись и без использования DCOM98, например с помощью Wine@Etersoft, подробнее читайте далее.

В процессе установки в консоли проскакивают различные сообщения:

$ sh ./winetricks

Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property

`GtkTreeView::odd-row-color' of type `GdkColor' from rc file value "((GString*) 0x9c594a0)"

of type `GString'

Setting Windows version to win98

Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/set-winver.reg

Executing wine /home/labirint/.winetrickscache/DCOM98.EXE

fixme:setupapi:SETUPX_CreateStandardLDDs LDID_SRCPATH: what exactly do we have to do here ?

fixme:setupapi:GenInstall16 unsupported flag: GENINSTALL_DO_REGSRCPATH

fixme:setupapi:vcpUICallbackProc16 (0x5a60, 0705, 0000, 00000000, 003452ac) – semi-stub

...

fixme:setupapi:GenInstall16 unsupported flag: GENINSTALL_DO_CFGAUTO

fixme:rpc:DllRegisterServer (): stub

Using native,builtin override for following DLLs: ole32 oleaut32 rpcrt4

Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/override-dll.reg

Using builtin override for following DLLs when running services.exe: ole32 oleaut32 rpcrt4

...

Clearing Windows version back to default

Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/

unset-winver.reg

Install of dcom98 done

fixme:setupapi:SetupDefaultQueueCallbackW notification 262144 params 32f9ac,0

err:setupapi:SetupDefaultQueueCallbackW copy error 0

L"C:\\windows\\temp\\IXP001.TMP\\comcat.dll" -> L"C:\\windows\\system32\\comcat.dll"

Executing cabextract /home/labirint/.winetrickscache/vcredist.exe

Extracting cabinet: /home/labirint/.winetrickscache/vcredist.exe

  extracting VCRedist.inf

  extracting PreSetup.exe

  extracting 50comupd.exe

  extracting asycfilt.dll

  extracting atla.dll

  extracting comcat.dll

  extracting mfc42.dll

  extracting mfc42u.dll

  extracting msvcirt.dll

  extracting msvcp60.dll

  extracting msvcrt.dll

  extracting oleaut32.dll

  extracting olepro32.dll

  extracting stdole2.tlb

  extracting atlu.dll

  extracting ADVPACK.DLL

  extracting W95INF32.DLL

  extracting W95INF16.DLL

 

All done, no errors.

Install of vcrun6 done

winetricks done.

Из директории ~/.wine/drive_c/Program Files/1Cv77/BIN запускаем ещё раз «1С».

$ wine ./1cv7s.exe

Программа запускается, мы нажимаем кнопку «Добавить», выбираем директорию, где находится база, и запускаем её в режиме конфигуратора (см. рис. 2).

Рисунок 2. Окно запуска «1С» в режиме конфигуратора

Рисунок 2. Окно запуска «1С» в режиме конфигуратора

Начинается запуск, и система зависает на заставке. Опытным путём удалось установить, что зависание происходит потому, что окно входа в систему (для ввода логина и пароля) находится под заставкой, поэтому наша следующая задача либо поменять их местами, либо отключить заставку.

Поиск по форумам привёл к различным решениям [4, 5] – от указания ключа no_splash_show, до внесения правки в exe-файл. Предложенные патчи и подходы не подошли, зато было найдено другое работающее решение, а именно, с помощью внесения исправления в одну из библиотек. Для этих целей можно использовать, например, утилиту Resource Hacker [15] или файловый менеджер Far [6] c расширением Resource Browser [7].

Для этого создаём директорию, например resource_browser в директории %System Drive%\Program Files\Far\Plugins и помещаем туда файлы из архива frb100b5.zip [7].

Перезапускаем Far, ставим курсор на файл 1crcrus.dll и жмём <F11>, выбираем расширение Resource Browser (см. рис. 3) и заходим внутрь файла.

Рисунок 3. Выбираем расширение Resource Browser

Рисунок 3. Выбираем расширение Resource Browser

Далее можно удалить ресурс 1049\ZLIB_DATA\1189 (см. рис. 4). Это и есть стартовая заставка «1C», сжатая архиватором ZIP.

Замечание: приобретённый и используемый нами дистрибутив «1С:Предприятие 7.7. Бухгалтерский учёт. Типовая конфигурация» лицензионным соглашением, где бы запрещалось или разрешалось модифицировать библиотеки для собственных целей, на момент приобретения не комплектовался. На сайте www.1c.ru найти информацию не удалось. По телефону в ответ на вопрос о лицензионном соглашении подтвердили отсутствие лицензионного соглашения для данного продукта. Выгоды из предлагаемого решения мы не получаем, авторские права фирмы «1С» мы не нарушаем. Так как журнал может быть прочитан за пределами РФ, ответственность за соблюдение местных законов лежит на читателях. Вариантом другого решения может быть использование Wine@Etersoft.

Рисунок 4. Удаляем ресурс 1049\ZLIB_DATA\1189 с помощью Resource Browser

Рисунок 4. Удаляем ресурс 1049\ZLIB_DATA\1189 с помощью Resource Browser

После удаления заставки повторяем запуск в режиме конфигуратора. Заставка не появляется, а через некоторое время мы видим окно входа в систему.

После ввода правильных аутентификационных данных мы попадаем в программу «1С» в режиме конфигуратора, где необходимо убрать галочку «Окна -> Панель окон -> Показать» (см. рис. 5), так как нижняя панель некорректно работает под wine и приводит к закрытию всего приложения при обычном запуске.

Рисунок 5. Убираем галочку «Окна -> Панель окон -> Показать»

Рисунок 5. Убираем галочку «Окна -> Панель окон -> Показать»

Если у вас не используется SQL-сервер или сетевое хранение данных, то на этом настройка системы закончена. Можно перегрузиться в пользовательском режиме и работать.

Продолжение настройки для работы с SQL-сервером

Если у вас более сложная конфигурация и используется SQL-сервер, то его необходимо прописать в «1С». Для этого заходим в «Администрирование -> Параметры базы данных SQL...» (см. рис. 6), появляется окно, где вводим адрес SQL-сервера, имя базы данных, имя пользователя и пароль (см. рис. 7).

Рисунок 6. «Администрирование -> Параметры базы данных SQL...»

Рисунок 6. «Администрирование -> Параметры базы данных SQL...»

Рисунок 7. Вводим адрес SQL-сервер, имя базы данных, имя пользователя и пароль

Рисунок 7. Вводим адрес SQL-сервер, имя базы данных, имя пользователя и пароль

После этого выходим из конфигуратора и настраиваем сетевую папку для базы. В нашем случае это CIFS-ресурс на компьютере 192.168.0.1.

Прописываем в файле /etc/fstab:

//192.168.0.1/base_1c /base_1c cifs auto,rw,username=1c,password=xxx,uid=500,gid=500 0 0

500 – это UID пользователя, от которого будет осуществляться запуск «1С». Узнать его можно либо с помощью команды id, или посмотрев файл /etc/passwd.

Запустив команду mount, убеждаемся, что ресурс примонтирован:

#mount | grep 1c

 

...

//192.168.0.1/base_1c on /base_1c type cifs (rw,mand)

 

Читателям придётся поверить на слово, но на практике было установлено, что штатный CIFS-модуль ядра не работает корректно c блокировками, поэтому для успешного запуска «1С» в многопользовательском режиме модуль следует заменить на аналогичный бесплатный – etercifs от фирмы Etersoft [9].

Скачиваем и устанавливаем исходные коды последней версии:

$ wget http://updates.etersoft.ru/pub/Etersoft/WINE@Etersoft/1.0.9/CIFS/Fedora/8/etercifs-4.0.0-eter2fedora.noarch.rpm

# rpm -ihv etercifs-4.0.0-eter2fedora.noarch.rpm

Подготовка... ######################################## [100%]

1:etercifs ############################## [100%]

Etersoft CIFS module... [PASSED]

После установки необходимо скомпилировать модуль (подразумевается, что компилятор gcc, необходимые библиотеки и исходные коды с заголовками ядра у вас установлены):

# /etc/rc.d/init.d/etercifs build

 

Building for 2.6.26.6-49.fc8 Linux kernel

(headers in /lib/modules/2.6.26.6-49.fc8/build)

/usr/bin/gcc

make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

...

make: Leaving directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/cifsfs.o

 

Building for 2.6.26.6-49.fc8 Linux kernel

(headers in /lib/modules/2.6.26.6-49.fc8/build)

/usr/bin/gcc

make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

make: Leaving directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

make: Entering directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/cifsfs.o

CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/cifssmb.o

...

CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/cifs_spnego.o

CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/dns_resolve.o

CC [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/cifs_dfs_ref.o

LD [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/etercifs.o

Building modules, stage 2.

MODPOST 1 modules

CC /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/etercifs.mod.o

LD [M] /tmp/Etercifs.VTDm4513/kernel-source-etercifs-2.6.26-1.53/etercifs.ko

make: Leaving directory `/usr/src/kernels/2.6.26.6-49.fc8-i686'

Copying built module to /lib/modules/2.6.26.6-49.fc8/kernel/fs/cifs

 

Замечание: VTDm4513 – случайные символы. Могут быть другими, например AMCk6167 или что-то ещё.

Далее надо отмонтировать сетевую файловую систему для «1С», выгрузить старый модуль cifs, чтобы он не мешал работе etercifs. Если не отмонтировать – будет сообщение об ошибке. Смотрим, какой модуль загружен, и выполняем действия.

# lsmod |grep cifs

cifs 211381 1

# rmmod cifs

ERROR: Module cifs is in use

# umount /base_1c

# rmmod cifs

# /etc/rc.d/init.d/etercifs start

Loading CIFS kernel module... [ DONE ]

# lsmod |grep cifs

etercifs 227060 0

Как видим, нужный модуль загрузился, поэтому можем примонтировать нашу файловую систему либо все CIFS-файловые системы, указанные в /etc/fstab:

# mount -t cifs -a

Чтобы нужный модуль использовался после перезагрузки системы, его надо прописать с помощью создания мягких ссылок утилитой chkconfig в директориях соответствующих уровней запуска:

# chkconfig etercifs on

Для удобства в директории ~/.wine/dosdevices создаём мягкую ссылку, чтобы, например, диск d: под wine был нашей сетевой директорией:

$ ln -s /base_1c d:

После настраиваем подключения к SQL-серверу, для этого ставим freetds (подробнее см. [1, 2]). В файле /etc/freetds.conf прописываем базу:

[Server1c]

host = 192.168.0.1

port = 1433

tds version = 8.0

client charset = WINDOWS-1251

Далее настраиваем unixODBC.

Файл tds.driver.template:

[FreeTDS]

Description=FreeTDS for MSSQL

Driver=/usr/lib/libtdsodbc.so.0

Файл tds.datasource.template:

[serv]

Driver = FreeTDS

Description = 1C_base

Trace = No

Servername = Server1c

Database = base_1c

После чего мы выполняем с правами администратора установку драйвера:

# odbcinst -i -d -f tds.driver.template

В результате получим:

 

odbcinst: Driver installed. Usage count increased to 1.

Target directory is /etc

Далее с правами пользователя(!) устанавливаем базу, которая будет работать через драйвер, установленный администратором (root) для всех:

$ odbcinst -i -s -f tds.datasource.template

Эта команда выполняется «молча».

Замечание: настройка для «САМО-Тур» проходила аналогично, если вы уже ставили драйвер, то повторно устанавливать его не надо. Подключения к базе можно проверить с помощью isql, до запуска «1С». Подробнее смотрите в [1, 2].

В результате в ~/.odbc.ini должна оказаться информация о подключении к SQL-серверу для работы с «1С». Имя сервера мы прописали заведомо как «serv».

Для того чтобы не было ошибок при разрешении имени в IP-адрес во время выполнения программы, на сайте Etersoft и других местах рекомендуют не использовать имена для адреса сервера, а прописывать IP-адрес. Мы же поступим иначе, пропишем соответствие имени и IP в файле /etc/hosts, дописав туда строчку:

192.168.0.1 serv

Проверить правильность можно командой:

$ ping -c3 serv

В случае успеха команда ping правильно переведёт имя в IP-адрес и будет посылать ICMP-пакеты по соответствующему IP-адресу.

После всех этих действий можем запустить «1С» из директории ~/.wine/drive_c/Program Files/1Cv77/BIN, выполнив команду:

$ wine ./1cv7s.exe

Далее прописываем базу на диске d: и нажимаем «OK». Программа начинает грузиться, но после «слетает» с ошибкой:

 

Call from 0x603f2a90 to unimplemented function odbc32.dll.SQLDriverConnectA, aborting

wine: Unimplemented function odbc32.dll.SQLDriverConnectA called at address 0x603f2a90 (thread 002d), starting debugger...

Unhandled exception: unimplemented function odbc32.dll.SQLDriverConnectA called in 32-bit code (0x603f2b12).

Register dump:

CS:0073 SS:007b DS:007b ES:007b FS:0033 GS:003b

EIP:603f2b12 ESP:0032f3f0 EBP:0032f454 EFLAGS:00200202( - 00 - - I1)

EAX:603dc8e5 EBX:60470820 ECX:00000000 EDX:023fd920

ESI:023fd920 EDI:7caec710

Посмотрев внимательно сообщение, делаем предположение, что надо установить odbc32. Для чего ещё раз запускаем winetricks и ставим MDAC 2.8:

$ sh ./winetricks

 

Gtk-Message: (for origin information, set GTK_DEBUG): failed to retrieve property

`GtkTreeView::odd-row-color' of type `GdkColor' from rc file value "((GString*) 0x98eb4a0)"

of type `GString'

Using native,builtin override for following DLLs: odbc32 odbccp32

Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/

override-dll.reg

Setting Windows version to win98

Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/

set-winver.reg

Executing wine /home/labirint/.winetrickscache/mdac28/MDAC_TYP.EXE

err:richedit:ReadStyleSheet ReadStyleSheet: skipping optional

destination

...

fixme:setupapi:SetupAddInstallSectionToDiskSpaceListA Stub

...

fixme:advpack:set_ldids Need to support changing paths - default will be used

fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet

"C:\\windows\\temp\\IXP001.TMP\\msvcrt.CAB"

fixme:advpack:set_ldids Need to support changing paths - default will be used

fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet

"C:\\windows\\temp\\IXP001.TMP\\mtxfiles.CAB"

...

"C:\\windows\\temp\\IXP001.TMP\\SQLOLDB.CAB"

fixme:advpack:set_ldids Need to support changing paths - default will be used

fixme:setupapi:extract_cabinet_file awful hack: extracting cabinet

"C:\\windows\\temp\\IXP001.TMP\\JETFILES.CAB"

Clearing Windows version back to default

Executing wine regedit /home/labirint/.wine/drive_c/winetrickstmp/

unset-winver.reg

Install of mdac28 done

winetricks done.

Во время установки вместо русских и английских букв в окне с лицензионным соглашением будут непонятные символы (см. рис. 8). Если согласны, то ставим галочку (I accept...) и продолжаем установку.

Рисунок 8. Непонятные символы во время установки MDAC 2.8

Рисунок 8. Непонятные символы во время установки MDAC 2.8

Замечание: внутри скачанного файла MDAC_TYP.EXE имеется файл mdaceula.rtf с полным текстом лицензии, внутри которого указано, что «Разрешается установка и использование неограниченного количества копий продукта исключительно для внутреннего пользования в помещениях вашего предприятия». Чтобы знать, с чем вы соглашаетесь, прочитайте файл!

После установки MDAC 2.8 запускаем «1С» ещё раз...и... Ура, «1С» запустилось! (См. рис. 9.)

Рисунок 9. «1С:Предприятие» работает под Linux Fedora 8

Рисунок 9. «1С:Предприятие» работает под Linux Fedora 8

Проверяем, работает ли «САМО-Тур». К сожалению, после установки MDAC 2.8 – нет, так как нельзя выбрать базу. Поле «Источник ODBC» пустое (см. рис. 10).

Рисунок 10. После установки MDAC 2.8 невозможно запустить «САМО-Тур» - поле «Источник ODBC» пустое

Рисунок 10. После установки MDAC 2.8 невозможно запустить «САМО-Тур» - поле «Источник ODBC» пустое

Проверяем и прописываем заново настройки. В настройках BDE нужно выставить значение параметра SHAREDMEMLOCATION, равное 9000 [14] (см. рис. 11).

Рисунок 11. Устанавливаем в настройках BDE Аdministrator значение параметра SHAREDMEMLOCATION, равное 9000

Рисунок 11. Устанавливаем в настройках BDE Аdministrator значение параметра SHAREDMEMLOCATION, равное 9000

Далее с помощью C:\Windows\System32\odbcad32.exe прописываем заново базу для «САМО-Тур». Будет сообщение, что такая база уже есть, игнорируем сообщение и вносим все настройки поверх (см. рис. 12).

Рисунок 12. Сообщение о том, что база уже существует

Рисунок 12. Сообщение о том, что база уже существует

В конце настройки тест источника баз данных должен быть успешно пройден (см. рис. 13).

Рисунок 13. Тест базы данных успешно пройден

Рисунок 13. Тест базы данных успешно пройден

Теперь, когда «САМО-Тур» работает, пробуем запустить «1С» в многопользовательском режиме. Оказывается, что порядок подключения к базе имеет значение.

Если первым к базе подключился пользователь из-под ОС Linux, то его подключение (и возможное последующее отключение) никак не влияют на работу пользователей под ОС Windows.

Если же первым было подключение пользователя, запустившего программу из-под ОС Windows, то зайти в базу «1С» вторым и более пользователем на компьютере с ОС Linux нельзя. Система выдаёт сообщение об ошибке (см. рис. 14).

Рисунок 14. Ошибка «1С:Предприятие»

Рисунок 14. Ошибка «1С:Предприятие»

В процессе запуска «1С» под ОС Linux были испробованы разные способы и настройки системы, о своих попытках хотелось бы поведать читателям. Например, были попытки работать через модуль cifs, тогда выдавались другие ошибки, но они были решены переходом на модуль etercifs. Читатель проскочил эту тупиковую ветвь выше.

Как решить проблему запуска «1С» вторым пользователем в многопользовательском режиме под wine 1.1.9 мне пока не ясно, но, видна положительная тенденция в улучшении работы wine.

Например, сейчас не выдается ошибка, и в систему успешно входит и работает хотя бы один пользователь из-под ОС Linux (а после могут работать и другие пользователи из-под Windows), в то время как с предыдущими версиями wine вообще не удавалось запустить «1С», даже в режиме конфигуратора. Выдавалась ошибка (см. рис. 15).

Рисунок 15. Ошибка конфигуратора

Рисунок 15. Ошибка конфигуратора

Что интересно, эта ошибка привела нас на форум «Этерсофта» [10], где присутствовали интересные ответы, от чего она может возникнуть.

Там советовали проверить, установлена ли коммерческая часть WINE@Etersoft. Это можно было выполнить командой winediag (если такой команды нет, значит, коммерческая часть отсутствует).

WINE@Etersoft SQL

Таким образом, через месяц мучений стало ясно, что перейти на WINE@Etersoft SQL судьба. Мы удалили бесплатный wine и установили новый:

# yum remove wine wine-core

 

...

Removed: wine.i386 0:1.1.9-2.fc8 wine-core.i386 0:1.1.9-2.fc8

Dependency Removed: wine-capi.i386 0:1.1.9-2.fc8 wine-cms.i386

0:1.1.9-2.fc8 wine-desktop.i386 0:1.1.9-2.fc8 wine-esd.i386

0:1.1.9-2.fc8 wine-jack.i386 0:1.1.9-2.fc8 wine-ldap.i386

0:1.1.9-2.fc8 wine-nas.i386 0:1.1.9-2.fc8 wine-tools.i386

0:1.1.9-2.fc8 wine-twain.i386 0:1.1.9-2.fc8

Complete!

 

# rpm -ihv wine-1.0.9-eter37fedora.i586.rpm wine-etersoft-sql-1.0.9-eter15fedora.i586.rpm

 

libwine-1.0.9-eter37fedora.i586.rpm

Подготовка... ######################################## [100%]

1:libwine ############################## [ 33%]

groupadd: группа wine существует

groupadd: группа wineadmin существует

2:wine ############################## [ 67%]

WINE: Registering binary handler for Windows program: [ DONE ]

3:wine-etersoft-sql ############# ################ [100%]

Running etersafed... [ DONE ]

Замечание: в промежутке между удалением старой версии wine и установкой новой директория ~/.wine была вручную удалена.

Как ни странно, но если в ранних версиях WINE@Etersoft SQL были проблемы, то после нашего регулярного общения по почте с «Этерсофтом» версия 1.0.9 научилась запускать и «САМО-Тур».

Программы «1С» и «САМО-Тур» были установлены заново. Настройка «1С» не отличается от указанных выше. Настройка «САМО-Тура» производилась как если бы эта программа ставилась под ОС Windows, то есть ни freetds, ни unixODBC, ни BDE ставить не пришлось. Была прописана база через настройки odbcad32.exe и параметр SHAREDMEMLOCATION (см. рис. 11) как в шаге после установки MDAC 2.8.

После обе программы успешно заработали. «1С» в том числе стала заходить на сервер, даже если там уже работают другие пользователи.

Удивительно, но «1С» и «САМО-Тур» работают, в первом случае даже не надо возиться с отключением заставки, окно ввода имени пользователя и пароля отображается правильно. Поставил и работай. Не зря «Этерсофт» специализируется на запуске Windows-приложений под Linux, наверняка «не одну собаку съели».

Несмотря на то, что WINE@Etersoft SQL – коммерческий продукт, от процесса его тестирования и общения с сотрудниками фирмы только положительные впечатления. Может, когда-нибудь они откроют секрет, что надо сделать с обычным wine, чтобы работала SQL-версия «1С». Не очень они любят говорить про бесплатный wine, видимо, есть чем гордиться в их закрытой версии, хотя как вариант можно и не ждать, ведь есть и некоммерческая сборка wine [11]. Работа «1С» под ней нами ещё не тестировалась из-за отсутствия времени, но в случае успеха можно будет сравнить исходные коды и получить ответ уже сейчас, если «1С» заработает.

Вообще это приятно, когда коммерческая фирма берётся развивать некоммерческие проекты, подобно тому как существуют Red Hat и Fedora, а то, что это российская фирма и есть форум на русском языке, вдвойне приятно.

Ошибка экспорта в Word

Но несмотря на оптимизм последнего удачного запуска программы «1С» под ОС Linux, есть и недостатки в её работе. Они не связаны вообще с операционной системой, а скрываются в программе, «1С:Предприятие. Версия 7.7» писалась во времена господства на рынке пиратских версий ОС Windows и MS Office, поэтому она с ними только и работает. Фирма «1С» никак не нацелена на адаптирование своего продукта к OpenOffice или альтернативным почтовым клиентам.

Из хорошего – половина экспортов происходит независимо от наличия пакета MS Office сразу в файлы, которые после можно либо копировать по сети, либо открывать в любой подходящей программе. Подобным образом, через внешний файл работает экспорт и импорт в банк-клиент.

Что же касательно «САМО-Тура», то тут «САМО-Софт» потрудились, написали и продают модуль, работающий напрямую с их БД, правда, работает он только в одну сторону, в другую обмен информацией происходит также через внешний xml-файл.

Некоторые экспорты из «1С» всё же не работают на компьютерах без офиса, так как используется СОМ-метод обращения к приложениям. Например, если зайти в меню «Журналы -> Путёвки» и щёлкнуть на любую путёвку, далее, в окошке шаблон выбрать .dot- или .doc-файл шаблона, а после в печати выбрать пункт «Печать Word» (см. рис. 16), то возникает ошибка (см. рис. 17).

Рисунок 16. Выбираем «Печать Word»

Рисунок 16. Выбираем «Печать Word»

Рисунок 17. Ошибка при экспорте в Word

Рисунок 17. Ошибка при экспорте в Word

Радует одно – этим экспортом в нашей фирме пользуется только одна сотрудница. Переводу всех остальных под Linux ничего не мешает.

Но даже и эту ошибку можно попробовать исправить в будущем. Для этого надо воспользоваться проектом unioffice [12]. Эта программа позволяет транслировать запросы (точнее, COM-объекты), направленные к MS Office в запросы к OpenOffice.

Маленькая проблема в том, что сейчас (версия 0.4) транслируются только запросы, направленные к электронным таблицам Exсel. Поддержка некоторых, наиболее часто используемых СОМ-интерфейсов приложения Word планируется в ближайшем будущем. Может, к выходу статьи уже будет реализована. По крайней мере мы уже успели направить свои пожелания в Etersoft, который этим и занимается в свободное от других проектов время.

Чтобы понять, что вызвало ошибку (вам это может тоже понадобиться) и знать, какие методы используются, чтобы послать их разработчикам, в первую очередь надо запустить «1С» в режиме конфигуратора, а далее, находясь в нём, нажать клавишу <F11>, после чего запустится ещё одна копия программы «1С», уже рабочая, где следует повторить все действия, приводящие к ошибке. Далее надо щёлкнуть на красные буковки «err» слева от ошибки, в конфигураторе откроется новое окно, где вы попадёте на участок кода, вызвавший ошибку:

Процедура ПоКнопкеВорд()

Знак = "0";

Если СокрЛП(ИмяФайла)<>"" Тогда

Состояние("Выполняется подключение к шаблону MS Word...");

Word=СоздатьОбъект("Word.Application");

Word.Documents.Add(ИмяФайла);

Word.Selection.GoTo(-1,,, "ДатаСозданияПутёвки");

Word.Selection.Delete(2,1);

.....

Word.Selection.GoTo(-1,,, "Сумма2");

Word.Selection.Delete(2,1);

Word.Selection.TypeText(Строка(Формат(ТурОбслуживание1_ВвалютеКОплате,"Ч15.2,")) + " ");

//Word.Selection.TypeText (Строка(ТурОбслуживание1_ВвалютеКОплате) + " ");

Word.Visible=1;

Иначе

Предупреждение("Укажите имя файла Word !");

КонецЕсли;

КонецПроцедуры

Просмотрев код, можно легко понять, какие СОМ-интерфейсы были использованы, они идут после последовательности «Word».

Пример решения с почтой

Существует и другая задача, а именно отправка бухгалтерских подтверждений или счетов по почте. Счета удобнее всего выставлять из «1С» нажатием пары кнопок. В этом вопросе фирма «1С» также не удосужилась пойти навстречу клиентам. Для отправки почты существует внешний компонент V7Mail (v7plus.dll), но работать с нужными программами он не хочет. Как не пошли в фирме «1С» нам навстречу два и три года назад, так и не хотят делать это сейчас. Гораздо проще ответить, что: «Работоспособность V7Mail с почтовым клиентом Mozilla Thunderbird не проверялась, поэтому подобных рекомендаций дать не можем.

Компонент V7Mail разработан для работы с почтовыми клиентами Outlook и Outlook Express. Кроме этих клиентов, он может работать с любым MAPI-совместимым почтовым клиентом, который корректно поддерживает спецификацию Simple MAPI».

Хотя все другие программы успешно используют, зарегистрированный по умолчанию клиент Mozilla Thunderbird и используемый MAPI их устраивает.

Эту проблему можно также попытаться обойти, сделав решение для клиентов кроссплатформенным, а именно: вместо V7Mail и MAPI использовать компонент ROM-mail, работающий с протоколом SMTP напрямую.

Для этого придётся немного переписать код в базе «1С», а далее, если надо отслеживать отправленные счета, следует поднять SMTP-прокси, на котором помещать копию отправленных писем в папку Sent, доступ к которой можно организовать на том же сервере по протоколу IMAP, например, с помощью IMAP-сервера Dovecot, при этом пользователи смогут использовать привычный им клиент Mozilla Thunderbird, который не удалось заставить работать первым способом через MAPI.

Сообщения есть, а как «оно» работает многие даже не задумываются. Решение может быть как на базе любого MTA вроде Sendmail, так и в виде небольшой программы на С, использующей файл для сохранения писем и два сокета – один на прослушивание подключений от «1С», а другой для подключения к провайдерскому SMTP-сервису. Скорее, это тема следующей статьи.

Заключение

Несмотря на то, что удалось успешно решить часть проблем по запуску «1С» под Linux, постоянно появляются новые и новые проблемы, не позволяющие нам полностью расслабиться.

  1. Барановский С. Как запустить «САМО-Тур» для Windows под Linux. //Системный администратор, №5, май 2008 г. – С. 42-49.
  2. Барановский С. Лебедь, рак да щука: «САМО-Софт», wine, Etersoft. //Системный администратор, №9, сентябрь 2008 г. – С. 44-49.
  3. Утилита winetricks – http://wiki.winehq.org/winetricks.
  4. Как отключить заставку в «1С» – http://www.itland.ru/forum/index.php?showtopic=5223.
  5. Как отключить заставку в «1С» – http://forum.windowsfaq.ru/archive/index.php/t-67859.html.
  6. Файловый менеджер Far – http://farmanager.com.
  7. Resource Browser (позволяет смотреть и редактировать ресурсы EXE- и DLL-файлов) – http://plugring.farmanager.com/downld/files/frb100b5.zip.
  8. Убрать галочку «Окна -> Панель окон -> Показать» – http://forum.ubuntu.ru/index.php?topic=34421.15.
  9. Компания «Этерсофт» – http://www.etersoft.ru.
  10. Наиболее часто встречающиеся вопросы при использовании WINE@Etersoft – http://www.etersoft.ru/content/view/102/83.
  11. Проект по развитию альтернативного свободного репозитория eterwine – http://freesource.info/wiki/WINE, http://winehq.org.ru.
  12. UniOffice@Etersoft, транслятор COM-объектов MS Office – http://wiki.etersoft.ru/UniOffice.
  13. Способы отправки почты из «1C» – http://love1c.kiev.ua/prog/mail.htm.
  14. Тестирование «САМО-Тур» – http://bugs.etersoft.ru/show_bug.cgi?id=1946.
  15. Resource Hacker, утилита для просмотра, изменения, добавления, удаления и извлечения ресурсов из 32-разрядных исполняемых файлов – http://www.angusj.com/resourcehacker.

Комментарии отсутствуют

Добавить комментарий

Комментарии могут оставлять только зарегистрированные пользователи

               Copyright © Системный администратор

Яндекс.Метрика
Tel.: (499) 277-12-41
Fax: (499) 277-12-45
E-mail: sa@samag.ru