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

   jq

11.07.06 — 17:33

Что это значит? Ошибка обработки представления «РегистрНакопления.Продажи.Обороты:В выборке должно быть указано хотя бы одно измерение или ресурс»

<<?>>РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, День, ) КАК ПродажиОбороты

   Карамелька

4 — 11.07.06 — 17:38

обязательно д.б. хотябы одно поле указано(!)

Выбрать

Номенклатура

из

РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, День, ) КАК ПродажиОбороты

   jq

8 — 11.07.06 — 17:45

«ВЫБРАТЬ

   |    ПартииТоваровНаСкладах.ДокументОприходования.Контрагент КАК Контрагент,

   |    ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладах.ДокументОприходования.Контрагент),

   |    ПартииТоваровНаСкладах.Склад КАК Склад,

   |    ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладах.Склад),

   |    ПартииТоваровНаСкладах.Номенклатура КАК Номенклатура,

   |    ПРЕДСТАВЛЕНИЕ(ПартииТоваровНаСкладах.Номенклатура),

   |    -ПартииТоваровНаСкладах.Количество,

   |    -ПартииТоваровНаСкладах.Стоимость,

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

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

   
   |

   |    ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = &Приход

   |        И ПартииТоваровНаСкладах.КодОперации = &ВозвратОтПокупателя ТОГДА

   |            — ПартииТоваровНаСкладах.Количество ИНАЧЕ ПартииТоваровНаСкладах.Количество

   |    КОНЕЦ, //КАК Количество,

   |

   |    ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = &Приход

   |          И ПартииТоваровНаСкладах.КодОперации = &ВозвратОтПокупателя ТОГДА

   |            — ПартииТоваровНаСкладах.Стоимость ИНАЧЕ ПартииТоваровНаСкладах.Стоимость

   |    КОНЕЦ КАК Стоимость,

   |

   |    ВЫБОР КОГДА ПартииТоваровНаСкладах.ВидДвижения = &Расход

   |            И ПартииТоваровНаСкладах.КодОперации = &РеализацияРозница ТОГДА

   |            ПартииТоваровНаСкладах.Количество //ИНАЧЕ ПартииТоваровНаСкладах.Количество

   |    КОНЕЦ КАК Количество

   |

   |ИЗ

   |РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах

   |    ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты КАК ТоварыНаСкладахОстаткиИОбороты

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

   |РегистрНакопления.Продажи.Обороты(&НачПериода, &КонПериода, День, ) КАК ПродажиОбороты

   
   |

   |ГДЕ

   |    (&ПустойКонтрагент ИЛИ  ПартииТоваровНаСкладах.ДокументОприходования.Контрагент = &Контрагент)

   |    И (&ПустойСклад ИЛИ ПартииТоваровНаСкладах.Склад = &Склад)

   |    И (&ПустойНоменклатура ИЛИ ПартииТоваровНаСкладах.Номенклатура =  &Номенклатура)

   |    И (ПартииТоваровНаСкладах.Период МЕЖДУ &НачПериода И &КонПериода)

   |

   |ИТОГИ

   |    СУММА(Количество),

   |    СУММА(Стоимость),

   
   |    СУММА(Нач_Остаток)

       
   |ПО

   |    ОБЩИЕ,

   |    Контрагент,

   |    Склад,

   |    Номенклатура»;

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

Рубрики: 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

Решение:

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

Пример:

и

  

OpKc

16.01.12 — 05:49

Доброго времени суток!

Бен, это Данила! Бен, ай нид хелп!

сабж. Извращаюсь с конфигурированием отчёта на СКД, получаю такую ошибку. В теории (и на практике), откуда ноги могут расти?

  

romashov

1 — 16.01.12 — 05:51

у параметра который задает границу отбора левый тип значит

  

OpKc

2 — 16.01.12 — 06:04

Так вот вроде бы не левый… У меня есть в отборе параметр Период (тип — Стандартный период), и вот этот параметр номер 1 я получаю таким образом: «&Период.ДатаНачала». Подглядел в типовой.

  

OpKc

3 — 16.01.12 — 06:07

Где вообще можно почитать о том, как СКД «кушает» параметры? Может, дело в какой-то скрытой их конвертации…

  

OpKc

4 — 16.01.12 — 06:36

При выполнении запроса в консоли ошибки не получаю…

  

Escander

5 — 16.01.12 — 06:54

В форме настройки СКД на закладке параметры создали новый параметр типа «СтандартныйПериод»?

