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

Не выводится заголовок /

Я
   Max-VLAD

02.07.12 — 10:09

Процедура Сформировать(ТабДок) Экспорт

ЭлементыФормы.Таб.Очистить();

Запрос = Новый Запрос;

Запрос.Текст =»ВЫБРАТЬ

  | НД_ПКО.Контрагент КАК Контрагент,

  | НД_ПКО.Подразделение КАК Подразделение,

  | НД_ПКО.СуммаДокумента КАК СуммаДокумента

  | ИЗ

  | Документ.НД_ПКО КАК НД_ПКО

  | ГДЕ НД_ПКО.Ссылка.Проведен

  | УПОРЯДОЧИТЬ ПО Подразделение,СуммаДокумента

  | ИТОГИ СУММА(СуммаДокумента) ПО Подразделение»;  

   Результат = Запрос.Выполнить().Выгрузить();

   выборка = Запрос.Выполнить().Выбрать();

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

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

   Заголовок = ТекМакет.ПолучитьОбласть(«Заголовок»);

   Шапка = ТекМакет.ПолучитьОбласть(«Шапка»);

   Строки = ТекМакет.ПолучитьОбласть(«Строки»);

   Итого = ТекМакет.ПолучитьОбласть («Итого»);

   СуммаДокументаИтого = 0;

   выборка.следующий();

   ТабДок.Вывести(Заголовок);

   ТабДок.Вывести(Шапка);

                                             
   Для Каждого Строка Из Результат Цикл

   Строки.Параметры.Заполнить(Строка);

   Если ЗначениеЗаполнено(Строка.СуммаДокумента) Тогда

       СуммаДокументаИтого = Строка.СуммаДокумента + СуммаДокументаИтого;

        КонецЕсли;

       
   Строки.Параметры.Контрагент = Строка.Контрагент;

   Строки.Параметры.Подразделение = Строка.Подразделение;

   Строки.Параметры.СуммаДокумента = СуммаДокумента;

   ТабДок.Вывести(Строки);

   КонецЦикла;

             

   Итого.Параметры.СуммаДокументаИтого = СуммаДокументаИтого;

   ТабДок.Вывести(Итого);            

Процедура КнопкаСформироватьНажатие(Кнопка) Экспорт

         Сформировать(ЭлементыФормы.Таб);

      КонецПроцедуры

При отладке возникает ошибка:

{Отчет.ПКО.Форма.ФормаОтчета.Форма(41)}: Ошибка при вызове метода контекста (Вывести)

                   ТабДок.Вывести(Заголовок);

по причине:

Несоответствие типов (параметр номер ‘1’)

Помогите, пожалуйста, кто знает в чем ошибка!

   butterbean

1 — 02.07.12 — 10:10

в отладчике посмотри что у тебя в Заголовок

   butterbean

2 — 02.07.12 — 10:12

хотя у тебя еще какая-то хрень с Таб

   Max-VLAD

3 — 02.07.12 — 10:14

вот в этом месте ошибка:

   выборка.следующий();

   ТабДок.Вывести(Заголовок);

   ТабДок.Вывести(Шапка);

в макете всё правильно сделано:

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

   Заголовок = ТекМакет.ПолучитьОбласть(«Заголовок»);

   butterbean

4 — 02.07.12 — 10:15

(3) в отладчике посмотри что у тебя в Заголовок

   dva1c

5 — 02.07.12 — 10:16

(3) Что у тебя в макете содержится?

(4)+1

   Chin

6 — 02.07.12 — 10:16

А это зачем?

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

Может:

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

   Pro-tone

7 — 02.07.12 — 10:20

+1 (6) верно — из-за этого и ошибка

   Chin

8 — 02.07.12 — 10:20

(6) Хотя нет, у тебя ТабДок изначально табличный документ. (видимо «таб=» просто атавизм)

Тогда смотри отладчик…

   Max-VLAD

9 — 02.07.12 — 10:21

   butterbean

10 — 02.07.12 — 10:24

(9) в отладчике посмотри что у тебя в Заголовок

   PiVa123

11 — 02.07.12 — 10:25

Заголовок = ТекМакет.ПолучитьОбласть("Заголовок");

замени на

ОбластьЗаголовок = ТекМакет.ПолучитьОбласть("Заголовок");

Потому что, скорее всего «Заголовок», это Заголовок формы :)

   Max-VLAD

12 — 02.07.12 — 10:31

Заменил везде ТабДок, теперь вылезает ошибка:

