Summary: | 1С 7.7: Общая файловая ошибка | ||
---|---|---|---|
Product: | WINE@Etersoft | Reporter: | Денис Баранов <baraka> |
Component: | Файловые операции | Assignee: | Александр Морозов <amorozov> |
Status: | CLOSED FIXED | QA Contact: | Денис Баранов <baraka> |
Severity: | critical | ||
Priority: | P2 | CC: | kondratyuk, lav, vitperov |
Version: | 2.0 | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | 6846 | |
Дата напоминания: | |||
Bug Depends on: | |||
Bug Blocks: | 42, 6715, 15035 |
В консоли при открытии сохранённой под wine обработки: trace:storage:HGLOBALStreamImpl_Read (0x115f10, 0x32b994, 24, 0x32b990) trace:storage:HGLOBALStreamImpl_Read (0x115f10, 0x32b9c4, 40, 0x32b9c0) trace:storage:HGLOBALStreamImpl_Destroy (0x115f10) trace:storage:StgIsStorageFile L"C:\\testing.ert" trace:storage:StgIsStorageFile -> Invalid header. Как видно из лога в предыдущем комментарии, проблема в том, что после сохранения в начале .ert-файла пропадает набор байт, характерный для compound-файла. При сохранении 1С создаёт IStorage поверх ILockBytes с помощью StgCreateDocfileOnILockBytes, затем записывает всё в полученный storage и вызывает метод Commit. Но то, что создаёт StgCreateDocfileOnILockBytes, не содержит в начале нужный набор байт, обозначающий compound-файл, и на Windows это тоже так. Начал писать небольшую тестовую программу, делающую приблизительно то же, что делает 1С при сохранении .ert-файла. > Но то, что создаёт StgCreateDocfileOnILockBytes, не
> содержит в начале нужный набор байт, обозначающий compound-файл, и на Windows
> это тоже так.
Оказалось, что содержит. Просто в тесте была ошибка. CreateILockBytesOnHGlobal может перевыделять память, в результате старый указатель становился недействительным, и при чтении по нему получался некорректный doc-файл.
Доделал тестовую программу: ole-storage/lkb в репозитории wine-etersoft-devel. Программа создаёт doc-файл. В wine doc-файл создаётся некорректно. Возможно, это та же проблема, что и при сохранении обработки в 1С. (В ответ на comment #5) > Доделал тестовую программу: ole-storage/lkb в репозитории wine-etersoft-devel. > Программа создаёт doc-файл. В wine doc-файл создаётся некорректно. Возможно, > это та же проблема, что и при сохранении обработки в 1С. Возможно ли создать тест для winehq на основе тестовой программы? После решения проблемы, например. Тогда можно было бы привлечь общественное внимание к проблеме. > Возможно ли создать тест для winehq на основе тестовой программы? После решения
> проблемы, например.
Да, думаю, с созданием теста никаких проблем не должно быть.
Отправил патч в wine-patches-test. Принято. WINE@Etersoft School 1.7.0 eter5/6 Закрываю. |
1С Хронограф Портятся файлы обработок после редактирования в конфигураторе 1С - > берем > любой файл *.ert, > открываем его в конфигураторе, редактируем и записываем - после этого > открыть > его в конфигураторе > повторно не получится - выдается сообщение "Общая файловая ошибка при > доступе > к <название файла>" WINE@Etersoft School.