На этой-же закладке указали что параметр из запроса «ДатаНачала» = Параметр1.ДатаНачала ?

  

OpKc

6 — 16.01.12 — 07:08

(5) Да, так. Пробовал без параметра типа «СтандартныйПериод», просто два параметра с типом Дата, тоже выдаёт эту ошибку.

  

Escander

7 — 16.01.12 — 07:11

(6) текст запроса в студию!

  

OpKc

8 — 16.01.12 — 07:34

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

  

OpKc

9 — 16.01.12 — 07:34

ВЫБРАТЬ РАЗЛИЧНЫЕ

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

   NULL КАК КоличествоНачальныйОстаток,

   NULL КАК КоличествоКонечныйОстаток,

   ПартииТоваровКомпанииОстаткиИОбороты.КоличествоПриход КАК КоличествоПриход,

   ПартииТоваровКомпанииОстаткиИОбороты.КоличествоРасход КАК КоличествоРасход,

   NULL КАК СтоимостьНачальныйОстаток,

   NULL КАК СтоимостьКонечныйОстаток,

   ПартииТоваровКомпанииОстаткиИОбороты.СтоимостьПриход КАК СтоимостьПриход,

   ПартииТоваровКомпанииОстаткиИОбороты.СтоимостьРасход КАК СтоимостьРасход,

   ВЫБОР

       КОГДА ПартииТоваровКомпанииОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО

           ТОГДА NULL

       ИНАЧЕ ПартииТоваровКомпанииОстаткиИОбороты.Регистратор

   КОНЕЦ КАК Регистратор,

   ПартииТоваровКомпанииОстаткиИОбороты.ДокументПоставки.Контрагент КАК Контрагент,

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

   ПартииТоваровКомпанииОстаткиИОбороты.СкладКомпании

ИЗ

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

ГДЕ

   (НЕ ПартииТоваровКомпанииОстаткиИОбороты.Регистратор ССЫЛКА Документ.ПеремещениеТоваров) И

   (НЕ ПартииТоваровКомпанииОстаткиИОбороты.Регистратор = НЕОПРЕДЕЛЕНО)

ОБЪЕДИНИТЬ ВСЕ

   

ВЫБРАТЬ РАЗЛИЧНЫЕ

   ПартииТоваровКомпанииОстаткиНач.Номенклатура КАК Номенклатура,

   ПартииТоваровКомпанииОстаткиНач.КоличествоОстаток КАК КоличествоНачальныйОстаток,

   NULL КАК КоличествоКонечныйОстаток,

   NULL КАК КоличествоПриход,

   NULL КАК КоличествоРасход,

   ПартииТоваровКомпанииОстаткиНач.СтоимостьОстаток КАК СтоимостьНачальныйОстаток,

   NULL КАК СтоимостьКонечныйОстаток,

   NULL КАК СтоимостьПриход,

   NULL КАК СтоимостьРасход,

   NULL КАК Регистратор,

   ПартииТоваровКомпанииОстаткиНач.ДокументПоставки.Контрагент КАК Контрагент,

   ПартииТоваровКомпанииОстаткиНач.Номенклатура.Артикул КАК Артикул,

   ПартииТоваровКомпанииОстаткиНач.СкладКомпании

ИЗ

   РегистрНакопления.ПартииТоваровКомпании.Остатки(&НачалоПериода, ) КАК ПартииТоваровКомпанииОстаткиНач

   
ОБЪЕДИНИТЬ ВСЕ

ВЫБРАТЬ РАЗЛИЧНЫЕ

   ПартииТоваровКомпанииОстаткиКон.Номенклатура КАК Номенклатура,

   NULL КАК КоличествоНачальныйОстаток,

   ПартииТоваровКомпанииОстаткиКон.КоличествоОстаток КАК КоличествоКонечныйОстаток,

   NULL КАК КоличествоПриход,

   NULL КАК КоличествоРасход,

   NULL КАК СтоимостьНачальныйОстаток,

   ПартииТоваровКомпанииОстаткиКон.СтоимостьОстаток КАК СтоимостьКонечныйОстаток,

   NULL КАК СтоимостьПриход,

   NULL КАК СтоимостьРасход,

   NULL КАК Регистратор,

   ПартииТоваровКомпанииОстаткиКон.ДокументПоставки.Контрагент КАК Контрагент,

   ПартииТоваровКомпанииОстаткиКон.Номенклатура.Артикул КАК Артикул,

   ПартииТоваровКомпанииОстаткиКон.СкладКомпании

