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

v8: Как вывести результат компоновки в таблицу значений

Потребовалось и решил познакомиться с этим монстром на примере типового отчета зупы РасчетныеЛисткиОрганизаций.
Мне было нужно программно получить результат выполнения КомпоновщикМакетаКомпоновкиДанных (некоторых полей). Решил что это можно (удобнее) сделать через ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
тыкаюсь в типовой код (немного упростил структуру и своё добавил):

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

// создадим и инициализируем процессор компоновки данных
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки);

//свой кусок
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;

Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
//
Обрадовался, вот думаю сейчас готовую таблицу получу.

<Отчет.РасчетныеЛисткиОрганизаций.МодульОбъекта(650)>: Ошибка при вызове метода контекста (Вывести)
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Неизвестный тип макета

Попробовал обойти в цикле по элементно через ПроцессорКомпоновкиДанных.Следующий()
ошибка та же самая.
мне кажется что всё дело вообще в самом отчёте (ОсновнойСхемеКомпоновкиДанных).
Что мне проверить или сравнить?

Источник

Ошибка при вызове метода контекста (Вывести)

Подскажите в чем проблема?

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

//Получим данные из документа

Запрос = Новый Запрос;
Запрос.Текст = «ВЫБРАТЬ
|РегистрацияРазовыхНачисленийРаботниковОрганизаций.Номер,
|РегистрацияРазовыхНачисленийРаботниковОрганизаций.Дата
|ИЗ
|Документ.РегистрацияРазовыхНачисленийРаботниковОрганизаций
КАК РегистрацияРазовыхНачисленийРаботниковОрганизаций
|ГДЕ
|РегистрацияРазовыхНачисленийРаботниковОрганизаций.Ссылка = &ТекущийДокумент»;

Запрос.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект); //используем в качестве параметра реквизит обработки СсылкаНаОбъект

Пока Данные.Следующий() Цикл

//Создадим и заполним табличный документ

Макет = ПолучитьМакет(«МатериальнаяПомощь»);
ОбластьШапки = Макет.ПолучитьОбласть(«Шапка»);
ОбластьШапки.Параметры.НомерДок=Данные.Номер;
ОбластьШапки.Параметры.ДатаДок=Данные.Дата;
КонецЦикла;
ТабДокумент.Вывести(ОбластьШапки);

Запрос1 = Новый Запрос;
Запрос1.Текст = «ВЫБРАТЬ
| РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления.Сотрудник.Код КАК Код,
| РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления.Сотрудник.ПодразделениеОрганизации.Ссылка КАК Подразделение,
| РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления.Сотрудник.Должность.Ссылка КАК Должность,
| РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления.Сотрудник.Ссылка КАК ФИО,
| РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления.ВидРасчета.Ссылка КАК ВидПомощи
|ИЗ
| Документ.РегистрацияРазовыхНачисленийРаботниковОрганизаций.ОсновныеНачисления КАК РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.РегистрацияРазовыхНачисленийРаботниковОрганизаций КАК РегистрацияРазовыхНачисленийРаботниковОрганизаций
| ПО РегистрацияРазовыхНачисленийРаботниковОрганизацийОсновныеНачисления.Ссылка = РегистрацияРазовыхНачисленийРаботниковОрганизаций.Ссылка
|ГДЕ
| РегистрацияРазовыхНачисленийРаботниковОрганизаций.Ссылка = &ТекущийДокумент»;
Запрос1.УстановитьПараметр(«ТекущийДокумент», СсылкаНаОбъект); //используем в качестве параметра реквизит обработки СсылкаНаОбъект
Данные1 = Запрос1.Выполнить().Выбрать();

Пока Данные1.Следующий() Цикл

////Создадим и заполним табличный документ

Макет1 = ПолучитьМакет(«МатериальнаяПомощь»);
ОбластьПодвал = Макет1.ПолучитьОбласть(«Подвал»);
ОбластьПодвал.Параметры.Работник=Данные1.ФИО;
ОбластьПодвал.Параметры.ТабНомер=Данные1.Код;
ОбластьПодвал.Параметры.Подразделение=Данные1.Подразделение;
ОбластьПодвал.Параметры.Должность=Данные1.Должность;
ОбластьПодвал.Параметры.ВидПомощи=Данные1.ВидПомощи;
КонецЦикла;

