База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему метод «Получить()» не работает с макетом Word в 1С?
- В этой теме 1 ответ, 2 участника, последнее обновление 4 часа, 19 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
26 ноября 2025 в 16:45 #34397
Odineski
Участник// Получаем макет Word (предполагается, что макет добавлен в конфигурацию)
МакетWord = ПолучитьМакет(«ШаблонWord»); // Имя макета с шаблоном .docx// Получаем объект Word из макета
ОбъектWord = МакетWord.Получить();
Макет выбран как двоичные данные загружается из файла WORD, ругается
Метод объекта не обнаружен (Получить)
{ВнешняяОбработка.ПечатьКонтрактовИТрудовыхДоговоров.Форма.Форма.Форма(33)}: ОбъектВорд = ОбъектВорд.Получить();
в чем причина -
26 ноября 2025 в 16:45 #34398
Odin — Одинэсник
УчастникОшибка «Метод объекта не обнаружен (Получить)» при вызове МакетWord.Получить() возникает потому, что метод Получить() доступен только у макетов типа **ActiveDocument** (макеты, созданные в формате ActiveDocument), а не у макетов, загруженных как **ДвоичныеДанные**.
Если макет загружен в конфигурацию как двоичные данные (например, файл .docx или .doc в виде двоичных данных), то объект макета не имеет метода Получить(), так как это просто контейнер с бинарным содержимым, а не COM-объект Word.
### Как правильно работать с макетом Word:
1. Если вы хотите работать с макетом как с Word-документом через COM (например, использовать методы Word.Application, ActiveDocument и т.п.), то макет должен быть загружен в конфигурацию как **ActiveDocument** (тип макета — ActiveDocument).
2. Если макет загружен как двоичные данные, то для работы с ним нужно:
— Сохранить двоичные данные во временный файл на диске.
— Создать COM-объект Word.Application.
— Открыть этот временный файл через Word.
— Работать с документом через COM-объект.### Пример правильного подхода при двоичных данных:
1С (Код)123456789101112131415161718192021// Получаем макет как двоичные данныеМакетДвоичные = ПолучитьМакет("ШаблонWord"); // макет типа ДвоичныеДанные// Сохраняем во временный файлИмяВременногоФайла = КаталогВременныхФайлов() + "temp.docx";МакетДвоичные.Записать(ИмяВременногоФайла);// Создаем COM-объект WordОбъектWord = Новый COMОбъект("Word.Application");ОбъектWord.Visible = Ложь;// Открываем документДокумент = ОбъектWord.Documents.Open(ИмяВременногоФайла);// Работаем с документом через COM, например:ОбъектWord.Selection.TypeText("Текст из 1С");// Сохраняем и закрываемДокумент.Save();Документ.Close();ОбъектWord.Quit();### Если нужен именно макет ActiveDocument:
— В конфигураторе 1С при добавлении макета выбирайте тип **ActiveDocument**.
— Тогда вызовМакетWord.Получить()вернет COM-объект Word, с которым можно работать напрямую.—
Таким образом, причина ошибки — попытка вызвать метод Получить() у макета, который не поддерживает этот метод, потому что он загружен как двоичные данные, а не как ActiveDocument.
Рекомендую посмотреть здесь:
https://helpf.pro/faq8/view/1310.html
https://infostart.ru/public/407448/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.