ИЗ

   РегистрНакопления.ПартииТоваровКомпании.Остатки(&КонецПериода, ) КАК ПартииТоваровКомпанииОстаткиКон

  

Escander

10 — 16.01.12 — 08:07

и на закладке «параметры» типа такого:

Имя                  Тип          Выражение

Параметр1     СтандартныйПериод

НачалоПериода    Дата             Параметр1.ДатаНачала

КонецПериода     Дата             Параметр1.ДатаОкончания

так?

  

OpKc

11 — 16.01.12 — 08:10

(10) Да.

Скажите, доктор, мой мозг не в порядке или я лыжи не смазал?

  

Escander

12 — 16.01.12 — 08:37

(11) я не доктор, я из похоронной конторы…

а релиз не какой ээксперементальный?

  

OpKc

13 — 16.01.12 — 08:40

(12) Оп-па. А вот про это я не подумал. Сейчас погоняю на других версиях.

  

OpKc

14 — 16.01.12 — 08:47

(12) проверил на 8.2.14.519 и 8.1.14.72, ошибка и там и там.

  

Escander

15 — 16.01.12 — 08:55

(14) ну хз, вроде так-то всё правильно….

  

Defender aka LINN

16 — 16.01.12 — 09:18

ИЗ

   РегистрНакопления.ПартииТоваровКомпании.ОстаткиИОбороты({&НачалоПериода}, {&КонецПериода}, Авто, , )

  

OpKc

17 — 16.01.12 — 09:32

(16) а это как повлияет?

Кстати, ругается на второй запрос, где получаю ПартииТоваровКомпанииОстаткиНач.

  

Defender aka LINN

18 — 16.01.12 — 09:41

(17) Кэп говорит, что там тоже.

Ну и про галку «Автозаполнение» я уже говорил ведь, да?

  

OpKc

19 — 16.01.12 — 09:42

(18) А вот про галку можно помедленнее, я запишу?

  

Defender aka LINN

20 — 16.01.12 — 09:48

(19) Ее надо снять. И никогда (ну, кроме самых примитивных отчетов) не ставить, все поля и отборы задавать самому через {}. Тогда будет радость, счастье и правильно работающие отчеты.

  

OpKc

21 — 16.01.12 — 09:51

(16) Скобки помогли. Только не совсем понял, почему.

(20) Галку снимать не стал, приберегу сей туз на будущее.

Спасибо за помощь! Буду осваивать СКД дальше.

  

Defender aka LINN

22 — 16.01.12 — 09:54

(21) Элементарно, Ватсон. Период задан не был. А параметры были указаны как обязательные.

  

OpKc

23 — 16.01.12 — 10:02

(22) Сэр, так парадокс в том, что при заданном периоде выскакивала эта ошибка.

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

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

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

В какой момент выходит ошибка

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обслуживание

Заказать консультацию

По этой или иной ошибке Вы можете обратиться к нашим специалистам, мы Вам поможем решить Вашу проблему.

Два запроса в СКД. Один по ОстаткиИОбороты, второй по Остатки. Соответственно, у каждой из виртуальных таблиц указано (согласно рекомендациям по решению этого глюка) параметры &нПериод, &кПериод и у таблицы остатков &нПериод. Данные параметры имеют тип Дата, а не СтандартныйПериод. В запросах эти параметры указаны принудительно. И один фиг ошибка «Ошибка обработки представления РегистрНакопления.ТоварыНаСкладах.Остатки. Несоответствие типов (Параметр номер «»1″»)», РегистрНакопления.ТоварыНаСкладах.Остатки(П3, Организация В(П4)) КАК ОстаткиТоваровНаСкладах. Как ещё можно решить эту ошибку?

а че за проблема то?? а то я первый раз слышу

Тоже не врубаюсь, в чем проблема. Подозреваю, что фигню какую-то делаешь…

Ну там связано с тем, что &Период, &НачалоПериода и &КонецПериода, это зарезервированные СКД выражения. Которые подставляются по умолчанию в параметры. При указании двух наборов данных в СКД например таблицы ОстаткиИОбороты и таблицы Остатки, СКД пытается в таблицу остатки передать в качестве параметра даты &Период. А он имеет тип «Стандартный период» и дату из него получить не получится. Вот подобная проблема. Только приведенное там решение нефига не помогает (последнее сообщение)

свои параметры периода указывай как параметры компоновки(те, что в скобках) и проблемы не будет

