Имя: Пароль:
1C
1С v8
Как определить формат сохранения Word по умолчанию.
,
0 Numerus Mikhail
 
20.10.17
09:31
Всем доброй пятницы.
Имеется:
Com Объект Word.Application

Word = Новый COMОбъект("Word.Application");
НовыйДокумент = Word.ActiveDocument;
//Заполнение документа.
НовыйДокумент.SaveAs("ИмяФайлаБезРасширения"); //Получается файл "ИмяФайлаБезРасширения.docx, в случае, если по умолчанию выбран docx

В таком случае файл сохраняется в том формате, который указан как формат по умолчанию. (В ворде: Файл - Параметры - Сохранение - Сохранять файл в следующем формате)

Но если в имени файла присутствует точка, то файл сохраняется с расширением, которые после точки.

НовыйДокумент.SaveAs("ИмяФайла.БезРасширения"); //получается файл "ИмяФайла.БезРасширения"

MSDN говорит, что вторым параметром в SaveAs можно передавать расширение файла
https://msdn.microsoft.com/ru-ru/library/microsoft.office.tools.word.document.saveas.aspx?cs-save-lang=1&cs-lang=vb#code-snippet-1
Но нигде не написано, как программно узнать, какое расширение используется по умолчанию. Вроде как перерыл весь ком объект Word, но не нашел в нем ничего примерно похожего на то, что надо мне.
Может кто сталкивался и подскажет в какую сторону копать?
1 Numerus Mikhail
 
20.10.17
10:09
Подниму. Есть вариант называть файл без точек, а потом переименовывать его, но такие костыли оставлю на крайний случай
2 Масянька
 
20.10.17
10:15
(1) Задача-то какая?
3 Numerus Mikhail
 
20.10.17
10:22
(2) Задача сохранить файл с расширением, которое указано в ворде как расширение по умолчанию.
Имя файла задает пользователь. Если в имени файла нет точек, то все работает, если же в имени присутствует точка, то файл сохраняется с неправильным расширением
4 Масянька
 
20.10.17
10:23
(3) Делай без точки.
5 Numerus Mikhail
 
20.10.17
10:26
(4) Гениально, конечно, но "Имя файла задает пользователь". И, если ворд предоставляет возможность сохранять файлы, в которых есть точка, то считаю нецелесообразным запрещать это. Поэтому, суть вопроса сводится к
"Как программно определить расширение по умолчанию"
6 Филиал-msk
 
20.10.17
10:27
(0) > MSDN говорит, что вторым параметром в SaveAs можно передавать расширение файла

C чего бы это? MSDN говорит, что вторым параметром в SaveAs можно передавать формат файла.
7 Масянька
 
20.10.17
10:28
(5) Пихать точки в имя файла (не путать с расширением) - это не просто моветон... За это нужно руки отрубать по самую голову...
8 Филиал-msk
 
20.10.17
10:29
(7) Ты еще возмутись, что некоторые туда пробелы запихивают
9 Масянька
 
20.10.17
10:32
(6) Только как получить расширение по умолчанию?
(8) Пробелы еще терпимо...
10 Филиал-msk
 
20.10.17
10:33
(5) НовыйДокумент.SaveAs("ИмяФайла.С.Точками", 16)
к чему приводит?
11 Филиал-msk
 
20.10.17
10:35
(9) Так же, как и всегда, Пинки... прочитать документацию. =)

https://msdn.microsoft.com/en-us/vba/word-vba/articles/wdsaveformat-enumeration-word
12 Numerus Mikhail
 
20.10.17
10:42
(10) сохраняется без расширения
13 Филиал-msk
 
20.10.17
11:00
(12) А теперь
НовыйДокумент.SaveAs("ИмяФайла.С.Точками.docx", 16)
14 Масянька
 
20.10.17
11:07
(13) Методом тыка - НовыйДокумент.SaveAs("ИмяФайла.С.Точками.docx", 1)
15 Numerus Mikhail
 
20.10.17
11:08
(13) Да, я уже опытным путем понял, что неважно какой формат сохранения я выберу, если в имени файла есть точки, оно будет сохраняться с расширением после последней точки.
16 Филиал-msk
 
20.10.17
11:09
(15). Нет. Это проверка того, что у тебя расширение соответствует формату.
В ранних вордах оно бросало исключение, что тип не соответствует расширению файла. Здесь решили упростить обрезанием некорректного расширения нахъ.
17 Масянька
 
20.10.17
11:10
(15) А я вам говорила...
А что запрещает программно формировать имя файла?
18 Филиал-msk
 
20.10.17
11:11
Так что, давай засучивай рука и приступай к дело
19 Numerus Mikhail
 
20.10.17
11:12
(16) Оно не обрезает
НовыйДокумент.SaveAs("lol.kek.docx.хук", 16);

создает файл "lol.kek.docx.хук". Сохраняется как раз в то, что указано в SaveFormat
20 Филиал-msk
 
20.10.17
11:13
(19) Ну тогда вообще проблемы нет - если лев 4 <> .докх тогда += .докх
21 Масянька
 
20.10.17
11:13
У меня не арбайтэн 16.
Сохраняет в doc? а в Worf'у стоит docx.
22 Numerus Mikhail
 
20.10.17
11:13
(20) а если в формате по умолчанию docm выбран? в этом же вся суть проблемы.
23 Numerus Mikhail
 
20.10.17
11:15
(20) я нашел свойство "DefaultSaveFormat" у Word.Application

Но оно довольно убогое.
Если docx - пусто
если docm - MacroEnabledDocument
Если doc  - Doc

Ну и так далее. Получается можно один раз руками перебрать все варианты, засунуть их в какое-то соответствие, а потом искать при формировании.
24 Филиал-msk
 
20.10.17
11:16
25 Numerus Mikhail
 
20.10.17
11:22
(24) Если бы я точно знал, в какой формат мне надо сохранить - проблемы бы, наверное, не было. Суть была именно в определении какой формат по умолчанию выбран.
26 Масянька
 
20.10.17
11:24
У меня:
    мWord = СоздатьОбъект("Word.Application");
Сообщить("1 - " + мWord.DefaultSaveFormat);

вернуло:
1 -
27 Филиал-msk
 
20.10.17
11:26
(25) цитата: "... Опция Office/Параметры Word/Сохранение/Сохранять файлы в следующем формате "Документ 97-2003" естественно НАСТРОЕНА. но она работает только на новые созданные документы.
28 Масянька
 
20.10.17
11:28
Я не понимаю: я что сама с собой разговариваю?!
29 Филиал-msk
 
20.10.17
11:28
Только. На. Новые.
30 Масянька
 
20.10.17
11:42
Кстати...
мДок.SaveAs(мИмяФайла, 1) - сохранил в dot
мДок.SaveAs(мИмяФайла, 16) - сохранил в docx (установлен по умолчанию).
31 Масянька
 
20.10.17
11:43
мДок.SaveAs(мИмяФайла, 2); - сохранил в txt.
32 Numerus Mikhail
 
20.10.17
11:44
(29) Не могу понять, это я тебя не понимаю или ты меня.
Я создаю новые документы.

Для просты код:
Word = Новый COMОбъект("Word.Application");
    Word.Documents.add();
    НовыйДокумент = Word.ActiveDocument;
    НовыйДокумент.SaveAs("C:\Users\m.korniltsev\Documents\Куча\lol.kek.docx.хук");
    НовыйДокумент.Close(0);
    Word.Quit(0);

это же НОВЫЙ документ? или я что-то не понимаю?
Сохраняет с расширением .хук
33 Numerus Mikhail
 
20.10.17
11:44
(31) Это если точки в имени файла нет. В этом же вся моя проблема изначально
34 Масянька
 
20.10.17
11:45
мДок.SaveAs(мИмяФайла); - сохранил в docx (по умолчанию стоит).
35 Масянька
 
20.10.17
11:45
(33) А что такого в этих точках?
36 Numerus Mikhail
 
20.10.17
11:47
(35) Как понять что такого? Ну нравится пользователю делать имя файла "СУПЕР МЕГА ВАЖНЫЙ ФАЙЛ от 12.02.2017"
37 Масянька
 
20.10.17
11:49
(36) Ну дык, меняй точки. На пробелы, подчерки...
38 Масянька
 
20.10.17
11:49
+ (37) Объясни, что это (мягко говоря) не корректно.
39 Numerus Mikhail
 
20.10.17
11:55
(38) А кто сказал, что это некорректно? Я упорно не понимаю, почему ты считаешь, что это моветон. Можешь обьяснить, если не сложно?
40 Масянька
 
20.10.17
12:08
(39) Смешной ты...
Тему-то зачем завел? :)
"." - в ОСи всегда расценивалась, как разделитель имени файла и расширения. И то, что в Винде разрешили использовать "." в имени файла - не показатель, что всё будет корректно работать.
Сам уже убедился.
Компьютер — устройство, разработанное для ускорения и автоматизации человеческих ошибок.