1С Хронограф Портятся файлы обработок после редактирования в конфигураторе 1С - > берем > любой файл *.ert, > открываем его в конфигураторе, редактируем и записываем - после этого > открыть > его в конфигураторе > повторно не получится - выдается сообщение "Общая файловая ошибка при > доступе > к <название файла>" WINE@Etersoft School.
В консоли при открытии сохранённой под 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
Закрываю.