Как раз так и делаю — все равно проблемы. Ну в общем помогло то, что принудительно сделал НачалоПериода и КонецПериода (зарезервированные) доступными пользователю. Так работает.

> тип «Стандартный период» и дату из него получить не получится. ясен пень, у него ведь 2 даты: .ДатаНачала и .ДатаОкончания

1. Вводишь новый параметр  ПериодОтчета —  стандартный период. 2. НачалоПериода в занчениях приравниваешь к &ПериодОтчета.ДатаНачала 2. Аналогично  КонецПериода = &ПериодОтчета.ДатаОкончания 3. Период = тоже &ПериодОтчета.ДатаОкончания 4. Ограничение доступности ставишь вееде кроме ПериодОтчета Все.

Конструктор запроса — Компоновка данных — Слева есть кнопочка с параметрами виртуальных таблиц — там укажи, что в качестве Даты Начала будет &нПериод

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

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

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

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

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

Здравствуйте, помогите пожалуйста с проблемой.
У меня внешняя обработка, загрузка xml файла в дерево значений, и выдает ошибку {Обработка.Обработка1.Форма.Форма.Форма(37)}: Ошибка при вызове метода контекста (УстановитьСтроку)
   Чтение.УстановитьСтроку(ТекстXML);
по причине:
Несоответствие типов (параметр номер ‘1’)
Что нужно сделать?? Я начинающий программист в 1с, и поэтому не очень сильна  в этом.

Вот полностью мой код модуля.

&НаКлиенте
Процедура Файл(Команда)
   Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
   Диалог.Заголовок = «Выбор документа»;
   Диалог.Фильтр = «Документы XML (*.xml, *.xdr, *.xsd, *.xsl)|*.xml;*.xdr;*.xsd;*.xsl|Все файлы|*.*|»;
   Если Диалог.Выбрать() Тогда
      ТекстXML.Прочитать(Диалог.ПолноеИмяФайла);
      Документ  = ТекстXML.ПолучитьТекст();
      Заголовок = «Просмотр XML-документа: » + Диалог.ПолноеИмяФайла;

         КонецЕсли;

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

&НаКлиенте
Процедура КнИмпорт(Команда)
Если НЕ ПустаяСтрока(ТекстXML) Тогда
            Дерево = Импорт1();

                              Если Объект.Дерево.Строки.Количество() > 0 Тогда
         ЭлементДерево = ТекстXML.Объект.Дерево;
         ЭлементДерево.СоздатьКолонки();
         ЭлементДерево.Колонки.Удалить(ЭлементДерево.Колонки[«Атрибуты»]);

               КонецЕсли;
   КонецЕсли;
КонецПроцедуры
&НаСервере
Функция Импорт1() Экспорт
   Чтение = Новый ЧтениеXML();
   Чтение.УстановитьСтроку(ТекстXML);
   ДеревоЗначений = Новый ДеревоЗначений();

   ДеревоЗначений.Колонки.Добавить(«Элемент»);
   ДеревоЗначений.Колонки.Добавить(«Текст»);
   ДеревоЗначений.Колонки.Добавить(«Атрибуты»);
   Корень = ДеревоЗначений.Строки.Добавить();
   Корень.Элемент = Чтение.Имя;
   Рекурсия(Корень, Чтение);
   Возврат ДеревоЗначений;
КонецФункции
Процедура Рекурсия(СтрокаДерева, Чтение)
   Если Чтение.КоличествоАтрибутов() > 0 Тогда
      АтрибутыСоответствие = Новый Соответствие();
      Пока Чтение.ПрочитатьАтрибут() Цикл
         АтрибутыСоответствие.Вставить(Чтение.Имя, Чтение.Значение);
      КонецЦикла;
      СтрокаДерева.Атрибуты = АтрибутыСоответствие;
   КонецЕсли;
   //Состояние(Чтение.Имя);
   Пока Чтение.Прочитать() Цикл
      Если Чтение.ТипУзла = ТипУзлаXML.КонецЭлемента Тогда
         Прервать;
      ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.Текст Тогда
         СтрокаДерева.Текст = Чтение.Значение;
      ИначеЕсли Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
         Дочерний = СтрокаДерева.Строки.Добавить();
         Дочерний.Элемент = Чтение.Имя;
         Рекурсия(Дочерний, Чтение);
      КонецЕсли;
         КонецЦикла;
КонецПроцедуры

&НаКлиенте
Процедура Дерево1ПриАктивизацииСтроки(Элемент)
   Объект.Атрибуты.Очистить();
   Данные = Элемент.ТекущиеДанные;
   Если Данные <> Неопределено Тогда
      АтрибутыДерева = Данные.Атрибуты;
      Если ТипЗнч(АтрибутыДерева) = Тип(«Соответствие») Тогда
         Для каждого АтрибутДерева из АтрибутыДерева Цикл
            СтрокаТаблицы                  = Объект.Атрибуты.Добавить();
            СтрокаТаблицы.Атрибут          = АтрибутДерева.Ключ;
            СтрокаТаблицы.ЗначениеАтрибута = АтрибутДерева.Значение;
         КонецЦикла;
      КонецЕсли;
   КонецЕсли;
КонецПроцедуры

&НаКлиенте
Процедура Дерево1Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   ОткрытьЗначение(ВыбраннаяСтрока.Текст);
КонецПроцедуры

&НаКлиенте
Процедура АтрибутыВыбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
      ОткрытьЗначение(ВыбраннаяСтрока.ЗначениеАтрибута);

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

Процедура ОчиститьТаблицы() Экспорт
   Объект.Дерево.Строки.Очистить();
   Объект.Дерево.Колонки.Очистить();
   Объект.Атрибуты.Очистить();
КонецПроцедуры

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

Рубрики: 1С

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

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

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

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

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

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

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

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

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

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

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

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

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

Решение:

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

Пример:

и

Два запроса в СКД. Один по ОстаткиИОбороты, второй по Остатки. Соответственно, у каждой из виртуальных таблиц указано (согласно рекомендациям по решению этого глюка) параметры &нПериод, &кПериод и у таблицы остатков &нПериод. Данные параметры имеют тип Дата, а не СтандартныйПериод. В запросах эти параметры указаны принудительно. И один фиг ошибка «Ошибка обработки представления РегистрНакопления.ТоварыНаСкладах.Остатки. Несоответствие типов (Параметр номер «»1″»)», РегистрНакопления.ТоварыНаСкладах.Остатки(П3, Организация В(П4)) КАК ОстаткиТоваровНаСкладах. Как ещё можно решить эту ошибку?

а че за проблема то?? а то я первый раз слышу

Тоже не врубаюсь, в чем проблема. Подозреваю, что фигню какую-то делаешь…

Ну там связано с тем, что &Период, &НачалоПериода и &КонецПериода, это зарезервированные СКД выражения. Которые подставляются по умолчанию в параметры. При указании двух наборов данных в СКД например таблицы ОстаткиИОбороты и таблицы Остатки, СКД пытается в таблицу остатки передать в качестве параметра даты &Период. А он имеет тип «Стандартный период» и дату из него получить не получится. Вот подобная проблема. Только приведенное там решение нефига не помогает (последнее сообщение)

свои параметры периода указывай как параметры компоновки(те, что в скобках) и проблемы не будет

Как раз так и делаю — все равно проблемы. Ну в общем помогло то, что принудительно сделал НачалоПериода и КонецПериода (зарезервированные) доступными пользователю. Так работает.

> тип «Стандартный период» и дату из него получить не получится. ясен пень, у него ведь 2 даты: .ДатаНачала и .ДатаОкончания

1. Вводишь новый параметр  ПериодОтчета —  стандартный период. 2. НачалоПериода в занчениях приравниваешь к &ПериодОтчета.ДатаНачала 2. Аналогично  КонецПериода = &ПериодОтчета.ДатаОкончания 3. Период = тоже &ПериодОтчета.ДатаОкончания 4. Ограничение доступности ставишь вееде кроме ПериодОтчета Все.

Конструктор запроса — Компоновка данных — Слева есть кнопочка с параметрами виртуальных таблиц — там укажи, что в качестве Даты Начала будет &нПериод

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

Тэги: 1С 8

Комментарии доступны только авторизированным пользователям

1С 8.3 СКД «Ошибка обработки представления»

При программном формировании СКД отчета, вылетало в ошибку. Хотя с запросом все в порядке, в консоли отрабатывает, в консоли СКД также все окей.

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

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

Для устранения проблемы формирования отчета необходимо снять галку автозаполнение в закладке «Наборы данных»

и вручную переопределить поля выборки в конструкторе запроса в закладке «Компоновка данных» — «Поля»

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • 1с ошибка область не найдена
  • 1с ошибка несоответствие версии
  • 1с ошибка неправильный псевдоним
  • 1с ошибка неопознанный оператор

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии