Ошибка при вызове метода контекста получитьмакет недопустимое значение параметра параметр номер 1

Как ПолучитьМакет(«Макет») в документе?

Я
   LivingStar

03.09.13 — 10:53

При нажитии на кнопку в форме документа вылетает ошибка, —

{Документ.РасчетПремииМенеджера.Форма.ФормаДокумента(62)}: Ошибка при вызове метода контекста (ПолучитьМакет)

    Макет = ПолучитьМакет(«Макет»);

по причине:

Недопустимое значение параметра (параметр номер ‘1’)

У документа есть Макет, — «Макет» , почему ругается на него?

Процедура РасчетПремииНажатие(Элемент)

    // Вставить содержимое обработчика.

    Если НЕ ПолучитьДокументПланирования() тогда возврат; конецесли;

    //ЭтаФорма.ЭлементыФормы.Инд.Видимость=Истина;

    //Инд=0;

    Состояние(«Идет расчет премии менеджера, подождите …»);

    мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение;

    
    ТабДокумент = Новый ТабличныйДокумент;

    Макет = ПолучитьМакет(«Макет»);

   rull9ss

1 — 03.09.13 — 10:54

попробуй полное имя указать

«Документы.ТвойДокумент.Макеты.ТвойМакет»

   Wobland

2 — 03.09.13 — 10:56

объ=РеквизитФормыВЗначение(«Объект»);

    Макет=объ.ПолучитьМакет(«Макет»);

   Error pro

3 — 03.09.13 — 10:57

(0) УФ?

   LivingStar

4 — 03.09.13 — 10:57

(1) ругается что нет поля объекта «Макет»

   LivingStar

5 — 03.09.13 — 10:57

(2) только так??? спасибо, сейчас попробую, думал проще….

   LivingStar

6 — 03.09.13 — 10:57

(3) Обычные формы

   Wobland

7 — 03.09.13 — 10:58

(6) нет макета

   Error pro

8 — 03.09.13 — 10:58

(6) Скопируй старый макет в новый. Попробуй изменить наименование.

   LivingStar

9 — 03.09.13 — 11:00

(2) Процедура или функция с указанным именем не определена (РеквизитФормыВЗначение)

   LivingStar

10 — 03.09.13 — 11:01

(8) Хотите сказать что так должно работать

Макет = ПолучитьМакет(«Макет»);

это глюки?

   rull9ss

11 — 03.09.13 — 11:01

(9) ну так откуда в обычных формах РеквизитФормыВЗначение??

   LivingStar

12 — 03.09.13 — 11:01

(11) Понял!

(2) Значит это не подойдет!!!

Как в обычных формах это работает, получение доступа к макету документа.

   Wobland

13 — 03.09.13 — 11:03

(10) ЭтотОбъект?

   Cashtane

14 — 03.09.13 — 11:03

Макет = ЭтотОбъект.ПолучитьМакет(«Накладная»);

   LivingStar

15 — 03.09.13 — 11:07

(13) Это выполняется в форме документа

   Cashtane

16 — 03.09.13 — 11:07

(15) Вот поэтому и ЭтотОбъект.

   Cashtane

17 — 03.09.13 — 11:08

Если бы был в модуле объекта мог бы просто вызвать: ПолучитьМакет(«Накладная»)

   LivingStar

18 — 03.09.13 — 11:08

