Укажите отработанное время

Отработанное время:
Продуктивное время:
Bug 6749 - 1С 7.7: Общая файловая ошибка   Make a simular bug
Summary: 1С 7.7: Общая файловая ошибка
Status: CLOSED FIXED
Alias: None
Product: WINE@Etersoft
Classification: Продукты (Products)
Component: Файловые операции (show other bugs)
Version: 2.0
Hardware: PC All
: P2 critical
Target Milestone: ---
Assignee: Александр Морозов
QA Contact: Денис Баранов
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: 42 6715 15035
  Show dependency treegraph
 
In work:
Reported: 2010-12-31 16:06 MSK by Денис Баранов
Modified: 2021-03-29 00:46 MSK (History)
3 users (show)

See Also:
Заявки RT:
Связано с:
Дата напоминания:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Денис Баранов 2010-12-31 16:06:38 MSK
1С Хронограф
Портятся файлы обработок после редактирования в конфигураторе 1С -  
> берем
> любой файл *.ert,
> открываем его в конфигураторе, редактируем и записываем - после этого  
> открыть
> его в конфигураторе
> повторно не получится - выдается сообщение "Общая файловая ошибка при  
> доступе
> к <название файла>"
WINE@Etersoft School.
Comment 1 Александр Морозов 2011-01-19 22:48:50 MSK
В консоли при открытии сохранённой под 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.
Comment 2 Александр Морозов 2011-01-20 22:17:52 MSK
Как видно из лога в предыдущем комментарии, проблема в том, что после сохранения в начале .ert-файла пропадает набор байт, характерный для compound-файла.

При сохранении 1С создаёт IStorage поверх ILockBytes с помощью StgCreateDocfileOnILockBytes, затем записывает всё в полученный storage и вызывает метод Commit. Но то, что создаёт StgCreateDocfileOnILockBytes, не содержит в начале нужный набор байт, обозначающий compound-файл, и на Windows это тоже так.
Comment 3 Александр Морозов 2011-01-24 22:21:09 MSK
Начал писать небольшую тестовую программу, делающую приблизительно то же, что делает 1С при сохранении .ert-файла.
Comment 4 Александр Морозов 2011-01-25 19:49:28 MSK
> Но то, что создаёт StgCreateDocfileOnILockBytes, не
> содержит в начале нужный набор байт, обозначающий compound-файл, и на Windows
> это тоже так.
Оказалось, что содержит. Просто в тесте была ошибка. CreateILockBytesOnHGlobal может перевыделять память, в результате старый указатель становился недействительным, и при чтении по нему получался некорректный doc-файл.
Comment 5 Александр Морозов 2011-01-25 21:11:17 MSK
Доделал тестовую программу: ole-storage/lkb в репозитории wine-etersoft-devel. Программа создаёт doc-файл. В wine doc-файл создаётся некорректно. Возможно, это та же проблема, что и при сохранении обработки в 1С.
Comment 6 Vitaly Lipatov 2011-01-26 00:09:46 MSK
(В ответ на comment #5)
> Доделал тестовую программу: ole-storage/lkb в репозитории wine-etersoft-devel.
> Программа создаёт doc-файл. В wine doc-файл создаётся некорректно. Возможно,
> это та же проблема, что и при сохранении обработки в 1С.
Возможно ли создать тест для winehq на основе тестовой программы? После решения проблемы, например.
Тогда можно было бы привлечь общественное внимание к проблеме.
Comment 7 Александр Морозов 2011-01-26 15:10:51 MSK
> Возможно ли создать тест для winehq на основе тестовой программы? После решения
> проблемы, например.
Да, думаю, с созданием теста никаких проблем не должно быть.
Comment 8 Александр Морозов 2011-01-26 20:49:40 MSK
Отправил патч в wine-patches-test.
Comment 9 Денис Баранов 2011-02-19 17:43:26 MSK
Принято.
WINE@Etersoft School 1.7.0 eter5/6
Comment 10 Денис Баранов 2011-02-21 18:47:17 MSK
Закрываю.