{Отчет.ПКО.Форма.ФормаОтчета.Форма(81)}: Поле объекта не обнаружено (ТабДок)

          Сформировать(ЭлементыФормы.ТабДок);

внизу где

Процедура КнопкаСформироватьНажатие(Кнопка) Экспорт

          Сформировать(ЭлементыФормы.ТабДок);

   Max-VLAD

13 — 02.07.12 — 10:32

[b]butterbean[/b], я новичок. напишите где и как посмотреть

   butterbean

14 — 02.07.12 — 10:32

(11) вот зачем ты сразу все раскрыл :-)

надо было чтобы он в отладчике увидел, потом сам прозрел… а так никакого педагогического эффекта

   butterbean

15 — 02.07.12 — 10:33

(13) это долго, мне лень

   PiVa123

16 — 02.07.12 — 10:34

(14) Виноват. Пардон.

   Max-VLAD

17 — 02.07.12 — 10:42

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

   dva1c

18 — 02.07.12 — 10:43

(12) Не совсем понятно.

Ты передаешь в процедуру ТабДок.

Зачем?

Сформировать(ЭлементыФормы.Таб);

Проще

Сформировать(Таб);

   dva1c

19 — 02.07.12 — 10:45

+(18) Передавай в ТабДок в Сформировать.

   dva1c

20 — 02.07.12 — 10:47

(17) «…программирую 1 раз на 1С» — научись программировать в 1С. Почитай книжки. Учи мат. часть!

   Max-VLAD

21 — 02.07.12 — 10:50

dva1c,

Проще

Сформировать(Таб);

— вылазит ошибка

   Max-VLAD

22 — 02.07.12 — 10:53

«…программирую 1 раз на 1С» — научись программировать в 1С. Почитай книжки. Учи мат. часть!

учу, сложно пока, раньше программировал на Паскале и в Делфи

   dva1c

23 — 02.07.12 — 10:55

(22) Передавай то, куда будешь выводить.

Пошел обедать…

   Max-VLAD

24 — 02.07.12 — 10:58

   dva1c

25 — 02.07.12 — 11:33

(24) Должен выводить, если заставишь «взять» нужный тебе макет по имени макета.

при обращении пищи (<кому>), тогда не придется копировать ник в посте )

   dva1c

26 — 02.07.12 — 11:34

*(25) пиши

   oleg_ma

27 — 02.07.12 — 11:40

В определении

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

А используешь ТабДок.

Замени

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

на

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

Должно все получиться:)

Не забудь после цикла поставить

ТабДок.Показать(«»);

  

Max-VLAD

28 — 03.07.12 — 02:18

oleg_ma, получилось, спасибо!:) всем спасибо за участие!

MaxVL
03.07.2012 02:48 Прочитано: 4944

Здравствуйте! Помогите, пожалуйста, что не так. Выдает ошибку:

{Отчет.ПКО.Форма.ФормаОтчета.Форма(41)}: Ошибка при вызове метода контекста (Вывести)
ТабДок.Вывести(Заголовок);
по причине:
Несоответствие типов (параметр номер ‘1’)

Код 1C v 8.2 УП

 Процедура Сформировать(ТабДок) Экспорт
ЭлементыФормы.Таб.Очистить();
Запрос = Новый Запрос;
Запрос.Текст ="ВЫБРАТЬ
| НД_ПКО.Контрагент КАК Контрагент,
| НД_ПКО.Подразделение КАК Подразделение,
| НД_ПКО.СуммаДокумента КАК СуммаДокумента
| ИЗ
| Документ.НД_ПКО КАК НД_ПКО
| ГДЕ НД_ПКО.Ссылка.Проведен
| УПОРЯДОЧИТЬ ПО Подразделение,СуммаДокумента
| ИТОГИ СУММА(СуммаДокумента) ПО Подразделение";
Результат = Запрос.Выполнить().Выгрузить();
выборка = Запрос.Выполнить().Выбрать();
Таб = Новый ТабличныйДокумент;
ТекМакет = ПолучитьМакет("Макет");
Заголовок = ТекМакет.ПолучитьОбласть("Заголовок");
Шапка = ТекМакет.ПолучитьОбласть("Шапка");
Строки = ТекМакет.ПолучитьОбласть("Строки");
Итого = ТекМакет.ПолучитьОбласть ("Итого");
СуммаДокументаИтого = 0;
выборка.следующий();
ТабДок.Вывести(Заголовок);
ТабДок.Вывести(Шапка);

Для Каждого Строка Из Результат Цикл
Строки.Параметры.Заполнить(Строка);
Если ЗначениеЗаполнено(Строка.СуммаДокумента) Тогда
СуммаДокументаИтого = Строка.СуммаДокумента + СуммаДокументаИтого;
КонецЕсли;

Строки.Параметры.Контрагент = Строка.Контрагент;
Строки.Параметры.Подразделение = Строка.Подразделение;
Строки.Параметры.СуммаДокумента = СуммаДокумента;
ТабДок.Вывести(Строки);
КонецЦикла;

Итого.Параметры.СуммаДокументаИтого = СуммаДокументаИтого;
ТабДок.Вывести(Итого);

Процедура КнопкаСформироватьНажатие(Кнопка) Экспорт
Сформировать(ЭлементыФормы.Таб);
КонецПроцедуры

Макет отчета:
title

Еще вылезает одна ошибка:

{Отчет.ПКО.Форма.ФормаОтчета.Форма(50)}: Поле объекта не обнаружено (Контрагент)
Строки.Параметры.Контрагент = Строки.Контрагент;


Изменено 03.07.12 08:26:39

Yandex
Возможно, вас также заинтересует

Реклама на портале

theelectric
03.07.2012 12:53 Ответ № 1

(0) MaxVL, смотри… Ты пытаешься создать переменные для областей с аналогичными именами. Попробуй все-таки их назвать «ОбластьЗаголовок», чтобы это выглядело примерно так…
Код 1C v 8.2 УП

 ТекМакет = ПолучитьМакет("Макет");
ОблЗаголовок = ТекМакет.ПолучитьОбласть("Заголовок");
ОблШапка = ТекМакет.ПолучитьОбласть("Шапка");
ОблСтроки = ТекМакет.ПолучитьОбласть("Строки");
ОблИтого = ТекМакет.ПолучитьОбласть ("Итого");
СуммаДокументаИтого = 0;
выборка.следующий();
ТабДок.Вывести(ОблЗаголовок);
ТабДок.Вывести(ОблШапка);
MaxVL
04.07.2012 02:34 Ответ № 2

theelectric, спасибо!

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Juli1000

Гость


Всем, здравствуйте!
Помогите пожалуйста разобраться со следующей проблемой: необходимо данные (одну колонку), полученные в результате запроса вывести в макет отчёта в одну строку через запятую.
Заранее спасибо!

« Последнее редактирование: 15-07-2009 08:35 от Джон »
Записан
Kivals


Цикл по запросу, добавление данных к строке: Стр=Стр+», «+Запрос.Данные

« Последнее редактирование: 15-07-2009 08:35 от Джон »
Записан
Juli1000

Гость


Спасибо:) Появилась следующая проблема: вывод в область отчёта

Строка = Строка + Строка((ВыборкаНомер.ВхНомерДокумента) + » , «);
ОбластьНомерДокумента.Вывести(Строка);
ТабДок.Вывести(ОбластьНомерДокумента, ВыборкаНомер.Уровень());

Ошибка заключается в несоответствии типов параметров. Как вывести полученную строку в отчёт?

« Последнее редактирование: 15-07-2009 08:36 от Джон »
Записан
Kivals


В какой именно строке и как точно звучит ошибка? (по нажатию кнопки «Подробно…» можно скопировать информацию об ошибке)


Записан
Juli1000

Гость


Код такой:

Строка = Строка((ВыборкаНомер.ВхНомерДокумента) + » , «);
ОбластьНомерДокумента.Вывести(Строка);
ТабДок.Вывести(ОбластьНомерДокумента, ВыборкаНомер.Уровень());

Ошибка такая:

Отчет.АктГенеральный.Форма.Отчет2(137)}: Ошибка при вызове метода контекста (Вывести): Несоответствие типов (параметр номер ‘1’)
          ОбластьНомерДокумента.Вывести(Строка);


Записан
Kivals


ОбластьНомерДокумента.<НазваниеПараметраКакЗаданоВЯчейке>=Строка;
ТабДок.Вывести(ОбластьНомерДокумента, ВыборкаНомер.Уровень());


Записан
Kivals


Только эти строки должны быть уже вне цикла по запросу — там где сформирована полная строка


Записан
Juli1000

Гость


Сделали так, но получаем следующее:

Отчет.АктГенеральный.Форма.Отчет2(140)}: Поле объекта не обнаружено (ВхНомерДокумент)
   ОбластьНомерДокумента.ВхНомерДокумент = Строка;

В области  ОбластьНомерДокумента макета параметр ВхНомерДокумент однозначно называется так.


Записан
Juli1000

Гость


Спасибо за помощь!!! Доделали:)
Не хватало слова Параметры.

ОбластьНомерДокумента.Параметры.<НазваниеПараметраКакЗаданоВЯчейке>=Строка;


Записан

Ошибка Несоответствие типов в 1С 8.3 связана с передачей параметров в командах и запросах 1С.

Изучив статью, вы:

  • ознакомитесь с порядком исправления ошибки в запросе и командах 1С;
  • получите два внешних отчета, демонстрирующих ошибочный и правильный коды.

Содержание

  • Несоответствие типов в 1С 8.3
    • Ошибка в таблице запроса
    • Исправление ошибки в команде 1С

Как правило, параметры в командах 1С идут в определенной очередности и ссылаются на данные конкретного типа. Ошибка в указании параметра не на том месте или не того типа приводит к появлению сообщения о несоответствии типов:

Исправляется подобная ошибка восстановлением правильной последовательности в строке параметров команды или указанием нужного типа данных Ошибка 1С Несоответствие типов наиболее часто появляется при написании запросов и при некорректном указании параметров команды.

Рассмотрим причины ее возникновения и исправление на конкретном примере.

Ошибка в таблице запроса

При чтении цен номенклатуры по регистру сведений Цены номенклатуры из внешнего отчета появляется ошибка Неоднозначное поле «ТипЦен.Номенклатура».

В окне сообщений уже указано место возникновения ошибки: Параметр номер «1» в строке Регистр сведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

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

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания видно, что команда СрезПоследних имеет 2 параметра:

  • Период;
  • Отбор.

Если параметр Период не указывается, место в команде остается пустым, а через запятую указывается параметр отбора, в нашем случае: ТипЦен. Исправленная команда выглядит следующим образом: СрезПоследних(, ТипЦен = &ТипЦен ).

После исправления команды запустите отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь отчет формируется правильно!

Скачать внешний отчет Вывод списка цен номенклатуры

Исправление ошибки в команде 1С

При поиске ссылок на контрагента в отчете 1С появляется ошибка Несоответствие типов (параметр номер 2):

1С сообщает место ошибки — Параметр номер 2 при нажатии кнопки ERROR.

Для ее исправления необходимо открыть отчет в Конфигураторе 1С и найти в модуле формы строчку с командой НайтиПоСсылкам.

Правильность написания команды проверьте по выделенной кнопке Синтаксис-Помощник в меню 1С:

Из описания идно, что команда НайтиПоСсылкам имеет 4 параметра:

  • СписокСсылок;
  • ОбластьПоиска;
  • ВключитьОбъекты;
  • ИсключитьОбъекты.

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

После исправления команды запустите внешний отчет в 1С по кнопке Главное меню — Файл — Открыть:

Теперь команда поиска ссылок на контрагента отрабатывает правильно.

Скачать внешний отчет Поиск ссылок на контрагента

Вот так можно получить ошибку 1С Несоответствие типов в 1С, поэтому контролируйте правильность указания параметров в запросах и командах 1С в Синтаксис-Помощнике!

См. также:

  • Неоднозначное поле в запросе
  • Исправление технических ошибок при работе с 1С:Бухгалтерия: для начинающих и опытных пользователей
  • Метод объекта не обнаружен
  • Неизвестный идентификатор формы
  • Переменная не определена

Если Вы еще не подписаны:

Активировать демо-доступ бесплатно →

или

Оформить подписку на Рубрикатор →

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

Подписывайтесь на наши YouTube и Telegram чтобы не пропустить
важные изменения 1С и законодательства

Помогла статья?

Получите еще секретный бонус и полный доступ к справочной системе БухЭксперт8 на 14 дней бесплатно

Содержание:

1.       Несоответствие типов данных

2.       Ошибка внутри таблицы в запросе

3.       Причина ошибки внутри команды

Приветствую, коллеги! В данной статье рассмотрим понятие и описание типа данных и переменных в системе 1С версии 8.3. Также поговорим о распространенной ошибке «Несоответствие типов», изложим инструкцию с по ее устранению. 


1.    Несоответствие типов данных

Тип – это характеристика у значения, которая определяет поведение и свойства, которые имеет данное значение.

В командах внутри системы 1С параметры имеют некую специальную очерёдность, а также все параметры имеют ссылку на данные, которые связаны с каким-либо типом. В случае, когда какой-то из параметров находится в неположенном месте, либо название не соответствует типу, выполняются невозможные действия для конкретного типа – появляется сообщение, в котором говорится о несоответствии типов данных (показано на скриншоте ниже):

