Bug 5870

Summary: не работает СоздатьОбъект("V77S.Application")
Product: WINE@Etersoft Reporter: Калюхович Юрий <goga>
Component: OLE / DDE / RPCAssignee: Сергей Гуральник <serhio>
Status: CLOSED FIXED QA Contact: Svetlana Zhukova <svzhu>
Severity: normal    
Priority: P4 CC: a.zheltikov, dm, dtimoshkov, e1sm, eshkrig, lav, mackuzzz, mid, sbf17, shpigor, svzhu, TriodPlus, vitperov, w
Version: 2.1   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: 15372, 28311, 28369 Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 5634, 8991, 9006    

Description Калюхович Юрий 2010-08-09 15:30:54 MSD
wine 1.0.12-eter7.1/11, 1c77, не работают следующие строки в обработке:

БазаОле=СоздатьОбъект("V77.Application")

выдает:
БазаОле=СоздатьОбъект("V77.Application");
{C:\1C\B\TST\ПОДКЛЮЧЕНИЕ БАЗЫ.ERT(8)}: Неудачная попытка создания
объекта (V77.Application)

компонента v7plus.dll установлена. можно решить установкой dcom98 через winetricks. тестовая обработка лежит в pvt/Windows/Testing/RT/15372

подробности в заявке 15372
Comment 1 Alexander 2010-08-10 21:20:24 MSD
Проверил в Ubuntu 10.04 amd64 - помогло winetricks dcom98

А вот в CentOS 5.5 amd64 - не помогло,
winetricks dcom98 устанавливается,
но результата дальнейшего нет,
1с так и выдает ошибку:
БазаОле=СоздатьОбъект("V77.Application");
{C:\1C\B\TST\ПОДКЛЮЧЕНИЕ БАЗЫ.ERT(8)}: Неудачная
попытка создания объекта (V77.Application)

Что в CentOS'е нужно еще установить/поправить?

в CentOS'е 5.5 проверял так:
Установлен CentOS 5.5 amd64
rpm -Uvh wine*.rpm
usermod -a -G wineadmin admin

/etc/wine/config
ATTACH_MODE="yes"

