Bug 6343

Summary: 1С7.7: сообщения об ошибках при использовании встроенной oleaut32
Product: WINE@Etersoft Reporter: Александр Морозов <amorozov>
Component: OLE / DDE / RPCAssignee: Александр Морозов <amorozov>
Status: CLOSED FIXED QA Contact: Денис Баранов <baraka>
Severity: minor    
Priority: P4 CC: vitperov
Version: 2.0   
Target Milestone: ---   
Hardware: PC   
OS: All   
Whiteboard:
Заявки RT: Связано с:
Дата напоминания:
Bug Depends on:    
Bug Blocks: 42, 760, 6433    

Description Александр Морозов 2010-10-28 18:02:51 MSD
Если используется встроенная oleaut32, то при входе в базу выводится ряд сообщений об ошибках.

Дистрибутив 1С:
/var/ftp/pvt/Windows/1C/1Cv77/B770027-Network
Конфигурация:
/var/ftp/pvt/Windows/1C/1Cv77_configs/2008-05/1CACC45/R770498
Comment 1 Александр Морозов 2010-12-06 21:43:02 MSK
При входе в базу два раза выводится сообщение "Ошибка открытия документа", а после этого также довольно часто выводится "Неправильный формат файла". Фрагмент лога, предшествующий первому сообщению:

trace:ole:OLEPictureImpl_Load (0x1b0c3d8,0x32ce50)
trace:ole:OLEPictureImpl_Load stat failed with hres 80004001, proceeding to read all data.
trace:ole:OLEPictureImpl_Load Reading all data from stream.
trace:ole:OLEPictureImpl_Load loaded 39779 bytes.
trace:ole:OLEPictureImpl_Load line 1473 hr 00000000 magic 0xcdd7
trace:ole:OLEPictureImpl_LoadAPM
trace:metafile:SetMetaFileBitsEx line 1095
trace:ole:OLEPictureImpl_Load return 80004005

второму сообщению:

trace:ole:OLEPictureImpl_Load (0x1a640b8,0x32ae80)
trace:ole:OLEPictureImpl_Load stat failed with hres 80004001, proceeding to read all data.
trace:ole:OLEPictureImpl_Load Reading all data from stream.
trace:ole:OLEPictureImpl_Load loaded 410911 bytes.
trace:ole:OLEPictureImpl_Load line 1473 hr 00000000 magic 0x4d42
trace:ole:OLEPictureImpl_SetBitmap bitmap handle 0x6998
trace:ole:ConnectionPointImpl_EnumConnections (0x1a64128)->(0x32acf8)
trace:ole:OLEPictureImpl_Load return 00000000
trace:ole:OLEPictureImpl_Release (0x1a640b8)->(ref before=2)
trace:ole:OLEPictureImpl_PictureChanged (0x1a640b8)->()
trace:ole:ConnectionPointImpl_EnumConnections (0x1a64128)->(0x32ae0c)
trace:ole:OLEPictureImpl_Release (0x1a640b8)->(ref before=1)
trace:ole:OLEPictureImpl_Destroy (0x1a640b8)
trace:ole:ConnectionPointImpl_Release (0x1a64128)->(ref before=1)

Выяснил, что соответсвующий первой ошибке вызов OLEPictureImpl_Load читает картинку из стрима CalcVar\CalcVar_Number401\WorkBook\Page.4 в файле 1cv7.md.
Comment 2 Александр Морозов 2010-12-07 21:17:42 MSK
Переделал функцию OLEPictureImpl_Load так, чтобы она не использовала метод Stat интерфейса IStream. Эта функция реализует метод Load интерфейса IPersistStream объекта картинки. В MSDN говорится, что этот метод может использовать только Seek и Read:
http://msdn.microsoft.com/en-us/library/ms680568(v=VS.85).aspx

В результате при входе в базу перестали появляться окна с сообщениями об ошибках. Осталась проблема с появлением вот такого сообщения внизу:

ВерсияВнешнейОбработкиИБлока = Парам.Получить("Версия");
{C:\PROGRAM FILES\1CV77\1SBDB\EXTFORMS\RP08Q1.GRP\REKLAMA.ERT(41)}: Поле агрегатного объекта не обнаружено (Получить)
Comment 3 Александр Морозов 2010-12-08 21:06:13 MSK
> ВерсияВнешнейОбработкиИБлока = Парам.Получить("Версия");
> {C:\PROGRAM FILES\1CV77\1SBDB\EXTFORMS\RP08Q1.GRP\REKLAMA.ERT(41)}: Поле
> агрегатного объекта не обнаружено (Получить)
Проблема не проявляется, если использовать для 1С стороннюю msvcrt.
Comment 4 Денис Баранов 2010-12-11 17:43:33 MSK
Принято.