|
Записать отредактированный файл Word в БД | ☑ | ||
---|---|---|---|---|
0
techguru
29.02.12
✎
10:42
|
Открываю doc-файл из хранилища значений в 1С. Как определить, редактировался ли документ пользователем и если да - записать обновленную версию файла в БД? Заранее благодарю за дельные советы!
|
|||
1
techguru
29.02.12
✎
13:22
|
up! Неужели ни у кого нет рабочего механизма на такой случай? Поделитесь, plz!
|
|||
2
GenV
29.02.12
✎
13:23
|
(0) Сравнивать дату изменения файла в базе и в каталоге. Можно еще и размер.
|
|||
3
BigRoma
29.02.12
✎
13:24
|
по дате изменения файла
|
|||
4
Wobland
29.02.12
✎
13:24
|
(0) для зачем? пиши безусловно
|
|||
5
techguru
29.02.12
✎
13:27
|
(4) то есть после каждого открытия файла - обновлять хранилище? Тоже вариант. Сейчас попробую.
|
|||
6
GenV
29.02.12
✎
13:30
|
(5) лучше сделай с нормальным захватом для редактирования (и пометкой файла как редактируемого) и последующим обновлением при завершении редактирования.
ЗЫ Может пользователь напортачил в файле еще не закончил редактировать, а ты его по умолчанию затрешь в базе ) |
|||
7
techguru
29.02.12
✎
13:35
|
(6) а как захватить для редактирования?
|
|||
8
GenV
29.02.12
✎
13:37
|
(7) Добавляешь реквизит "Редактируется" булево. И кнопки "редактировать" и "закончить редактирование", которые будет нажимать пользователь.
ЗЫ Если лень самому думать можешь посмотреть БСП или на инфостарте поищи готовое. |
|||
9
techguru
29.02.12
✎
14:09
|
Почему-то не отрабатывают обработчики событий:
ДобавитьОбработчик Word.DocumentBeforeClose, ПередЗакрытиемДокументаWord; ДобавитьОбработчик Word.Quit, ВыходИзWord; Процедуры ВыходИзWord и ПередЗакрытиемДокументаWord тупо не вызываются. С чем это может быть связано? WORD 2010. |
|||
10
techguru
29.02.12
✎
15:11
|
Ничего не понимаю... В отладчике строки с ДобавитьОбработчик пролетают без ошибок, но нет редиректа на нужные мне процедуры. Почему? Что за бред? Помогите разобраться, пожалуйста!
|
|||
11
andrewks
29.02.12
✎
15:17
|
используй хэш
|
|||
12
techguru
29.02.12
✎
15:18
|
(11) можно поподробнее?
|
|||
13
techguru
29.02.12
✎
15:19
|
(11) мне надо отследить момент закрытия документа Word, предварительно открытого из ХЗ 1С. ДобавитьОбработчик в обозначенном выше виде не работает - строки кода пролетают до сохранения и закрытия документа. Как может помочь хэш?
|
|||
14
andrewks
29.02.12
✎
15:19
|
||||
15
andrewks
29.02.12
✎
15:20
|
(13) это к (0), а не к (9)
|
|||
16
techguru
29.02.12
✎
15:39
|
(14) Не годится, к сожалению. Файлы открываются во временных папка и - главное - как их сравнить, если заведомо неизвестно, когда пользователь закроет Word?
|
|||
17
GenV
29.02.12
✎
15:45
|
(16) А если ворд зависнет?
Не придумывай велосипед - пусть пользователь сам подтверждает, что закончил редактировать файл. |
|||
18
andrewks
29.02.12
✎
15:46
|
(16) это легко можно сделать из-под твоей формы, откуда ты "отдаёшь" файл на редактирование - при закрытии и перед записью проверяй наличие изменённого файла и отсутствие сигнального файла мсворда (его наличие означает, что редактирование до сих пор продолжается), ну, и дальше по обстоятельствам - уточняй у юзера, записывай, отказывай в закрытии формы, и т.п.
|
|||
19
aleks-id
29.02.12
✎
15:51
|
Перем ДокументИзменен;
..... Попытка Word = Новый COMОбъект("Word.Application"); Word.Documents.Open(ПолноеИмяФайла); Word.Visible = Истина; ДобавитьОбработчик Word.DocumentBeforeClose, ПередЗакрытиемДокументаOffice; ДобавитьОбработчик Word.DocumentBeforeSave, ПередСохранениемДокументаOffice; Исключение ЗапуститьПриложение(ПолноеИмяФайла); КонецПопытки; ..... Процедура ПередЗакрытиемДокументаOffice(Документ, Отмена) Если (НЕ Документ.Saved) ИЛИ (ДокументИзменен) Тогда Документ.Save(); msOffice = Документ.Application; Документ.Close(); msOffice.Quit(); ТекОбъект = ЭлементыФормы.Файлы.ТекущиеДанные.Ссылка.ПолучитьОбъект(); ТекОбъект.Хранилище = Новый ХранилищеЗначения(Новый ДвоичныеДанные(ПолноеИмяФайла), Новый СжатиеДанных()); ТекОбъект.Записать(); КонецЕсли; ДокументИзменен = Ложь; КонецПроцедуры Процедура ПередСохранениемДокументаOffice(Документ, СохранитьКак, Отмена) ДокументИзменен = Истина; КонецПроцедуры |
|||
20
techguru
29.02.12
✎
16:02
|
(17) Реализовал сохранение с предупреждением пользователя. Действительно, так и проще, и надежнее. Спасибо!
|
|||
21
BigRoma
29.02.12
✎
18:07
|
(20) кстати, такой функционал уже есть в БСП, аж две подсистемы :)
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |