Как ПолучитьМакет(«Макет») в документе? |
Я |
03.09.13 — 10:53
При нажитии на кнопку в форме документа вылетает ошибка, —
{Документ.РасчетПремииМенеджера.Форма.ФормаДокумента(62)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = ПолучитьМакет(«Макет»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
У документа есть Макет, — «Макет» , почему ругается на него?
Процедура РасчетПремииНажатие(Элемент)
// Вставить содержимое обработчика.
Если НЕ ПолучитьДокументПланирования() тогда возврат; конецесли;
//ЭтаФорма.ЭлементыФормы.Инд.Видимость=Истина;
//Инд=0;
Состояние(«Идет расчет премии менеджера, подождите …»);
мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение;
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет(«Макет»);
1 — 03.09.13 — 10:54
попробуй полное имя указать
«Документы.ТвойДокумент.Макеты.ТвойМакет»
2 — 03.09.13 — 10:56
объ=РеквизитФормыВЗначение(«Объект»);
Макет=объ.ПолучитьМакет(«Макет»);
3 — 03.09.13 — 10:57
(0) УФ?
4 — 03.09.13 — 10:57
(1) ругается что нет поля объекта «Макет»
5 — 03.09.13 — 10:57
(2) только так??? спасибо, сейчас попробую, думал проще….
6 — 03.09.13 — 10:57
(3) Обычные формы
7 — 03.09.13 — 10:58
(6) нет макета
8 — 03.09.13 — 10:58
(6) Скопируй старый макет в новый. Попробуй изменить наименование.
9 — 03.09.13 — 11:00
(2) Процедура или функция с указанным именем не определена (РеквизитФормыВЗначение)
10 — 03.09.13 — 11:01
(8) Хотите сказать что так должно работать
Макет = ПолучитьМакет(«Макет»);
это глюки?
11 — 03.09.13 — 11:01
(9) ну так откуда в обычных формах РеквизитФормыВЗначение??
12 — 03.09.13 — 11:01
(11) Понял!
(2) Значит это не подойдет!!!
Как в обычных формах это работает, получение доступа к макету документа.
13 — 03.09.13 — 11:03
(10) ЭтотОбъект?
14 — 03.09.13 — 11:03
Макет = ЭтотОбъект.ПолучитьМакет(«Накладная»);
15 — 03.09.13 — 11:07
(13) Это выполняется в форме документа
16 — 03.09.13 — 11:07
(15) Вот поэтому и ЭтотОбъект.
17 — 03.09.13 — 11:08
Если бы был в модуле объекта мог бы просто вызвать: ПолучитьМакет(«Накладная»)
18 — 03.09.13 — 11:08
в тестовой базе смотрю, на эту строку не ругается, стало ругаться в рабочей (((
19 — 03.09.13 — 11:09
Вот в тестовой базе в модуле формы документа, прошло и не сругалось!!!
Макет = ПолучитьМакет(«Макет»);
20 — 03.09.13 — 11:13
А это еще что за хр-нь ?
мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение;
Элемент формы связан по данным с реквизитом объекта/ТЧ объекта, либо с реквизитом формы. Так, что, надо сразу к ним и обращаться. А через ЭлементыФормы — это для несмышленых
21 — 03.09.13 — 11:14
(17) Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = ЭтотОбъект.ПолучитьМакет(«Макет»);
22 — 03.09.13 — 11:14
(21) назови его «77» уже
23 — 03.09.13 — 11:16
(21) Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально
Сейчас в тестовой базе работает, а в рабочей стал ругаться на макет
(22) А почему нужно его переименовывать, в тестовой работает все без изменений, а тут что случилось?
24 — 03.09.13 — 11:16
(20) Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально
25 — 03.09.13 — 11:16
(23) это называется «танцы с бубном». отсекаются проблемы разной раскладки
26 — 03.09.13 — 11:18
(25) Видимо действительно этот случай. И не более.
27 — 03.09.13 — 11:20
(24) в этом документе точно есть Макет «Макет»?
28 — 03.09.13 — 11:23
(24) я тебе еще в (8) предложил переименовать макет. Тяжело сделать?
29 — 03.09.13 — 11:23
(27) Да конечно, говорю в копии базы все работает, в рабочей что то слетело.
Изменил название макета на «РасчетПМ»
Макет = ЭтотОбъект.ПолучитьМакет(«РасчетПМ»);
стало работать…выполняется…Ошибки уже на макете не выдает!
30 — 03.09.13 — 11:23
(28) переименовал!
31 — 03.09.13 — 11:24
Спасибо всем!
32 — 03.09.13 — 13:13
То есть это к примеру залез админ в 1с, исправил букву в другой раскладке в названии макета «Макет» и сохранил? Или это реально глюк такой 1с есть???
33 — 03.09.13 — 13:24
SABOTAGE ??!
34 — 03.09.13 — 13:30
(32) наверно у формы слетело свойство «Данные». А потом кто-то кофе пил на твоем рабочем месте, махнул рукавом, зацепил клавиатуру, свойство и заполнилось как надо.
35 — 03.09.13 — 13:47
ОбработкаОбъект.ПолучитьМакет(
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 с поэтому могу задавать глупые вопросы.При программировании в модуле был написан код доступа к отчёту
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')
Как это можно исправить?
Вот сам код:
&НаСервере
Функция СформироватьМакетНаСервере()
ОтчетОбъект = РеквизитФормыВЗначение("Отчет");
РеквизитПользователя = РеквизитФормыВЗначение("Пользователь"); //
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(ОтчетОбъект.СхемаКомпоновкиДанных, ОтчетОбъект.КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ТабДокумент = Новый ТабличныйДокумент;
ТабДокумент.Очистить();
Макет = ОтчетОбъект.ПолучитьМакет("Макет");
Возврат ТабДокумент;
КонецФункции
&НаКлиенте
Процедура СформироватьМакет(Команда)
ТабДокумент = СформироватьМакетНаСервере();
КоллекцияПечатныхФорм = УправлениеПечатьюКлиент.НоваяКоллекцияПечатныхФорм("Макет");
ПечатнаяФорма = УправлениеПечатьюКлиент.ОписаниеПечатнойФормы(КоллекцияПечатныхФорм, "Макет");
ПечатнаяФорма.СинонимМакета = "Макет";
ПечатнаяФорма.ТабличныйДокумент = ТабДокумент;
ПечатнаяФорма.ИмяФайлаПечатнойФормы = "Макет";
ОбластиОбъектов = Новый СписокЗначений;
УправлениеПечатьюКлиент.ПечатьДокументов(КоллекцияПечатныхФорм, ОбластиОбъектов);
КонецПроцедуры
Вот форма со свойствами поля:
И свойства реквизита: