1с запрос ошибка обработки представления несоответствие типов параметр номер 1

Добрый день! Есть отчёт на СКД, с отбором по периоду. Если сформировать отчёт без отбора, то всё окей. Однако если использовать отбор по периоду, то получаю ошибку: Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних несоответствие типов параметр 1». Вот код запроса:

ВЫБРАТЬ РАЗРЕШЕННЫЕ

    ТоварыНаСкладахОстаткиИОбороты.Номенклатура КАК Номенклатура,

    ТоварыНаСкладахОстаткиИОбороты.Склад КАК Склад,

    ТоварыНаСкладахОстаткиИОбороты.Склад.Магазин КАК Магазин,

    ТоварыНаСкладахОстаткиИОбороты.КоличествоКонечныйОстаток КАК КонечныйОстаток,

    ТоварыНаСкладахОстаткиИОбороты.КоличествоНачальныйОстаток КАК НачальныйОстаток,

    ЦеныНоменклатурыСрезПоследних.Цена,

    ЦеныНоменклатурыСрезПоследних.ВидЦены

ИЗ

    РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(, , Авто, , ) КАК ТоварыНаСкладахОстаткиИОбороты

        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних КАК ЦеныНоменклатурыСрезПоследних

        ПО ТоварыНаСкладахОстаткиИОбороты.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура

В чём может быть причина появления ошибки?

Опубликовано: 16.02.2018 /

Рубрики: 1С

Разрабатывал я простенький отчет на СКД в 1С:ERP Управление предприятием 2 (2.2.3.138)

Краткое ТЗ такое:

За основу взять типовой отчет «Ведомость товаров на складах»

Добавить возможность выводить в поля отчета следующие показатели:

  • Коэффициент. Вычисляется как отношение количества конечного остатка за период к количеству продаж за соответствуюий период в единицах хранения

  • Цена. Последняя актуальная цена товара в соответствующий период по виду цен = «Розничная»

  • Количество. Количество продаж в единицах хранения (расход в отчете — общий расход со склада, нужны только продажи)

  • Сумма. Выручка от продаж

Задача простейшая,пишу такой запрос (тут часть):

Товары КАК Товары
ПОЛНОЕ СОЕДИНЕНИЕ Продажи КАК Продажи
ПО Товары.Номенклатура = Продажи.Номенклатура
И Товары.Характеристика = Продажи.Характеристика
И Товары.Склад = Продажи.Склад
ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры.СрезПоследних(, ВидЦены = &ВидЦены) КАК ЦеныНоменклатурыСрезПоследних
ПО Товары.Номенклатура = ЦеныНоменклатурыСрезПоследних.Номенклатура
И Товары.Характеристика = ЦеныНоменклатурыСрезПоследних.Характеристика

И столкнулся с такой ошибкой:

Ошибка обработки представления «РегистрСведений.ЦеныНоменклатуры.СрезПоследних:Несоответствие типов (Параметр номер «»1″»)»

Проблема решается не хитрым путем, но решил сохранить ее решение для себя и для вас.

Решение:

Нужно устанавливать параметры для СКД на вкладке «компоновка данных» в конструкторе запроса.

Пример:

и

Содержание:

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С. На примерах была устранена эта ошибка для запроса и для команды. По данному алгоритму можно всегда устранять данную ошибку.

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

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

Ошибка Несоответствие типов в 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 дней бесплатно

bless18
17.05.2010 20:26 Прочитано: 11810

Здравствуйте!
Имеется ТЧ с реквизитами: Задача, ОписаниеЗадачи и Отдел
Необходимо вывести Задачу и ее описание, которые хранятся в регистре сведений
При этом, задачи должны выводиться для того отдела, в котором работает пользователь системы
Пишу запрос:
Код 1C v 8.х

 
Запрос = новый Запрос;
Запрос.Текст = "ВЫБРАТЬ
| ТекущиеЗадачиСрезПоследних.НаименованиеЗадачи,
| ТекущиеЗадачиСрезПоследних.ОписаниеЗадачи,
| ТекущиеЗадачиСрезПоследних.Отдел
|ИЗ
| РегистрСведений.ТекущиеЗадачи.СрезПоследних(&Отдел, ) КАК ТекущиеЗадачиСрезПоследних";
Запрос.УстановитьПараметр("Отдел", ПараметрыСеанса.ТекущийПользователь.Сотрудник.Отдел);
Результат = Запрос.Выполнить();
ТзВрем = Результат.Выгрузить();

Для Каждого СтрокаТекущиеЗадачи Из ТзВрем Цикл
СтрокаОписаниеЗадачи = ЭтотОбъект.ЗадачиРаботаПользователей.Добавить();
СтрокаОписаниеЗадачи.ОписаниеЗадачи = СтрокаТекущиезадачи.ОписаниеЗадачи;
СтрокаОписаниеЗадачи.Задача = СтрокаТекущиеЗадачи.НаименованиеЗадачи;
КонецЦикла;

Выдается такая ошибка:
{Обработка.РаботаПользователей.Форма.Форма(196)}: Ошибка при вызове метода контекста (Выполнить): {(6, 2)}: Ошибка обработки представления «РегистрСведений.ТекущиеЗадачи.СрезПоследних:Несоответствие типов (параметр номер «»1″»)»
<<?>>РегистрСведений.ТекущиеЗадачи.СрезПоследних(&Отдел, ) КАК ТекущиеЗадачиСрезПоследних
Результат = Запрос.Выполнить();
Табличная часть расположена на панели
На всякий случай пришлю код всей процедуры:
Код 1C v 8.х

 
Процедура ПриОткрытии()
ОбработкаОбъект.Пользователь = ПараметрыСеанса.ТекущийПользователь;
ОбработкаОбъект.ПолучательЗадачи = ПараметрыСеанса.ТекущийПользователь.Сотрудник;
ОбработкаОбъект.Отдел = ПараметрыСеанса.ТекущийПользователь.Сотрудник.Отдел;

ЭтотОбъект.Дата=КонецДня(ТекущаяДата());
ЭлементыФормы.Польз.Заголовок = ПараметрыСеанса.ТекущийПользователь;
ЭлементыФормы.Получ.Заголовок = ПараметрыСеанса.ТекущийПользователь.Сотрудник;
ЭлементыФормы.Отд.Заголовок = ПараметрыСеанса.ТекущийПользователь.Сотрудник.Отдел;

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

ДатаНачала = СтрокаРаспределениеЗадачи.ДатаНачалаВыполнения;
ДатаКонца = СтрокаРаспределениеЗадачи.ДатаВыполнения;

КоличествоДнейНаВыполнение = РазностьДат(ДатаКонца,ДатаНачала);
КоличествоДнейСоДняНачалаВыполнения = РазностьДат(ТекущаяДата(),ДатаНачала);
Если ТекущаяДата()>ДатаКонца тогда
СтрокаРаспределениеЗадачи.ПроцентОставшегосяВремени="100 %";
Иначе
СтрокаРаспределениеЗадачи.ПроцентОставшегосяВремени=Окр(Число(КоличествоДнейСоДняНачалаВыполнения / КоличествоДнейНаВыполнение) * 100, 2);
КонецЕсли;
СтрокаТабличнойЧасти.ПроцентОставшегосяВремени = Строка(СтрокаРаспределениеЗадачи.ПроцентОставшегосяВремени)+ " ";

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

Для Каждого СтрокаТекущиеЗадачи Из ТзВрем Цикл
СтрокаОписаниеЗадачи = ЭтотОбъект.ЗадачиРаботаПользователей.Добавить();
СтрокаОписаниеЗадачи.ОписаниеЗадачи = СтрокаТекущиезадачи.ОписаниеЗадачи;
СтрокаОписаниеЗадачи.Задача = СтрокаТекущиеЗадачи.НаименованиеЗадачи;
КонецЦикла;
КонецПроцедуры

Подскажите, пожалуйста, как исправить эту ошибку

  • 1с документооборот при фоновой маршрутизации процесса произошла ошибка
  • 1с документооборот ошибка создания com объекта cognitive puma
  • 1с документооборот ошибка совместного доступа к файлу
  • 1с документооборот ошибка при вызове метода контекста записать
  • 1с документооборот ошибка для настройки действий комплексного процесса не предусмотрено вариантов