для wine 1.3 eщё нигде не видел, поэтому напишу, ...и для себя тоже, чтобы через год оценить прогресс Wine.
Сейчас, для меня открытым остался вопрос только с журналом регистрации при многопользовательской работе, хотя это и не мешает.
1. Установка: наилучший вариант, на мой взгляд, скопировать уставленную под виндой папку 1cv7 куда надо, и сделать кнопку запуска вроде такой "wine '/data/!1C/1Cv77/BIN/1cv7.exe'"
-первое НО!: mfc42.dll разместите в каталоге /1Cv77/BIN/ (её ненужно регистрировать в wine)
-второе НО!: чтобы не возится с ключом защиты, измените программное обеспечение (файл 1cv7.exe) для работы в среде unix, что конкретно поменять в файле ищите в интернете, я не скажу, иначе правообладатель может обидеться. Вредоносное ПО, при таком варианте изменений, в виде эмулятора ключа не используется, так что правообладатель для "не граждан РФ" идет "лесом", для россиян - подключайте ключ, однозначно! 1С богатая контора, и суд вы у неё не перекупите, хотя они и не правы.
2. Правообладатели: об 1с сказано выше, Microsoft тоже идет "лесом", не надо было dcom95 отпускать, ведь mfc42, ole32 и rpcrt4 единственные библиотеки мелкомягких которые нужны в wine для правильной работы 1с77, и то последняя только для удобства программирования (убирает глюки буфера обмена при работе в конфигураторе.
3.Настройка wine: бросаем в папку system32 ole32 и rpcrt4 и регистрируем обе в winecfg как (сторонняя, встроенная), mfc42 лежит в 1с и 1с сама её смотрит у себя раньше чем в system32.
-первое НО!: пока открыт вопрос с кнопкой "Ввод" (с клавы одна не работает, надо жать "Шифт+Ввод"), мне это не мешает, но перфекционисты могут сделать следующее:
скачать файл "FormEx.dll", и кинуть в каталог 1Cv77/BIN/
далее в конфигуратор и:
А. в процедуру "ПриНачалеРаботыСистемы()" пишем:
Если ЗагрузитьВнешнююКомпоненту("FormEx.dll")=0 Тогда
Предупреждение("Не удается загрузить внешнюю компоненту 1C++!",10);
КонецЕсли;
Б. создаём в глобальном модуле новую процедуру:
Процедура ПриНажатииКнопкиКлавиатуры(Конт, КодКл, Алт, Шифт, Контрл, Символ, ФСО)
//Сообщить (КодКл);
Если КодКл=13 Тогда
Service = СоздатьОбъект("Сервис");
Service.SendKeys("{TAB}");
//КодКл=9;
КонецЕсли;
КонецПроцедуры
За идею спасибо - 1clinux;
http://1clinux.org/index.php?topic=188.04. Многопользовательская работа:
Очень проста в настройке))))))) следовательно - внимательно следите за руками фокусника (... и порядком слов в предложениях)
А) ставим последний etercifts c сайта Etersoft. Он свободный. Устанавливаем (инструкции по нему - на етерсофте). Пересобираем ядро. Пишем в файл /etc/sysconfig/etercifs.conf строку MOUNT_OPTIONS=user=пользователь,iocharset=utf8,file_mode=0660,dir_mode=02770,uid=пользователь,gid=группа,wine,nounix
где пользователь= ваш пользователь, группа= группа в которой должны быть пользователи 1с базы
Перезапускаемся.
Б) как нибудь делаем sudo etermount //192.168.1.2/data/base где вместо //192.168.1.2/data/base должен быть путь к папке с базой 1с и вводим пароль root на вход в базу, не параноики могут прописать пароль в /etc/sysconfig/etercifs.conf как опцию MOUNT_OPTIONS password=пароль. Параноики читают инструкции Etersoftа.
В) подключаем юзеров к базе и работаем.
- ) панель окон работает,
- ) буфер обмена работает,
- ) Enter у перфекционистов работает,
- ) много пользователей по сети работают,
- ) блокировки в 1с работают.
- ( регистрация сетевых пользовтелей глючит, кому она нужна, разбирайтесь. За это отвечает файл /syslog/links.tmp, он создаётся 1с кой в момент загрузки конфигурации после авторизации юзера и автоудаляется при закрытии, если нет lck файлов. Информация в файле хрнится в SDF-формате. Каждому пользователю отведено фиксированное количество строк, и область файла в 1024 байта. 1с-ка блокирует байт со смещением 1E8481h + НомерПользователяВСписке. Поэтому, чтобы определить, является ли пользователь активным, достаточно сделать попытку блокировки соответствующего байта в файле links.tmp, если вышло - пользователь не активен. Вот что нагуглил я по этому поводу, информации более чем достаточно и для установки нужных прав на этот файл и для написания альтернативного считывателя пользователй.