перезагрузился и зашел под Admin (wineadmin)
wine --admin
далее сразу, winetricks dcom98
и сразу пробовать в 1С...
не получилось - Ошибка БазаОле=СоздатьОбъект("V77.Application")
Comment 2 Алексей 2010-08-18 11:14:37 MSD
Добрый день. Также столкнулись с данной ошибкой в centos 5.5 amd64. Как сделать возможным работоспособность в centos 5.5 amd64 данной компоненты V77.Application ? Подскажите пожалуйста.
Comment 3 Alexander 2010-08-18 12:21:59 MSD
В CentOS 5.5 amd64 работает V77.Application, после winetricks dcom98 и последующего запуска через wine98 1cv7,
хотя в ubuntu V77.Application работает просто через запуск wine 1cv7. 
Comment 4 Максим Кузнецов 2010-09-24 18:03:49 MSD
В CentOS 5.5 amd64 все так же: работает через запуск wine98 1cv7.
Comment 5 Максим Кузнецов 2010-09-24 18:07:25 MSD
(In reply to comment #4)

Т.е., CentOS 5.3
Comment 6 Максим Кузнецов 2010-09-24 18:18:59 MSD
После выполнения winetricks, winediag сообщил, что в user.reg пропала ветка wine, после выполнения wine --update пришлось снова запускать winetricks dcom98.
Comment 7 Денис Баранов 2010-09-24 19:20:50 MSD
Нужно проверить на последней сборке.
Comment 8 Денис Баранов 2010-10-06 15:10:24 MSD
WINE@Etersoft 1.0.12 eter7.16/eter14.1
Проверил обработку, объект создается, ошибок не выводит (кроме ошибки подключения), но это уже не относится к этой баге.
Comment 9 Денис Баранов 2010-10-06 15:10:47 MSD
Принято.
Comment 10 Максим Кузнецов 2010-10-06 15:13:00 MSD
После обновления Wine до тестовой версии проблема решилась.
Comment 11 АндрейТ 2010-12-08 02:04:58 MSK
(В ответ на comment #10)
> После обновления Wine до тестовой версии проблема решилась.


WINE@Etersoft version: 1.0.12-eter7.29/15
Ubuntu 10.04

1C8 Новый ComОбъект() создает

1С77 СоздатьОбъект() вообще ничего из Com объектов не создает, пытается запустить
приложение в котором находиться объект с параметром -Embedded и висит
Comment 12 Денис Баранов 2010-12-08 17:24:29 MSK
Попробуйте запускать командой $ wineole programm.exe
Comment 13 АндрейТ 2010-12-08 23:58:19 MSK
Запуск командой $ wineole programm.exe решает все проблемы. Спасибо. 
Семерка работает с Com объектами. Даже  1С8 теперь загрузила даные из 1С7 через оле
А можна функционал wineole "вшить" в wine?,
чтобы "Running with native OLE libraries..." было и там?
Comment 14 АндрейТ 2010-12-09 00:01:19 MSK
Запуск командой $ wineole programm.exe решает все проблемы. Спасибо. 
Семерка работает с Com объектами. Даже  1С8 теперь загрузила даные из 1С7 через оле
А можна функционал wineole "вшить" в wine?,
чтобы "Running with native OLE libraries..." было и там?
Comment 15 Денис Баранов 2010-12-09 20:52:07 MSK
В ближайшее время эта проблема должна решиться. Ведутся работы по OLE.
Comment 16 Александр Желтиков 2010-12-22 11:46:45 MSK
(В ответ на comment #0)
> БазаОле=СоздатьОбъект("V77.Application");
> {C:\1C\B\TST\ПОДКЛЮЧЕНИЕ БАЗЫ.ERT(8)}: Неудачная попытка создания
> объекта (V77.Application)
> 
> можно решить установкой dcom98 через winetricks

Возникла аналогичная проблема на Ubuntu 9.10 wine1.0.12eter7/12,
предположил, что после winetricks dcom98, все будет замечательно.
Сильно огорчился :) , чем-то помочь можете?


вывод winetricks dcom98:
Setting Windows version to win98
Executing wine regedit /home/zheltikov/.wine/dosdevices/c:/windows/temp/winetrickstmp/set-winver.reg
Executing wine /home/zheltikov/.winetrickscache/DCOM98.EXE
wine: cannot find '/home/zheltikov/.winetrickscache/DCOM98.EXE'
Note: command 'wine /home/zheltikov/.winetrickscache/DCOM98.EXE' returned status 2.  Aborting.

после этого запуск 1С командой
wine G:/client/BIN/1cv7.exe
выдает кучу похожих ошибок, одна из них:
err:module:import_dll Library ole32.dll (which is needed by L"G:\\client\\BIN\\1cv7.exe") not found

при ПОВТОРНОЙ установке dcom98 командой wine98 G:/dcom98.exe выводятся следующие ошибки
err:module:import_dll Library rpcrt4.dll (which is needed by L"C:\\windows\\system32\\explorer.exe") not found
err:module:LdrInitializeThunk Main exe initialization for L"C:\\windows\\system32\\explorer.exe" failed, status c0000135
err:setupapi:SetupDefaultQueueCallbackW copy error 5 L"C:\\windows\\temp\\IXP000.TMP\\olethk32.dll" -> L"C:\\windows\\system32\\olethk32.dll"
fixme:setupapi:SetupDefaultQueueCallbackW notification 262144 params 33f6d0,0
err:setupapi:SetupDefaultQueueCallbackW copy error 0 L"C:\\windows\\temp\\IXP000.TMP\\stdole32.tlb" -> L"C:\\windows\\system32\\stdole32.tlb"
Comment 17 АндрейТ 2010-12-22 15:23:28 MSK
(В ответ на comment #16)

> вывод winetricks dcom98:
> Setting Windows version to win98
> Executing wine regedit
> /home/zheltikov/.wine/dosdevices/c:/windows/temp/winetrickstmp/set-winver.reg
> Executing wine /home/zheltikov/.winetrickscache/DCOM98.EXE
> wine: cannot find '/home/zheltikov/.winetrickscache/DCOM98.EXE'
> Note: command 'wine /home/zheltikov/.winetrickscache/DCOM98.EXE' returned
> status 2.  Aborting.
> ......

Мне совет Дениса помог.
У меня WINE@Etersoft version: 1.0.12-eter7.29/15
и команда #wineole programm.exe разрешила проблемы 1С з com как в 1сv77 так и в 1сv81. Не знаю, есть этот скрипт в вашей версии, если нет то обновитесь.
Так как вы использовали winetrick, то он и устанавливает файлы и проиписывает настройки в вайне, так что возможно даже если и запустите с помощью wineole не факт что заработает без предварительного #wine --update или даже придется с папки .wine все что нужно сохранить и ее грохнуть.
И еще, 1С как 77 так и 81 обязательно устанавливайте, а не просто копируйте. И мне кажется лутше запускать указывая не реальные пути линукса (напр #wine /opt/1c/bin/1Cv7.exe) а "ссылочные "винды"" : #wine "c:\Program Files\1cv77\BIN\1Cv7s.exe"

Но возможно уже в новых сборках и не нужно пользоваться wineole так как сказал Денис "В ближайшее время эта проблема должна решиться. Ведутся работы по OLE."
Comment 18 Svetlana Zhukova 2013-01-11 15:57:04 MSK
Снова воспроизводится.
wine@eter-2 bottle 1c77/1c77
WINE@Etersoft SQL 2.0.3-eter14/5
У клиентов выдает ошибку,указанную в баге. У нас происходит зависание программы.
Пробовала на обработке из pvt/Windows/Testing/RT/15372
Также с БД и обработкой из папки c:/Program Files/1Cv77/28311 - здесь зависание происходит на этапе "подключить оле"
Comment 19 Svetlana Zhukova 2013-01-14 16:21:36 MSK
(В ответ на comment #18)
> Снова воспроизводится.
> wine@eter-2 bottle 1c77/1c77
> WINE@Etersoft SQL 2.0.3-eter14/5
> У клиентов выдает ошибку,указанную в баге. У нас происходит зависание
> программы.
> Пробовала на обработке из pvt/Windows/Testing/RT/15372
> Также с БД и обработкой из папки c:/Program Files/1Cv77/28311 - здесь зависание
> происходит на этапе "подключить оле"

В windowsв обработке 28311 если нажать кнопку "подключить оле" - появляется сообщение "Путь информационной базы не найден". При этом оле все равно подключается,кнопка переходит в нажатое положение. Можно отклчить и снова подключить оле. В wine при нажатии "подключить оле" кнопка остается не нажатой. (если в wine перед этим нажать "инициализировать базу-источник",то оле становится нажатой,можно отключить. В windows если нажать "инициализировать базу-источник", то оле автоматически не включается,нужно на кнопку нажимать принудительно).
Если далее нажать "инициализировать базу-приемник",то в windows появится сообщение: поле агрегатного объекта не обнаружено".В wine при этом возникнет зависание.

При запуске обработки 15372 в windows открывается окно выбора базы. В wine - получаю зависание.
Comment 20 Ivan 2013-01-15 08:58:11 MSK
WINE@Etersoft version: 2.0.3-eter14/5

код в 1с из любой конфигурации:

ДругаяБаза=СоздатьОбъект("v77.application");
Открыта=ДругаяБаза.Initialize(ДругаяБаза.RMTrade,,);
Если Открыта=0 Тогда
    Сообщить("База не была открыта.");
    Возврат;
КонецЕсли;

первая строка теперь выполняется (в тестинг версии, в рабочей версии не выполнялась)
но при выполнении строки "Открыта=ДругаяБаза.Initialize(ДругаяБаза.RMTrade,,);" должно появляться окно с выбором базы, перед этим заставка - ничего не появляется, 1С висит
до третьей строки так и не доходит выполнение
в процессах не появляется еще один процесс 1С
закрыть текущую 1С после выполнения этого кода можно только убив процесс
если даже указать полный путь к базе с пользователем и паролем, подключение не происходит
в консоле ошибок нет, появляется только fixme:ole:DefaultHandler_Run ((nil)): semi-stub
Comment 21 Svetlana Zhukova 2013-01-15 14:09:55 MSK
(В ответ на comment #20)
Вчера мы выяснили,что зависание именно на Initialize происходит.Работаем над проблемой.
Comment 22 Svetlana Zhukova 2013-01-15 14:17:00 MSK
Данную багу закрываю,потому как СоздатьОбъект("V77S.Application") работает.
Создала по теме проблемы :
http://bugs.etersoft.ru/show_bug.cgi?id=9006

Строку зависания определили,вставляя в обработку после каждой процедуры строку
Сообщить("вывод1")
Comment 23 Денис Баранов 2013-02-06 17:51:06 MSK
Закрываю.
Comment 24 Ivan 2013-02-06 19:27:47 MSK
(In reply to comment #23)
> Закрываю.

А почему закрываете???
выше описано "Вчера мы выяснили,что зависание именно на Initialize происходит.Работаем над проблемой"

у нас Initialize так и не работает. Обновления, патчи есть для решения проблемы? у нас офиц. купленый вайн 2.0, а приходится работать на версии 1.0.
Comment 25 Vitaly Lipatov 2013-02-06 19:48:47 MSK
(В ответ на comment #24)
> (In reply to comment #23)
> > Закрываю.
> 
> А почему закрываете???
> выше описано "Вчера мы выяснили,что зависание именно на Initialize
> происходит.Работаем над проблемой"
Потому что, как написано сообщением выше, СоздатьОбъект работает, не работает
Initialize, о чём создана отдельная задача:
http://bugs.etersoft.ru/show_bug.cgi?id=9006
Comment 26 Svetlana Zhukova 2013-04-17 11:18:42 MSK
На eterhack bottle 1c77/1c77
WINE@Etersoft SQL 1.5.23/2.1.0-eter2/3

на eter-2.1 
WINE@Etersoft SQL 2.1.2/2.1.0-eter8/3
воспроизводится.
Comment 27 Vitaly Lipatov 2013-06-05 21:25:01 MSK
Дмитрий, а здесь с .Application та же история, что и с Excel.Application?
Comment 33 Svetlana Zhukova 2013-06-11 11:48:11 MSK
Да,теперь и в контейнерах:
* Вт июн 11 2013 Etersoft Builder <builder@etersoft.ru> 2.1.2-alt18
- ole32: Disable incomplete default handler support. (eterbug #5099)
Закрываю.
Comment 34 Svetlana Zhukova 2013-06-19 13:51:06 MSK
*** Bug 4103 has been marked as a duplicate of this bug. ***