При выполнении выводится — Ошибка при вызове метода контекста (Вывести): Несоответствие типов (параметр номер ‘1’)

Источник

ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений

Ошибка: неизвестный тип макета

Кто сталкивался, что не так?

(1) Правильный пример. Тут для дерева значений, разберётесь, что к чему

в таком варианте пишет ошибку
<Форма.ФормаОтчета.Форма(13)>: Ошибка при вызове метода контекста (Выполнить)
МакетКомпоновки = КомпоновщикМакета.Выполнить(СКД, ЭтотОбъект.КомпоновщикНастроек.Настройки. Тип(«ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений»));//
по причине:
Ошибка компоновки макета
по причине:
Ошибка генерации макета
по причине:
Не поддерживается вывод таблиц, диаграмм и вложенных отчетов в универсальную коллекцию значений

(5) Поначалу подумал, что затролили..

а в итоге и вправду наткнулся именно на эту граблю:

— в настройках была Таблица, а в Тз передает только детальные записи.

(11) Здравия, не могли бы расписать вместо . код?

//2.Вернул настройки даты
.
//3.Вернул отбор из предыдущего варианта
.

сделан отчет в СКД (движение материалов)
на форме объекта — кнопка Печать, которая печатает таблицу результата с шапкой (добавлена отдельным макетом).
Первый раз формирует Таблицу результата и выводит в табличный документ с шапкой хорошо. Второй раз при формировании отчета ругается:

Платформа: 1С:Предприятие 8.3 (8.3.4.465)
Конфигурация: Бухгалтерия предприятия КОРП, редакция 3.0 (3.0.29.8)
Ошибки:

Неправильный путь к файлу ‘ДанныеРасшифровкиКомпоновкиДанных’

Текст процедуры печати — ниже.
Что не так?

Теперь:
— Не ругается выводит
— Область заголовка отчета и область таблицы данных не всегда соответствуют по правому краю (как-то передвинуть бы заголовок по краю области таблицы, или для таблицы какой-то макет создать?)
— при повторном отборе по другому складу ругается так же на
Неправильный путь к файлу ‘ДанныеРасшифровкиКомпоновкиДанных’ (может быть в первый раз создать Новый ДанныеРасшифровкиКомпоновкиДанных и впоследствии проверять: если он есть, то использовать его?)

Через некоторое время (возможно звезды правильно расположились) отчет стал формироваться и печататься «без ругани».

Источник

Ошибка при вызове метода контекста в 1С

Любой программист 1С встречался с таким сообщением, как «Ошибка при вызове метода контекста (Выполнить)». Обычно эта ошибка не вызывает затруднения у опытного программиста. Почему она возникает? Рассмотрим ниже.

Как в любом языке программирования, в платформе 1С есть предопределенные методы, которые облегчают жизнь разработчикам. Но выполнение этих команд требует правильного соблюдения синтаксиса языка программирования.

Самые распространенные ошибки при вызове типовых методов:

  • Записать
  • Создать
  • Подключиться
  • Connect
  • ПроверитьВывод
  • PreviewFile1C
  • Прочитать
  • Выполнить
  • ВыполнитьПакет
  • ПрочитатьИзменения

Рассмотрим пример. Мы программно создали запрос (справочник по запросам), передав в параметры «текст» вот такой фрагмент:

В конструкции «ГДЕ» мы преднамеренно ошиблись, поставив «И», но не прописав еще одно условие. Совершенно логично, что 1С не сможет справиться с таким запросом и выдаст ошибку:

<МодульСеанса(21)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Рассмотрим еще один пример:

Получите понятные самоучители по 1С бесплатно:

Перенесем ошибочный код в обработчик «ПередЗаписью» справочника «Версии программ» и попробуем записать справочник программно. Видим ошибку:

<МодульСеанса(8)>: Ошибка при вызове метода контекста (Записать)
Выборка.ПолучитьОбъект().Записать();
по причине:
Ошибка при выполнении обработчика — ‘ПередЗаписью’
по причине:
<Справочник.ВерсииПрограмм.МодульОбъекта(20)>: Ошибка при вызове метода контекста (Выполнить)
РезультатЗапроса = Запрос.Выполнить();
по причине:
<(13, 4)>: Синтаксическая ошибка
И >

Несмотря на то, что ошибка заключается в выполнения метода «Выполнить», система ругается и на строчку кода, где вызывается программная запись объекта.

Решение проблемы

Для решения проблемы достаточно понять, в чем именно заключается ошибка. В 99% случаев проблема решается банальным чтением справки и анализом проблемы.

Для того чтобы узнать, как пользоваться тем или иным методом, достаточно установить курсор на интересующей Вас функции и нажать «Ctrl + F1». Платформа 1С выдаст Вам контекстную подсказку по требуемому методу:

Проверьте параметры, передаваемые в функцию, и правильность её использования.

Другие статьи по 1С:

К сожалению, мы физически не можем проконсультировать бесплатно всех желающих, но наша команда будет рада оказать услуги по внедрению и обслуживанию 1С. Более подробно о наших услугах можно узнать на странице Услуги 1С или просто позвоните по телефону +7 (499) 350 29 00. Мы работаем в Москве и области.

Источник

АйТиБложик

Маленький IT блог с характером 1С.

Ошибка хитрого метода ПроверитьВывод() табличного документа

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Столкнулся с такой ошибкой, при выводе информации на печатную форму, платформа выдает следующее сообщение:
Ошибка при вызове метода контекста (ПроверитьВывод).

ПроверитьВывод() — это метод табличного документа, который проверяет, умещаются ли переданные табличные документы на страницу при печати. В примечании у этого метода разработчики платформы 1С сразу написали, что при возникновении проблем с получением информации о текущем принтере (например, в системе не установлено ни одного принтера), будет вызвано исключение.

Проверил установленные принтеры, все исправно и работает. Эмпирическим путем выяснил, что данная ошибка возникает только у конкретной печатной формы и только под одним пользователем.

Ошибка решилась следующими действиями (выполнять под пользователем, у которого возникла ошибка):
1) Создал пустой документ, что бы при формировании печатной формы не был задействован метод ПроверитьВывод(). Если же этот метод в любом случае вызывается, то придется его найти в конфигурации и закомментировать, или же поместить в конструкцию Попытка-Исключение-КонецПопытки.

1. Помещение ПроверитьВывод в попытку

2) Сформировал печатную форму.

2. Пустая печатная форма (кол-во товаров = 0)

3) Для текущей печатной формы открыл параметры страницы и установил правильные параметры.

3. Параметры страницы

Ошибка возникала из-за неправильных параметров страницы, которые платформа сохранила ранее при выводе на печать печатной формы, например: платформа сохранила в параметрах страницы принтер, который в дальнейшем удалили и установили новый. Параметры страницы печатной формы хранятся в свойстве табличного документа КлючПараметровПечати. Это свойство содержит ключ значения, в котором сохраняются параметры печати таблицы. Параметры печати, настроенные и сохраненные с данным ключом, впоследствии восстанавливаются при следующем показе таблицы.

Что бы данная ошибка не возникала из-за неправильных параметров страницы, свойство КлючПараметровПечати следует устанавливать не в начале процедуры вывода на печать, а в конце, так как при установке данного свойства параметры печати тут же восстанавливаются.

UPD 04/10/2015: Если устанавливать свойство КлючПараметровПечати в конце формирования табличного документа, то метод ПроверитьВывод будет использовать параметры печати установленные по-умолчанию, а не пользовательские. Что бы избежать данной ситуации, необходимо устанавливать свойство КлючПараметровСистемы в начале формирования табличного документа, а метод ПроверитьВывод поместить в конструкцию Попытка-Исключение-КонецПопытки.

Источник

Читайте также:  Как чистить яблоки для повидла
Оцените статью