в тестовой базе смотрю, на эту строку не ругается, стало ругаться в рабочей (((

   LivingStar

19 — 03.09.13 — 11:09

Вот в тестовой базе в модуле формы документа, прошло и не сругалось!!!

    Макет = ПолучитьМакет(«Макет»);

   Infsams654

20 — 03.09.13 — 11:13

А это еще что за хр-нь ?

мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение;

Элемент формы связан по данным с реквизитом объекта/ТЧ объекта, либо с реквизитом формы. Так, что, надо сразу к ним и обращаться. А через ЭлементыФормы — это для несмышленых

   LivingStar

21 — 03.09.13 — 11:14

(17) Ошибка при вызове метода контекста (ПолучитьМакет)

    Макет = ЭтотОбъект.ПолучитьМакет(«Макет»);

   Wobland

22 — 03.09.13 — 11:14

(21) назови его «77» уже

   LivingStar

23 — 03.09.13 — 11:16

(21) Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально

Сейчас в тестовой базе работает, а в рабочей стал ругаться на макет

(22) А почему нужно его переименовывать, в тестовой работает все без изменений, а тут что случилось?

   LivingStar

24 — 03.09.13 — 11:16

(20) Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально

   Wobland

25 — 03.09.13 — 11:16

(23) это называется «танцы с бубном». отсекаются проблемы разной раскладки

   Cashtane

26 — 03.09.13 — 11:18

(25) Видимо действительно этот случай. И не более.

   palpetrovich

27 — 03.09.13 — 11:20

(24) в этом документе точно есть Макет «Макет»?

   Error pro

28 — 03.09.13 — 11:23

(24) я тебе еще в (8) предложил переименовать макет. Тяжело сделать?

   LivingStar

29 — 03.09.13 — 11:23

(27) Да конечно, говорю в копии базы все работает, в рабочей что то слетело.

Изменил название макета на «РасчетПМ»

Макет = ЭтотОбъект.ПолучитьМакет(«РасчетПМ»);

стало работать…выполняется…Ошибки уже на макете не выдает!

   LivingStar

30 — 03.09.13 — 11:23

(28) переименовал!

   LivingStar

31 — 03.09.13 — 11:24

Спасибо всем!

   LivingStar

32 — 03.09.13 — 13:13

То есть это к примеру залез админ в 1с, исправил букву в другой раскладке в названии макета «Макет» и сохранил? Или это реально глюк такой 1с есть???

   LivingStar

33 — 03.09.13 — 13:24

SABOTAGE ??!

   hhhh

34 — 03.09.13 — 13:30

(32) наверно у формы слетело свойство «Данные». А потом кто-то кофе пил на твоем рабочем месте, махнул рукавом, зацепил клавиатуру, свойство и заполнилось как надо.

   МихаилМ

35 — 03.09.13 — 13:47

ОбработкаОбъект.ПолучитьМакет(

   LivingStar

36 — 03.09.13 — 13:52

(34) Непонятно как это бы так было, саботаж если только говорю!!!

(35) Макет документа, при чем тут обработка???

пробовал и так:

Макет = ПолучитьМакет(«Мекет»);

и так

Макет = ЭтотОбъект.ПолучитьМакет(«Макет»);

не получалось….пока не изменил название макета…

  

МихаилМ

37 — 03.09.13 — 14:01

(36)

извиняюсь. этотОбъект

1C. «Недопустимое значение параметра» при вызове макета в расширении

Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:

{ЗаявлениеПоступающегоРасширение Документ.ЗаявлениеПоступающего.МодульМенеджера(176)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)

Код, вызывающий ошибку:

Варианты решения:

1. Добавить функцию, выполняемую на сервере, которая вызовет добавленный макет из документа:

&НаСервере

Функция ПолучитьМакетЗаявленияИзРасширения()

    Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);

    Возврат Макет;

КонецФункции

А затем из заменяемой процедуры вызвать эту функцию:

(как оказалось этот способ не нужен. Причину читайте ниже)

2. Другой вариант — перенести макеты в общие и следующей командой вызвать (получить) макет из «Общие макеты»:

Макет = ПолучитьОбщийМакет («Расш1_МакетЗаявлениеПоступающего»);

——
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:

При этом, если в расширении добавлено несколько макетов к документу, то «заглушки» достаточно только одной.

Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.

Приложение

Здравствуйте, Лидия!
Это ошибка разработчиков в обновлении 3.0.109. Что неприятно — она еще не зарегистрирована, поэтому нужно написать на горячую линию 1С о ней и дожидаться исправления в ближайшем обновлении.

Работа над вашим вопросом была проведена с анализом программного кода.
Вы не указали свою платформу, но судя по совместимости 8.3.16 — это, скорее всего, 8.3.20.
Я все тестируемые действия выполняла на платформе 8.3.20.1590

Первоначально до обновления Уведомление о контролируемых иностранных компаниях формировалось, проверялось и выгружалось нормально.

0 / 0 / 0

Регистрация: 27.05.2012

Сообщений: 31

1

31.08.2012, 12:54. Показов 22986. Ответов 3


Студворк — интернет-сервис помощи студентам

Здраствуйте я новенький в среде 1 с поэтому могу задавать глупые вопросы.При программировании в модуле был написан код доступа к отчёту
1 с предприятие 8.1
Макет = Отчеты.Клиенты.ПолучитьМакет(«Макет»);
отладка проходит нормально ошибок не выдаёт, однако после того как я вхожу в режим 1с предприятие при попытке сформировать отчёт появляется ошибка (ошибка при вызове контекста (Получить Макет).Недопустимое значение параметра (параметр номер 1)
пробовал поменять параметр Макет на параметр клиенты, но без результатно.



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

31.08.2012, 14:57

2

Битый параметр внутри макета



0



0 / 0 / 0

Регистрация: 27.05.2012

Сообщений: 31

31.08.2012, 15:41

 [ТС]

3

Тоесть, это значит что макет к которому я пытаюсь присоедениться содержит ошибку.



0



2954 / 1766 / 82

Регистрация: 03.11.2011

Сообщений: 8,280

31.08.2012, 18:06

4

не значит. Присоединяемое должно соответствовать



0



Я сделал форму, добавил реквизит пользователей из справочника пользователей и создал поле выбора с типом справочника пользователей. Мне нужно получить значение этого реквизита в модуле формы, но в строке, где я его получаю, выходит ошибка:

Ошибка при вызове метода контекста (РеквизитФормыВЗначение)
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(201)}:РеквизитПользователя = РеквизитФормыВЗначение("Пользователь"); //
{Отчеты Отчет.НовыйОтчетПрофилей.Форма.ФормаОтчета.Форма(230)}:ТабДокумент                          = СформироватьМакетНаСервере();

по причине:
Недопустимое значение параметра (параметр номер '1')

Как это можно исправить?

Вот сам код:

&НаСервере
Функция СформироватьМакетНаСервере()
    
    ОтчетОбъект = РеквизитФормыВЗначение("Отчет"); 
    РеквизитПользователя = РеквизитФормыВЗначение("Пользователь"); //
    
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    
    МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных,  ОтчетОбъект.КомпоновщикНастроек.Настройки, , ,  Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
    
    ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
    
    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    
    ТаблицаЗначений = Новый ТаблицаЗначений;
    ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); 
        
    ТабДокумент = Новый ТабличныйДокумент;
    
    ТабДокумент.Очистить();
    Макет = ОтчетОбъект.ПолучитьМакет("Макет");
                                            
    Возврат ТабДокумент;
    
КонецФункции

&НаКлиенте
Процедура СформироватьМакет(Команда)
    
    ТабДокумент                         = СформироватьМакетНаСервере();    
    КоллекцияПечатныхФорм               = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
    ПечатнаяФорма                       = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
    ПечатнаяФорма.СинонимМакета         = "Макет";
    ПечатнаяФорма.ТабличныйДокумент     = ТабДокумент;
    ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
    
    ОбластиОбъектов = Новый СписокЗначений;
    УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
    
КонецПроцедуры

Вот форма со свойствами поля:

И свойства реквизита:

  • Ошибка при вызове метода контекста получитьизвременногохранилища 1с
  • Ошибка при вызове метода контекста просклонять ошибка внешней компоненты
  • Ошибка при вызове метода контекста получитьcomобъект
  • Ошибка при вызове метода контекста произвестичтениеданных
  • Ошибка при вызове метода контекста получить ссылку