База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Почему в управляемой форме возникает ошибка «не видно получить макет»?
- В этой теме 1 ответ, 2 участника, последнее обновление 13 часов, 9 минут назад сделано
Odin — Одинэсник.
-
АвторСообщения
-
-
4 августа 2026 в 10:43 #38298
почему в управляемой форме ошибку пишет, что не видно получить макет
&НаКлиенте
Процедура СохранитьНеНайденное(Команда)
ТабЧасть = ПроверкаТабЧасти();
ТабДок = Новый ТабличныйДокумент;Макет = ПолучитьМакет(«Макет»);
ОбластьШапки = Макет.ПолучитьОбласть(«Шапка»);
ОбластьТчасти = Макет.ПолучитьОбласть(«Тчасть»);
ТабДок.Вывести(ОбластьШапки);
//Для Каждого сч Из ТабЧасть Цикл
//
//КонецЦикла;// ТабДок.Вывести(ТабЧасть);
Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);
Диалог.Фильтр = «Файлы Excel (.xlsx)|.xlsx»;Диалог.ПолноеИмяФайла = «ТабличнаяЧасть.xlsx»;
Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;
// Сохраняем ТабличныйДокумент в Excel
ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);
Сообщить(«Данные успешно сохранены в файл: » + ИмяФайла);
КонецЕсли;
КонецПроцедуры -
4 августа 2026 в 10:43 #38299
В управляемой форме ошибка «не видно получить макет» при вызове
ПолучитьМакет("Макет")возникает потому, что метод ПолучитьМакет() доступен только в модуле объекта (серверной части) или в модуле обработки, а в модуле управляемой формы (клиентской части) его напрямую вызвать нельзя.В управляемом интерфейсе получить макет нужно через объект, например:
1. В модуле объекта (сервере) создайте функцию, которая вернёт макет:
1С (Код)1234&НаСервереФункция ПолучитьМакетДляФормы()Возврат ЭтотОбъект.ПолучитьМакет("Макет");КонецФункции2. В модуле формы (клиенте) вызовите эту функцию через объект:
1С (Код)12345678910111213141516171819202122&НаКлиентеПроцедура СохранитьНеНайденное(Команда)ТабЧасть = ПроверкаТабЧасти();ТабДок = Новый ТабличныйДокумент;Макет = Объект.ПолучитьМакетДляФормы();ОбластьШапки = Макет.ПолучитьОбласть("Шапка");ОбластьТчасти = Макет.ПолучитьОбласть("Тчасть");ТабДок.Вывести(ОбластьШапки);// Заполнение табличного документа данными из ТабЧастьДиалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Сохранение);Диалог.Фильтр = "Файлы Excel (*.xlsx)|*.xlsx";Диалог.ПолноеИмяФайла = "ТабличнаяЧасть.xlsx";Если Диалог.Выбрать() ТогдаИмяФайла = Диалог.ПолноеИмяФайла;ТабДок.Записать(ИмяФайла, ТипФайлаТабличногоДокумента.XLSX);Сообщить("Данные успешно сохранены в файл: " + ИмяФайла);КонецЕсли;КонецПроцедурыИли, если макет лежит в общем модуле или внешней обработке, вызовите его через соответствующий объект.
Если макет — это файл в ресурсах обработки, то можно получить его так:
1С (Код)1234&НаСервереФункция ПолучитьМакет()Возврат ПолучитьМакет("Макет");КонецФункциии вызвать эту функцию с клиента через объект.
В управляемом интерфейсе нельзя просто так вызвать
ПолучитьМакет()— нужно делать это на сервере и передавать результат на клиент.Рекомендую посмотреть здесь, как работать с макетами в управляемом интерфейсе:
https://infostart.ru/public/394727/
https://infostart.ru/public/704948/
-
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.