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)
извиняюсь. этотОбъект
Получить макет документа
Автор Кот_Леопольд, 16 янв 2019, 12:32
0 Пользователей и 1 гость просматривают эту тему.
В документе Договор по нажатию кнопки Шаблон, должен отображаться шаблон документа, но как обычно все не так проста (для меня:dfbsdfbsdf:) Создал на форме команду с действием:
&НаСервере
Процедура ШаблонНаСервере()
ТабДок=Новый ТабличныйДокумент;
Макет=ЭтотОбъект.ПолучитьМакет("Договор");
ТекущийТекстДоговора=Новый ТаблицаЗначений;
ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Для каждого СтрокаТЧ из ТекущийТекстДоговора Цикл
Область=Макет.ПолучитьОбласть("Текст");
Область.Параметры.Текст=СтрокаТЧ.Пункт+СтрокаТЧ.Текст;
ТабДок.Вывести(Область);
КонецЦикла;
ТабДок.ОтображатьГруппировки=Ложь;
ТабДок.ОтображатьЗаголовки=Ложь;
ТабДок.ОтображатьСетку=Ложь;
ТабДок.Показать("Шаблон "+СокрЛП(Объект.ТипДоговора.Наименование));
КонецПроцедуры
&НаКлиенте
Процедура Шаблон(Команда)
ШаблонНаСервере();
КонецПроцедуры
Ошибка: {Документ.Договоры.Форма.ФормаДокумента.Форма(209)}: Метод объекта не обнаружен (ПолучитьМакет)
Макет=ЭтотОбъект.ПолучитьМакет(«Договор»);
Форма управляемая
(0) Посмотрите отладчиком ТипЗнч(ЭтотОбъект) и ВСЁ станет ПОНЯТНО…
Представьте себе, какая была бы тишина, если бы люди говорили только то, что знают
1-ая ошибка (будем считать их по мере исправления)
Макет=ЭтотОбъект.ПолучитьМакет(«Договор»);
попробуйте так
Макет=Документы.Договоры.ПолучитьМакет(«Договор»);
если помогло нажмите: Спасибо!
Цитата: LexaK от 16 янв 2019, 13:00
1-ая ошибка (будем считать их по мере исправления)Макет=ЭтотОбъект.ПолучитьМакет(«Договор»);
попробуйте так
Макет=Документы.Договоры.ПолучитьМакет(«Договор»);
Попробывал
Ошибка
{Документ.Договоры.Форма.ФормаДокумента.Форма(217)}: Ошибка при вызове метода контекста (ПолучитьМакет)
Макет=Документы.Договоры.ПолучитьМакет(«Договор»);
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
а вообще такой макет «Договор» — есть?
если помогло нажмите: Спасибо!
2-ая
а зачем вы вообще что-то копируете?
ТекущийТекстДоговора=Новый ТаблицаЗначений;
ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Для каждого СтрокаТЧ из ТекущийТекстДоговора Цикл
просто сразу обращайтесь к данным
//ТекущийТекстДоговора=Новый ТаблицаЗначений;
//ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Для каждого СтрокаТЧ из ТекстДоговора Цикл
и на кнопку: Спасибо давить не забываем
если помогло нажмите: Спасибо!
Цитата: LexaK от 16 янв 2019, 14:09
2-аяа зачем вы вообще что-то копируете?
ТекущийТекстДоговора=Новый ТаблицаЗначений;
ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Для каждого СтрокаТЧ из ТекущийТекстДоговора Циклпросто сразу обращайтесь к данным
//ТекущийТекстДоговора=Новый ТаблицаЗначений;
//ТекущийТекстДоговора=ТекстДоговора.Скопировать();
Для каждого СтрокаТЧ из ТекстДоговора Цикли на кнопку: Спасибо давить не забываем
Сделал Ошибка {Документ.Договоры.Форма.ФормаДокумента.Форма(221)}: Итератор для значения не определен
Для каждого СтрокаТЧ из ТекстДоговора Цикл
тогда из какой таблицы вы планировали выводить данные?
у меня вашей конфы нет
если помогло нажмите: Спасибо!
Цитата: LexaK от 16 янв 2019, 14:21
тогда из какой таблицы вы планировали выводить данные?
у меня вашей конфы нет
я вам в личку сообщение написал
Добавлено: 16 янв 2019, 17:39
Цитата: LexaK от 16 янв 2019, 14:21
тогда из какой таблицы вы планировали выводить данные?
у меня вашей конфы нет
Добавлено: 17 янв 2019, 10:02
Цитата: LexaK от 16 янв 2019, 14:21
тогда из какой таблицы вы планировали выводить данные?
у меня вашей конфы нет
Доработал сегодня код, с командой шаблон вроде все получилось, начал делать команду печать там снова эта ошибка
{Документ.Договоры.Форма.ФормаДокумента.Форма(66)}: Значение не является значением объектного типа (Скопировать)
ТекущийТекстДоговора=ТекстДоговора.Скопировать();
И команда Реквизиты почему то задвайвает некоторые реквизиты
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 не работает? Вам совместимость нужна |
Подсказка: Для быстрого перемещения к последнему ответу или к вопросу используйте или . |