Сообщение об ошибке несоответствии типов

Рис. 1 Сообщение об ошибке несоответствии типов

Чаще всего данная неполадка возникает, когда при написании запроса внутри команды не верно указывают параметры. Исправление подобной ошибки производится при помощи изменения типа передаваемого параметра или используемой переменной на правильный тип данных.  

2.    Ошибка внутри таблицы в запросе

Рассмотрим пример: при чтении цен из номенклатуры согласно регистру данных «Цены номенклатуры» с общего внешнего отчёта всплывает ошибка «Неоднозначное поле «ТипЦен.Номенклатура».

Ошибка Неоднозначное поле

Рис. 2 Ошибка Неоднозначное поле

Видим, что в окне с сообщением о неполадке указано место в коде, где возникла ошибка несоответствия типов: «Параметр номер «1», в строчке вида:

«РегистрСведений.ЦеныНоменклатуры.СрезПоследних(&&ТипЦен,) КАК ЦеныНоменклатурыСрезПоследних.

Чтобы устранить данную ошибку в первую очередь откроем конфигурацию с данным отчётом и найдем внутри кода с формой строчку, которая была приведена выше:

Исправление ошибки несоответствия типов (Параметр номер 1)

Рис. 3 Исправление ошибки несоответствия типов (Параметр номер 1)

При помощи «Синтаксис-Помощника», в меню конфигурации 1С можно сверить, насколько правильно была написана команда:

Исправление ошибки несоответствия типов

Рис. 4 Проверка написания команды с помощью Синтаксис-Помощника

Согласно описанию, в команде «СрезПоследних» находится два параметра: «Отбор» и «Период».

В случае, когда параметр «Период» не был указан, в данной команде будет пустое поле, а после запятой будет написан параметр для отбора. Для нашего примера этим параметром будет «ТипЦен». После правок команда видоизменится так: «СрезПоследних(,ТипЦен = &ТипЦен).

Исправление команды СрезПоследних

Рис. 5 Исправление команды СрезПоследних

После того как команда СрезПоследних была исправлена, стоит снова сформировать отчёт из «Главное меню → Файл → Открыть». 

3.    Причина ошибки внутри команды

Имеем такую ошибку: когда происходит поиск вариантов ссылок на контрагента в отчёте системы 1С, то возникает ошибка «Несоответствие типов (параметр номер «2»), как на скриншоте ниже:

Несоответствие типов

Рис. 6 Несоответствие типов (параметр номер «2»)

В системе 1С указано то место, где произошла неполадка – это недопустимый параметр номер 2, если кликнуть на кнопку «ERROR». Чтобы её исправить нужно запустить отчёт в конфигураторе системы 1С, далее ищем форму строчки, в которой написана команда «НайтиПоСсылкам», внутри модуля.

Команда НайтиПоСсылкам внутри модуля

Рис. 7 Команда НайтиПоСсылкам внутри модуля

Можно проверить верность того, как написана команда при помощи «Синтаксис-Помощника» в панели меню системы 1С, кнопка будет выделена:

Команда НайтиПоСсылкам

Рис. 8 Команда НайтиПоСсылкам в Синтаксис-Помощнике

По описанию следует: в команде «НайтиПоСсылкам» находится такие четыре параметра: СписокСсылок, ИсключитьОбъекты, ВключитьОбъекты и ОбластьПоиска.

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

Тип массив в НайтиПоСсылкам

Рис. 9 Тип массив в НайтиПоСсылкам

Далее запускаем наш отчёт в системе 1С.

После наших действий команда работает исправно и ошибки нет.

 НайтиПоСсылкам

Рис. 10 Проверка на наличие ошибок в системе конфигурации 1С


В данной статье было рассмотрено как устранить ошибку несоответствия типов в 1С. На примерах была устранена эта ошибка для запроса и для команды. По данному алгоритму можно всегда устранять данную ошибку.

Специалист компании «Кодерлайн»

Айдар Фархутдинов

Понравилась статья? Поделить с друзьями:
  • Ошибка при вызове метода контекста выбратьизменения
  • Ошибка при вызове метода контекста выполнить таблица не найдена
  • Ошибка при вызове метода контекста выбрать элемент
  • Ошибка при вызове метода контекста выполнить результат запрос выполнить
  • Ошибка при вызове метода контекста выбрать несоответствие типов