1C. «Недопустимое значение параметра» при вызове макета в расширении
Дано: 1С (в данном примере конфигурация 1С:Университет ПРОФ), платформа 8.3.10. Создано расширение, в котором к документу добавлен новый макет. В модуле менеджера документа есть процедура, формирующая печатную форму на базе макета. Необходимо было заменить данную процедуру (при помощи директивы расширения «&Вместо») и заменить вызов встроенного макета на наш, добавленный в расширение.
Проблема: при вызове добавленного макета в момент его печати в режиме «1С:Предприятие» возникала ошибка при получении макета:
{ЗаявлениеПоступающегоРасширение Документ.ЗаявлениеПоступающего.МодульМенеджера(176)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
Код, вызывающий ошибку:
Варианты решения:
1. Добавить функцию, выполняемую на сервере, которая вызовет добавленный макет из документа:
&НаСервере
Функция ПолучитьМакетЗаявленияИзРасширения()
Макет = Документы.ЗаявлениеПоступающего.ПолучитьМакет («Расш1_МакетЗаявлениеПоступающего»);
Возврат Макет;
КонецФункции
А затем из заменяемой процедуры вызвать эту функцию:
(как оказалось этот способ не нужен. Причину читайте ниже)
2. Другой вариант — перенести макеты в общие и следующей командой вызвать (получить) макет из «Общие макеты»:
Макет = ПолучитьОбщийМакет («Расш1_МакетЗаявлениеПоступающего»);
——
Видимо это всё-таки какой-то глюк платформы (протестировано на 8.3.10.2252 и 8.3.10.2299), но если просто добавить пустой макет в общие макеты в расширении, то команда, ранее вызывавшая ошибку (ПолучитьМакет из макета документа без допфункций на сервере), начинает нормально работать. При удалении пустого общего макета, команда вызова макета из документа снова вызывает ошибку (даже если вынесена в функцию на сервере, как показано в способе 1).
Т.е. если всё-таки хочется сделать макеты нормально в документе (ожидая, что когда-нибудь этот глюк исправят), то нужно сделать макет-заглушку в общих макетах. Например:
При этом, если в расширении добавлено несколько макетов к документу, то «заглушки» достаточно только одной.
Если Вам понравилась статья, пожалуйста, поставьте лайк, сделайте репост или оставьте комментарий. Если у Вас есть какие-либо замечания, также пишите комментарии.
LivingStar
03.09.13
✎
10:53
При нажитии на кнопку в форме документа вылетает ошибка, —
{Документ.РасчетПремииМенеджера.Форма.ФормаДокумента(62)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = ПолучитьМакет(«Макет»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
У документа есть Макет, — «Макет» , почему ругается на него?
Процедура РасчетПремииНажатие(Элемент)
// Вставить содержимое обработчика.
Если НЕ ПолучитьДокументПланирования() тогда возврат; конецесли;
//ЭтаФорма.ЭлементыФормы.Инд.Видимость=Истина;
//Инд=0;
Состояние(«Идет расчет премии менеджера, подождите …»);
мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение;
ТабДокумент = Новый ТабличныйДокумент;
Макет = ПолучитьМакет(«Макет»);
rull9ss
03.09.13
✎
10:54
попробуй полное имя указать
«Документы.ТвойДокумент.Макеты.ТвойМакет»
Wobland
03.09.13
✎
10:56
объ=РеквизитФормыВЗначение(«Объект»);
Макет=объ.ПолучитьМакет(«Макет»);
Error pro
03.09.13
✎
10:57
(0) УФ?
LivingStar
03.09.13
✎
10:57
(1) ругается что нет поля объекта «Макет»
LivingStar
03.09.13
✎
10:57
(2) только так??? спасибо, сейчас попробую, думал проще….
LivingStar
03.09.13
✎
10:57
(3) Обычные формы
Wobland
03.09.13
✎
10:58
(6) нет макета
Error pro
03.09.13
✎
10:58
(6) Скопируй старый макет в новый. Попробуй изменить наименование.
LivingStar
03.09.13
✎
11:00
(2) Процедура или функция с указанным именем не определена (РеквизитФормыВЗначение)
LivingStar
03.09.13
✎
11:01
(8) Хотите сказать что так должно работать
Макет = ПолучитьМакет(«Макет»);
это глюки?
rull9ss
03.09.13
✎
11:01
(9) ну так откуда в обычных формах РеквизитФормыВЗначение??
LivingStar
03.09.13
✎
11:01
(11) Понял!
(2) Значит это не подойдет!!!
Как в обычных формах это работает, получение доступа к макету документа.
Wobland
03.09.13
✎
11:03
(10) ЭтотОбъект?
Cashtane
03.09.13
✎
11:03
Макет = ЭтотОбъект.ПолучитьМакет(«Накладная»);
LivingStar
03.09.13
✎
11:07
(13) Это выполняется в форме документа
Cashtane
03.09.13
✎
11:07
(15) Вот поэтому и ЭтотОбъект.
Cashtane
03.09.13
✎
11:08
Если бы был в модуле объекта мог бы просто вызвать: ПолучитьМакет(«Накладная»)
LivingStar
03.09.13
✎
11:08
в тестовой базе смотрю, на эту строку не ругается, стало ругаться в рабочей (((
LivingStar
03.09.13
✎
11:09
Вот в тестовой базе в модуле формы документа, прошло и не сругалось!!!
Макет = ПолучитьМакет(«Макет»);
Infsams654
03.09.13
✎
11:13
А это еще что за хр-нь ?
мен = ЭтаФорма.ЭлементыФормы.Менеджер.Значение;
Элемент формы связан по данным с реквизитом объекта/ТЧ объекта, либо с реквизитом формы. Так, что, надо сразу к ним и обращаться. А через ЭлементыФормы — это для несмышленых
LivingStar
03.09.13
✎
11:14
(17) Ошибка при вызове метода контекста (ПолучитьМакет)
Макет = ЭтотОбъект.ПолучитьМакет(«Макет»);
Wobland
03.09.13
✎
11:14
(21) назови его «77» уже
LivingStar
03.09.13
✎
11:16
(21) Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально
Сейчас в тестовой базе работает, а в рабочей стал ругаться на макет
(22) А почему нужно его переименовывать, в тестовой работает все без изменений, а тут что случилось?
LivingStar
03.09.13
✎
11:16
(20) Я первый раз этот код и документ вижу, и удивляюсь что он все время работал нормально
Wobland
03.09.13
✎
11:16
(23) это называется «танцы с бубном». отсекаются проблемы разной раскладки
Cashtane
03.09.13
✎
11:18
(25) Видимо действительно этот случай. И не более.
palpetrovich
03.09.13
✎
11:20
(24) в этом документе точно есть Макет «Макет»?
Error pro
03.09.13
✎
11:23
(24) я тебе еще в (8) предложил переименовать макет. Тяжело сделать?
LivingStar
03.09.13
✎
11:23
(27) Да конечно, говорю в копии базы все работает, в рабочей что то слетело.
Изменил название макета на «РасчетПМ»
Макет = ЭтотОбъект.ПолучитьМакет(«РасчетПМ»);
стало работать…выполняется…Ошибки уже на макете не выдает!
LivingStar
03.09.13
✎
11:23
(28) переименовал!
LivingStar
03.09.13
✎
11:24
Спасибо всем!
LivingStar
03.09.13
✎
13:13
То есть это к примеру залез админ в 1с, исправил букву в другой раскладке в названии макета «Макет» и сохранил? Или это реально глюк такой 1с есть???
LivingStar
03.09.13
✎
13:24
SABOTAGE ??!
hhhh
03.09.13
✎
13:30
(32) наверно у формы слетело свойство «Данные». А потом кто-то кофе пил на твоем рабочем месте, махнул рукавом, зацепил клавиатуру, свойство и заполнилось как надо.
МихаилМ
03.09.13
✎
13:47
ОбработкаОбъект.ПолучитьМакет(
LivingStar
03.09.13
✎
13:52
(34) Непонятно как это бы так было, саботаж если только говорю!!!
(35) Макет документа, при чем тут обработка???
пробовал и так:
Макет = ПолучитьМакет(«Мекет»);
и так
Макет = ЭтотОбъект.ПолучитьМакет(«Макет»);
не получалось….пока не изменил название макета…
МихаилМ
03.09.13
✎
14:01
(36)
извиняюсь. этотОбъект
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
|
1 |
|
13.12.2017, 12:05. Показов 18062. Ответов 10
Добрый день, вот пытаюсь напечатать документ MSWorld в обработке, делаю по примеру, вот так ОбработкаОбъект = РеквизитФормыВЗначение(«Объект»); MSWord = СсылкаМакет.Получить();// И вот тут выдает ошибку Ошибка при вызове метода контекста (Получить) Подскажите плз где ошибка? http://programmist1s.ru/pechat… 8-3-i-8-2/ — вот брал отсюда Добавлено через 22 минуты
0 |
434 / 305 / 92 Регистрация: 28.05.2014 Сообщений: 1,247 |
|
13.12.2017, 13:53 |
2 |
Владислаучык, в той же статье автор пишет ещё следующее: Скорее всего проблема в ворде или в правах системы. Он корректно установлен? Попробуйте другую версию Ворда. Ну или на крайний случай можно проделать это на другой машине.
1 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
|
13.12.2017, 14:09 [ТС] |
3 |
0 |
Владислаучык 3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
||||||||
13.12.2017, 16:52 [ТС] |
4 |
|||||||
Phil, Да, такой тип Добавлено через 2 часа 42 минуты
Так макет нельзя вернуть, а если на сервере сделать сразу, то тоже ошибка отсутствует отображение типа для ActiveDocument
0 |
polax 1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
||||
14.12.2017, 10:25 |
5 |
|||
Владислаучык, Вот рабочий код. Неделю назад делал ВПФ с макетом в Ворде
0 |
3 / 3 / 7 Регистрация: 21.03.2013 Сообщений: 639 |
|
15.12.2017, 15:15 [ТС] |
6 |
polax, Приложение = Новый ComObject («Word.Application»); — вот тут ошибка, Ошибка при вызове конструктора (ComObject)
0 |
1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
|
15.12.2017, 18:19 |
7 |
Владислаучык, Либо делаете не на сервере, либо на компьютере не установлен Ворд
1 |
1231 / 763 / 218 Регистрация: 22.04.2013 Сообщений: 5,589 Записей в блоге: 1 |
|
15.12.2017, 21:17 |
8 |
Либо делаете не на сервере я путаю? может наоборот — делаете на сервере?
1 |
1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
|
15.12.2017, 22:24 |
9 |
РешениеВладислаучык, Yulunga, не то что ошибся, а высказал неправильно. Вот здесь описано http://1clancer.ru/article/oso… ie_8.2_847
1 |
0 / 0 / 0 Регистрация: 06.06.2022 Сообщений: 2 |
|
15.06.2022, 11:55 |
10 |
polax, У вас есть код для Exel макета active document?
0 |
1965 / 1350 / 480 Регистрация: 16.01.2015 Сообщений: 5,853 |
|
15.06.2022, 15:54 |
11 |
Dfolt, Вот из моих закладок по которым делаю подобное
0 |
Lavr |
|
||
---|---|---|---|
|
Здравствуйте. Импортировал word-документ в справочник «Филиал», в макет как Active document. Есть форма списка и форма элемента списка, сделал кнопку на форме элемента, при нажатии вызов процедуры: &НаКлиенте Макет = Справочники.Филиал.ПолучитьМакет(«Макет»).Получить();Документ = Макет.Application.Documents(1);Документ.Activate();Макет.Application.Visible = Истина;Макет.Activate(); Надо чтобы документ из макета открывался в ворде у пользователя, просто открывался без заполнения какими-либо данными из формы. Подскажите пожалуйста, добрые специалисты, как это правильно сделать? Может вообще по другому можно, как-то проще? Благодарю. |
Yandex |
|
||
---|---|---|---|
|
IBReiter |
|
||
---|---|---|---|
|
Код 1C v 8.3
|
Lavr |
|
||
---|---|---|---|
|
В жиме толстого клиента все работает, а в web-интерфейсе ошибка: Ошибка при вызове метода контекста (Получить) Через web-интерфейс этот метод должен работать? |
IBReiter |
|
||
---|---|---|---|
|
Проверил на платформе 8.3.6.2152 и в браузере хром — все ок, работает алоритм. У вас конфигурация вообще какая? |
Lavr |
|
||
---|---|---|---|
|
Платформа 8.2 Конфигурация УП, с нуля пишу, очень простая с 7-ю справочниками. |
IBReiter |
|
||
---|---|---|---|
|
Режимы совместимости? как вариант.. Ну а так, попробуйте на 8.3 ещё |
Lavr |
|
||
---|---|---|---|
|
Не работает в совместимости. Оставлю тогда так: &НаКлиентеПроцедура СлужебнаяЗаявка(Команда) Word = Новый COMОбъект («Word.Application»);Word.Documents.Open («\\192.168.47.130\wu\data\WU,_Фамилия_Имя,_Филиал_г._Караганда.doc»);Документ = Word.Application.Documents(1);Документ.Application.Visible = Истина;Документ.Activate();КонецПроцедуры |
IBReiter |
|
||
---|---|---|---|
|
И на 8.3 не работает? Вам совместимость нужна |
Подсказка:Вы можете добавить любую страничку в Социальные закладки щелкнув по значку соцсетей (в вверху) |
Показывать по
10
20
40
сообщений
Новая тема
Ответить
Snz
Дата регистрации: 05.02.2009
Сообщений: 18
«Добрый день!<br> <br>Такая проблема: после обновления до версии 2.0.54.11 (типовая конф) возникает «Ошибка при вызове метода контекста (ПолучитьМакет)» в окне «Регистрация земленных участков».<br>Помогите разобраться, пожалуйста.<br> <br>{РегистрСведений.РегистрацияЗемельныхУчастков.Форма.Регистрация.Форма(68)}: Ошибка при вызове метода контекста (ПолучитьМакет)<br>Макет = Отчеты.РегламентированныйОтчетЗемельныйНалог.ПолучитьМакет(«Списки2011Кв1″);<br>по причине:Недопустимое значение параметра (параметр номер ‘1’)<br> <br>Платформа: 8.2.19.80»
uinny
Дата регистрации: 12.01.2008
Сообщений: 4814
Видимо, дело в том, что в отчете нет макета с таким наименованием. Есть макет «СпискиВыборка2011Кв1».
Денис (САМАРА)
Дата регистрации: 09.04.2008
Сообщений: 8351
DomninYV
Дата регистрации: 14.01.2014
Сообщений: 4
«У меня БП 3.0.28.13 но проблема та же.<br>Я решил так.<br>Открыл конфигуратор. <br>Конфигурация-Настройка поддержки.<br>Включить возможность изменения.<br>Настройка правил поддержки.<br>Переключатели 2 шт. Объект поставщика редактируется с сохранением поддержки.<br>ОК.<br>После сохранения открыть регистр сведений.Регистрация зем.участков.Формы.ФормаЗаписи.Модуль<br>Открыть процедуру.<br>»Процедура ЗагрузитьКодыКБК()<br> ИмяОбласти = ?(Год(Запись.Период) < 2012, «КодыКБК», «КБК_2012Кв1»);<br> Макет = Отчеты.РегламентированныйОтчетЗемельныйНалог.ПолучитьМакет(«Списки2011Кв1»);<br> ОбластьКодов = Макет.Области[ИмяОбласти];<br> <br> КодыКБК.Очистить();<br> Для Инд = ОбластьКодов.Верх По ОбластьКодов.Низ Цикл<br> Строка = КодыКБК.Добавить();<br> Строка.Код = Макет.Область(Инд, 1).Текст;<br> Строка.Название = Макет.Область(Инд, 2).Текст;<br> КонецЦикла;<br>КонецПроцедуры»<br>Изменить «Списки2011Кв1» на «СпискиВыбора2013Кв4″<br><br>Все сохранить.<br><br>Запустить 1 с.<br>У меня все работает.»
Snz
Дата регистрации: 05.02.2009
Сообщений: 18
релиз 2.0.54.12 все исправил Спасибо
Показывать по
10
20
40
сообщений
Читают тему: