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

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

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

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

Jackshi

59 / 59 / 6

Регистрация: 16.01.2013

Сообщений: 162

1

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

14.05.2014, 12:23. Показов 15419. Ответов 5

Метки нет (Все метки)


Доброго времени суток. Помогите решить задачу в Бух 3.0

1C
1
2
3
4
5
6
7
8
9
10
11
12
Докум = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(новый УникальныйИдентификатор(мОбъект.id));
Если не ЗначениеЗаполнено(Докум) Тогда
    Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
    Док.УстановитьСсылкуНового(новый УникальныйИдентификатор(мОбъект.id));
Иначе 
    Если Докум.ПолучитьОбъект() = Неопределено Тогда
        Док = Документы.ПоступлениеТоваровУслуг.СоздатьДокумент();
        Док.УстановитьСсылкуНового(новый УникальныйИдентификатор(мОбъект.id));// в этом месте Ошибка
    Иначе
        Док = Докум.ПолучитьОбъект();
    КонецЕсли;
КонецЕсли;

Докум = Ссылка(<Объект не найден> (170:8cde001e6759045111e3b5045af92b08))

{Форма.Форма.Форма(405)}: Ошибка при вызове метода контекста (УстановитьСсылкуНового)
Док.УстановитьСсылкуНового(новый УникальныйИдентификатор(мОбъект.id));
по причине:
Несоответствие типов (параметр номер ‘1’)

Вроде первый раз не ругается, а вот второй раз….. Почему?

__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь

0

Programming

Эксперт

94731 / 64177 / 26122

Регистрация: 12.04.2006

Сообщений: 116,782

14.05.2014, 12:23

Ответы с готовыми решениями:

Несоответствие типов
Подскажите пожалуйста мне надо написать программу автоматического формирования кода справочника по…

Несоответствие типов
Помогите исправить пожайлуста.
uses crt,graph;
var
a:array of integer;

Несоответствие типов
Всем привет, выдает ошибку о несоответствие типов хотя в БД стоит тип текстовый
cmd.CommandText =…

Несоответствие типов
var s1,s2,s3:string;
ss1,ss2,ss3 :set of byte;
y:integer;
H:char;

begin
readln(s1);

5

SPR1TE89

21 / 21 / 3

Регистрация: 22.04.2014

Сообщений: 112

14.05.2014, 12:36

2

Jackshi, А если так попробовать?

1C
1
2
НоваяСсылка = Документы.ПоступлениеТоваровУслуг.ПолучитьСсылку(новый УникальныйИдентификатор(мОбъект.id))
Док.УстановитьСсылкуНового(новаяСсылка);

И еще возможно битая ссылка. Поэтому и ругается.

1

59 / 59 / 6

Регистрация: 16.01.2013

Сообщений: 162

14.05.2014, 12:42

 [ТС]

3

Работает, Спасибо!

А есть возможность избавиться от битой ссылки?

0

21 / 21 / 3

Регистрация: 22.04.2014

Сообщений: 112

14.05.2014, 14:06

4

Jackshi, Вообще есть, но лучше пока не заморачивайтесь).

0

multirum

0 / 0 / 0

Регистрация: 14.09.2020

Сообщений: 6

30.11.2020, 14:07

5

1C
1
2
3
4
5
6
7
Процедура ИзменитьНаСервере()
    КодЭлемента = Справочники.Номенклатура.Выбрать(000000003);
    ИзменениеЦены = КодЭлемента.ПолучитьОбъект();
    ИзменениеЦены.ЦенаПродажи = 30000;
    ИзменениеЦены.Записать();
    Сообщить("Готово");
КонецПроцедуры

{Обработка.ИзменениеЦеныПоКодуЭлемента.Форма.Форма .Форма(4)}: Ошибка при вызове метода контекста (Выбрать)
КодЭлемента = Справочники.Номенклатура.Выбрать(000000003);
по причине:
Несоответствие типов (параметр номер ‘1’)
как исправить ?

0

polax

1783 / 1208 / 437

Регистрация: 16.01.2015

Сообщений: 5,322

30.11.2020, 18:44

6

multirum, Есть такая штука СП — синтакс помощник называется. Обращайтесь к нему чаще.

СправочникМенеджер.<Имя справочника> (CatalogManager.<Catalog name>)
Выбрать (Select)
Синтаксис:
Выбрать(<Родитель>, <Владелец>, <Отбор>, <Порядок>)
Параметры:
<Родитель> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Отбор по родителю. Имеет смысл только для многоуровневых справочников. Если параметр не задан, то отбор по родителю не производится. Чтобы отобрать элементы верхнего уровня, нужно в качестве данного параметра указать пустую ссылку на элемент справочника.
<Владелец> (необязательный)
Тип: СправочникСсылка.<Имя справочника>.
Отбор по владельцу. Имеет смысл только для подчиненных справочников. Если параметр не задан, то отбор по владельцу не производится.
<Отбор> (необязательный)
Тип: Структура.
Задает поле и значение отбора открываемой выборки. Ключ структуры описывает имя поля, а значение структуры — значение отбора по этому полю. В качестве полей для отбора могут задаваться только поля «Код», «Наименование» и реквизиты справочника, для которых в конфигураторе признак индексирования установлен в значение «Индексировать» или в значение «Индексировать с доп. упорядоч.».
Важно! Структура может содержать только один элемент.
Если параметр не указан, то отбор не используется.
<Порядок> (необязательный)
Тип: Строка.
Строка с именем реквизита справочника, определяющая упорядочивание элементов в выборке. Может быть указано «Код», «Наименование» или имя одного из реквизитов примитивного типа (Число, Строка, Дата, Булево), для которого установлен признак «Индексирование» в значение «Индексировать» или в «Индексировать с дополнительным упорядочиванием» в конфигураторе. После имени реквизита через пробел может быть указано направление сортировки. Направление определяется: «Убыв» («Desc») — упорядочивать по убыванию; «Возр» («Asc») — упорядочивать по возрастанию. По умолчанию сортировка производится по возрастанию. Если параметр не указан, то порядок определяется основным представлением справочника.
Значение по умолчанию: Пустая строка.
Возвращаемое значение:
Тип: СправочникВыборка.<Имя справочника>.
Описание:
Формирует выборку элементов справочника по заданным условиям.
Доступность:
Сервер, толстый клиент, внешнее соединение, мобильное приложение (сервер), мобильный автономный сервер.
Пример:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Номенклатура = Справочники.Номенклатура;
Отбор = Новый Структура("ТипНоменклатуры");
Пусто = Перечисления.ТипыНоменклатуры.ПустаяСсылка();
Отбор.ТипНоменклатуры = Пусто;
Выборка = Номенклатура.Выбрать(,,Отбор, "Наименование Убыв");
Пока Выборка.Следующий()  Цикл
    Объект = Выборка.ПолучитьОбъект();
    Объект.ТипНоменклатуры = Перечисления.ТипыНоменклатуры.Товар;
    Попытка
        Объект.Записать();
    Исключение
        Предупреждение(НСтр("ru = 'Невозможно записать объект';"
           + " en = 'Can't write object'")
           +" '" + Объект + '"
           |" + ОписаниеОшибки(),60);
    КонецПопытки;
КонецЦикла;

0

IT_Exp

Эксперт

87844 / 49110 / 22898

Регистрация: 17.06.2006

Сообщений: 92,604

30.11.2020, 18:44

Помогаю со студенческими работами здесь

Несоответствие типов
Добрый день, ни как не могу победить несоответствие типов.
То есть, есть некая форма с полем…

Несоответствие типов
— в этом файле две базы данных, которые должны синхронизироваться. Главная база с названием &quot;а&quot;,…

if then else несоответствие типов
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,…

Несоответствие типов
Делаю прогу, в которой программа ищет — существует ли ряд файлов. Например 153 файла текстi.txt,…

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:

6

На чтение 2 мин Просмотров 231 Опубликовано 16.12.2019

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

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

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

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

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

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

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

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

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

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

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

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

Решение:

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

Иногда возможно нажать кнопку «Подробно», где видим примерно такой код «<ОбщийМодуль.ПодключаемыеКоманды.Модуль(. «

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

А пока, для работы в программе их надо отключить. Для этого зайдите в Меню / Администрирование / Печатные формы, отчеты и обработки / Дополнительные отчеты и обработки .

Плохую обработку можно пока не удалять , надо только реквизит ПУБЛИКАЦИЯ переключить в режим ОТКЛЮЧЕНА

Результат вы увидите только после нового входа в конфигурацию.

  • Распечатать

Оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

(0 голосов, среднее: 0 из 5)

Поделитесь с друзьями!

Май 7, 2018 в 3:54 пп

#3647

Здравствуйте. При попытке повторения за преподавателем создания обработки «Работа с операторами» выяснилось, что если в коде записать просто ВводимоеЧисло (как это у преподавателя), то выдается ошибка «Переменная не определена». И только при написании Объект.ВводимоеЧисло программа начинает работать корректно. Однако, при достижении варианта «На сервере без контекста» ни один вариант не проходит. Хотелось бы разобраться.
С уважением Ушаков А. А.

Май 8, 2018 в 3:40 дп

#3656

Объект.ВводимоеЧисло- тут ключевое слово Объект, его необходимо всегда вводить при вводе переменной, иначе программа не понимает и выдает ошибку.

Май 8, 2018 в 3:41 дп

#3658

Должно работать как в видео. Вы на сервере выполняете, как в видео уроке?
Пришлите ссылку на выгрузку базы. Так не сможем понять что у вас происходит

  • Ответ изменён 4 года/лет, 8 мес. назад пользователем  Anatoliy.

Май 8, 2018 в 8:08 дп

#3660

Здравствуйте. По поводу предыдущего вопроса.
Ссылка на базу, которую я скачал с вашего сайта

А это скриншот проблемы

И еще. Постоянно неактивна кнопка «вычислить выражение»
С уважением Ушаков А. А.

Май 8, 2018 в 8:15 дп

#3661

Повторю ссылки

Скриншот проблемы

Ссылка на базу

Май 8, 2018 в 8:17 дп

#3662

Еще раз ссылка на скриншот

Скриншот проблемы

Май 8, 2018 в 3:32 пп

#3663

Вы добавили реквизит не у формы, а у самого объекта(обработки). Поэтому вы не можете напрямую обратиться к реквизиту ВводимоеЧисло.
Добавьте этот реквизит у формы, скрин прилагаю
https://yadi.sk/i/xZww9cbm3VYqzi

Обратите внимание, у объекта плюсик закрыт(стрелкой указал), реквизит добавлен на форму.

Май 10, 2018 в 11:25 дп

#3672

Спасибо, теперь работает корректно. Но сохраняется прежний вопрос — как сделать активной кнопку «вычислить выражение»?

Май 12, 2018 в 6:46 дп

#3682

Все перепробовал (до переустановки 1с), но кнопка «вычислить выражение» все равно неактивна. Возможно ли продолжение обучения без этой … кнопки?

Май 13, 2018 в 7:46 дп

#3685

Кнопка вычислить выражение будет доступна тогда, когда вы подключитесь в отладку. Поставьте точку останова в конфигураторе —> в режиме 1С Предприятие выполните и когда остановится на точке останова, то вы сможете Вычислить выражение

Май 13, 2018 в 8:41 дп

#3687

Май 21, 2018 в 3:06 дп

#3710

Здравствуйте! БК20 урок №3. Не могу разобраться где причина. При изменении цены выдаёт ошибку.

{Документ.ПоступлениеТоваровИУслуг.Форма.ФормаДокумента.Форма(23)}: Поле объекта не обнаружено (Количетсво)
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количетсво;

Код:
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТоварыНоменклатураПриИзмененииНаСервере(ТекущаяСтрока.Цена,ТекущаяСтрока.Номенклатура);
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры

&НаСервере
Процедура ТоварыНоменклатураПриИзмененииНаСервере(Цена,Номенклатура)
Цена = Номенклатура.ЦенаПродажи;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количетсво;
КонецПроцедуры

Май 21, 2018 в 3:16 дп

#3712

У вас вроде опечатка КоличеТСво

Май 22, 2018 в 4:35 дп

#3714

Исправил! Ошибку устранил.

Май 24, 2018 в 9:31 дп

#3713

Всем доброго здравия, вопрос БК20 урN3 последнее задание — «Изменить цену для конкретного товара во всех документах установка цен номенклатуры — установить 5000. (Номенклатуру,которую будем менять выбираем на форме обработки – также как добавляли дату начала и дату окончания. Используем обход табличной части документа и вспоминаем как задавали условия –чтобы менять не все а только то, что нужно)».
1)Вроде бы все понятно, создаю на форме обработки реквизит «ВыборНоменклатуры» тип «Строка» для того, чтобы выбирать Номенклатуру аналогично как выбирали дату.
2) Делаю выборку, делаю обход табличной части, устанавливаю новую цену, провожу документ
&НаСервере
Процедура СнятьПроведениеНаСервере()
Выборка=Документы.УстановкаЦенНоменклатуры.Выбрать(,ВыборНоменклатуры);
Пока Выборка.Следующий()Цикл
Объект1=Выборка.ПолучитьОбъект();
Для Каждого ТекСтр Из Объект1.Данные Цикл
ТекСтр.Цена=5000;
КонецЦикла;
Объект1.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЦикла;

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

&НаКлиенте
Процедура СнятьПроведение(Команда)
СнятьПроведениеНаСервере();
КонецПроцедуры

3) запускаю обработку, пишу в строке которую создал например «Мука» и получаю ошибку:{Обработка.о1.Форма.Форма.Форма(4)}: Ошибка при вызове метода контекста (Выбрать)
Выборка=Документы.УстановкаЦенНоменклатуры.Выбрать(,ВыборНоменклатуры);
по причине:
Несоответствие типов (параметр номер ‘2’)

Вопрос, в чем моя ошибка?

Базу прилагаю https://yadi.sk/d/F8blj6Yt3WJTyu

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

Я
   galimovmaks

21.08.13 — 07:49

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

Функция Печать() Экспорт

     КонИн = РегистрыСведений.КонтактнаяИнформация;

     Организация = Строка(СсылкаНаОбъект.Организация);

     Контрагент = Строка(СсылкаНаОбъект.Контрагент);

     ОтборРегистра        = Новый Структура(«Объект, Тип, Вид»);

  
     ОтборРегистра.Вид=Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид);

    

выдает ошибку

{ВнешняяОбработка.ПечатьПорядокЛьготногоИТС.МодульОбъекта(25)}: Ошибка при вызове метода контекста (Выбрать)

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид,);

по причине:

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

Подскажите что за ошибка?

   Wobland

1 — 21.08.13 — 07:50

это значит, что первым параметром идёт хрень

   galimovmaks

2 — 21.08.13 — 07:52

(0) {ВнешняяОбработка.ПечатьПорядокЛьготногоИТС.МодульОбъекта(25)}: Ошибка при вызове метода контекста (Выбрать)

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид,);

по причине:

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

   galimovmaks

3 — 21.08.13 — 07:53

(1) а что тогда будет не хрень?

   razlagator

4 — 21.08.13 — 07:53

(2) ОтборРегистра.Вид — этого быть не должно

   Wobland

5 — 21.08.13 — 07:53

конин — это такое вещество, которое препятствует чтению СП?

   Wobland

6 — 21.08.13 — 07:54

(3) структура

   razlagator

7 — 21.08.13 — 07:54

(3) Юзай запрос (с)

   galimovmaks

8 — 21.08.13 — 07:55

(5) конин это регистр сведений контактная информация

   Wobland

9 — 21.08.13 — 07:56

(8) так что ж тебе мешает взять и почитать?

   galimovmaks

10 — 21.08.13 — 07:58

(7) мне по определенному ОтборРегистра.Вид нужно вывести определенную информацию. я выбираю Вид из Справочники.ВидыКонтактнойИнформации там есть и адрес и телефон и майл. а эта определенная инфа хранится в регистре, вот мне ее надо от туда получить

   Wasya

11 — 21.08.13 — 07:58

Это как?

В коде:

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид);

В сообщении об ошибке:

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид,);

   galimovmaks

12 — 21.08.13 — 07:59

(9) вот написано метод выбрать

   Wobland

13 — 21.08.13 — 07:59

(10) думаю, он уже понял

   Rie

Модератор

14 — 21.08.13 — 07:59

(10) Внимательно почитай (6).

Потом — открой встроенную справку и прочитай, что это за структура.

   galimovmaks

15 — 21.08.13 — 08:00

(11) без запятой) одна ошибка

   galimovmaks

16 — 21.08.13 — 08:09

мда.. темный лес

   Wobland

17 — 21.08.13 — 08:10

(16) какое слово не понятно?

   galimovmaks

18 — 21.08.13 — 08:12

да там понятно. не работает ни чего

   Starhan

19 — 21.08.13 — 08:14

И фамилия говорящая….

п.с. простите не удержался, просто юмор.

   Starhan

20 — 21.08.13 — 08:16

Встань на слово Выбрать. Нажми синтаксис-помощник.  И прочитай про метод, может  там даже пример будет.

   Rie

21 — 21.08.13 — 08:18

(18) Какие изменения внёс в код после чтения этой ветки и встроенной справки по методу Выбрать?

   Rie

22 — 21.08.13 — 08:25

(0) А то долго будет…

ОтборРегистра = Новый Структура(«Объект, Вид»);

ОтборРегистра.Объект = СсылкаНаОбъект.Организация;   ОтборРегистра.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

Адрес = РегистрыСведений.КонтактнаяИнформация.Выбрать(ОтборРегистра);

При этом Адрес — тоже будет структурой.

   Wobland

23 — 21.08.13 — 08:26

(22) выборкой он будет

   galimovmaks

24 — 21.08.13 — 08:27

КонИн = РегистрыСведений.КонтактнаяИнформация;

     Организация = Строка(СсылкаНаОбъект.Организация);

     Контрагент = Строка(СсылкаНаОбъект.Контрагент);

     ОтборРегистра        = Новый Структура(«Вид»);

     //ОтборРегистра.Вставить(«Значение»,Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации);

     ОтборРегистра.Вид =Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

     Адрес = Строка( КонИн.Выбрать(ОтборРегистра) );

сделал так. теперь он просто пустую строку в документ вставляет

   Rie

25 — 21.08.13 — 08:27

(23) Сам уже туплю :-(

   Rie

26 — 21.08.13 — 08:29

(24) Вместо Выбрать — используй Получить. Указав при этом объект.

Или выбирай из Адрес.

   Wobland

27 — 21.08.13 — 08:29

(24) видимо, выборка имеет пустое строковое представление. ни разу не делал так, даже не знаю ;)

   galimovmaks

28 — 21.08.13 — 08:31

(26) {ВнешняяОбработка.ПечатьПорядокЛьготногоИТС.МодульОбъекта(24)}: Ошибка при вызове метода контекста (Получить)

     Адрес = Строка( КонИн.Получить(ОтборРегистра) );

по причине:

Недопустимое значение параметра (параметр номер ‘1’)

   Wobland

29 — 21.08.13 — 08:32

(28) ты здесь соврал или в (24)?

   Wobland

30 — 21.08.13 — 08:32

(29) тфу.. марш читать про получить теперь

   Rie

31 — 21.08.13 — 08:33

(28) У Получить (в отличие от Выбрать) — надо указывать _все_ измерения.

   Starhan

32 — 21.08.13 — 08:35

Если так писать

Строка( КонИн.Выбрать(ОтборРегистра))

и с «Получить» ничего не выйдет

   galimovmaks

33 — 21.08.13 — 08:36

(32) я так и пишу

   Wobland

34 — 21.08.13 — 08:37

(33) цель достигнута?

   galimovmaks

35 — 21.08.13 — 08:37

Вариант синтаксиса: Для непериодического регистра

Синтаксис:

Получить(<Отбор>)

Параметры:

<Отбор> (необязательный)

Тип: Структура. (31)

какие еще измерения??

   Defender aka LINN

36 — 21.08.13 — 08:38

Это ливингстар ник поменял, или они просто из одного инкубатора?

   galimovmaks

37 — 21.08.13 — 08:38

(34) нет. он пустую строку выдает

   Wobland

38 — 21.08.13 — 08:39

(35) купи СП

Должны указываться значения для всех измерений.

   Rie

39 — 21.08.13 — 08:39

(35) У регистра сведений есть такая штука — измерения называются.

   Wobland

40 — 21.08.13 — 08:40

(36) не, ливингстар готовое хочет. а здесь товарищ просто не понимает. рад бы, да не доходит

   Rie

41 — 21.08.13 — 08:45

(37) Что-то вроде

ОтборРегистра = Новый Структура(«Объект,Вид,Тип»);

// это — все три измерения регистра сведений КонтактнаяИнформация

// теперь задаём их значения

ОтборРегистра.Объект = СсылкаНаОбъект.Организация;

ОтборРегистра.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

ОтборРегистра.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;

// спрашиваем у регистра

СтруктАдрес = РегистрыСведений.КонтактнаяИнформация.Получить(ОтборРегистра);

// получили структуру, содержащую и значения ресурсов. Извлекаем нужное:

Адрес = СтруктАдрес.Представление;

// (тут возможны варианты — поэтому лучше использовать методы, преобразующие структуру адреса в строку адреса

   galimovmaks

42 — 21.08.13 — 08:49

(41) огромное спасибо!!! адрес выводится!)) теперь для телефона надо сделать) буду дальше думать)

   Starhan

43 — 21.08.13 — 08:51

(41) ну все, хрен он теперь СП откроет. Будет на мисту за готовым кодом ходить :)

(43) Ему не СП надо… СП — это лишь подсказка. ТС же, похоже, не понимает, что такое информационная база, как она устроена и с чем её едят (если «теперь для телефона надо сделать» вызывает трудности) :-(

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

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

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

Содержание

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

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

 Anatoliy.

Май 8, 2018 в 8:08 дп

#3660

Здравствуйте. По поводу предыдущего вопроса.
Ссылка на базу, которую я скачал с вашего сайта

А это скриншот проблемы

И еще. Постоянно неактивна кнопка «вычислить выражение»
С уважением Ушаков А. А.

Май 8, 2018 в 8:15 дп

#3661

Повторю ссылки

Скриншот проблемы

Ссылка на базу

Май 8, 2018 в 8:17 дп

#3662

Еще раз ссылка на скриншот

Скриншот проблемы

Май 8, 2018 в 3:32 пп

#3663

Вы добавили реквизит не у формы, а у самого объекта(обработки). Поэтому вы не можете напрямую обратиться к реквизиту ВводимоеЧисло.
Добавьте этот реквизит у формы, скрин прилагаю
https://yadi.sk/i/xZww9cbm3VYqzi

Обратите внимание, у объекта плюсик закрыт(стрелкой указал), реквизит добавлен на форму.

Май 10, 2018 в 11:25 дп

#3672

Спасибо, теперь работает корректно. Но сохраняется прежний вопрос — как сделать активной кнопку «вычислить выражение»?

Май 12, 2018 в 6:46 дп

#3682

Все перепробовал (до переустановки 1с), но кнопка «вычислить выражение» все равно неактивна. Возможно ли продолжение обучения без этой … кнопки?

Май 13, 2018 в 7:46 дп

#3685

Кнопка вычислить выражение будет доступна тогда, когда вы подключитесь в отладку. Поставьте точку останова в конфигураторе —> в режиме 1С Предприятие выполните и когда остановится на точке останова, то вы сможете Вычислить выражение

Май 13, 2018 в 8:41 дп

#3687

Май 21, 2018 в 3:06 дп

#3710

Здравствуйте! БК20 урок №3. Не могу разобраться где причина. При изменении цены выдаёт ошибку.

{Документ.ПоступлениеТоваровИУслуг.Форма.ФормаДокумента.Форма(23)}: Поле объекта не обнаружено (Количетсво)
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количетсво;

Код:
&НаКлиенте
Процедура ТоварыНоменклатураПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТоварыНоменклатураПриИзмененииНаСервере(ТекущаяСтрока.Цена,ТекущаяСтрока.Номенклатура);
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры

&НаСервере
Процедура ТоварыНоменклатураПриИзмененииНаСервере(Цена,Номенклатура)
Цена = Номенклатура.ЦенаПродажи;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыКоличествоПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количество;
КонецПроцедуры

&НаКлиенте
Процедура ТоварыЦенаПриИзменении(Элемент)
ТекущаяСтрока = Элементы.Товары.ТекущиеДанные;
ТекущаяСтрока.Сумма = ТекущаяСтрока.Цена * ТекущаяСтрока.Количетсво;
КонецПроцедуры

Май 21, 2018 в 3:16 дп

#3712

У вас вроде опечатка КоличеТСво

Май 22, 2018 в 4:35 дп

#3714

Исправил! Ошибку устранил.

Май 24, 2018 в 9:31 дп

#3713

Всем доброго здравия, вопрос БК20 урN3 последнее задание — «Изменить цену для конкретного товара во всех документах установка цен номенклатуры — установить 5000. (Номенклатуру,которую будем менять выбираем на форме обработки – также как добавляли дату начала и дату окончания. Используем обход табличной части документа и вспоминаем как задавали условия –чтобы менять не все а только то, что нужно)».
1)Вроде бы все понятно, создаю на форме обработки реквизит «ВыборНоменклатуры» тип «Строка» для того, чтобы выбирать Номенклатуру аналогично как выбирали дату.
2) Делаю выборку, делаю обход табличной части, устанавливаю новую цену, провожу документ
&НаСервере
Процедура СнятьПроведениеНаСервере()
Выборка=Документы.УстановкаЦенНоменклатуры.Выбрать(,ВыборНоменклатуры);
Пока Выборка.Следующий()Цикл
Объект1=Выборка.ПолучитьОбъект();
Для Каждого ТекСтр Из Объект1.Данные Цикл
ТекСтр.Цена=5000;
КонецЦикла;
Объект1.Записать(РежимЗаписиДокумента.ОтменаПроведения);
КонецЦикла;

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

&НаКлиенте
Процедура СнятьПроведение(Команда)
СнятьПроведениеНаСервере();
КонецПроцедуры

3) запускаю обработку, пишу в строке которую создал например «Мука» и получаю ошибку:{Обработка.о1.Форма.Форма.Форма(4)}: Ошибка при вызове метода контекста (Выбрать)
Выборка=Документы.УстановкаЦенНоменклатуры.Выбрать(,ВыборНоменклатуры);
по причине:
Несоответствие типов (параметр номер ‘2’)

Вопрос, в чем моя ошибка?

Базу прилагаю https://yadi.sk/d/F8blj6Yt3WJTyu

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

Я
   galimovmaks

21.08.13 — 07:49

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

Функция Печать() Экспорт

     КонИн = РегистрыСведений.КонтактнаяИнформация;

     Организация = Строка(СсылкаНаОбъект.Организация);

     Контрагент = Строка(СсылкаНаОбъект.Контрагент);

     ОтборРегистра        = Новый Структура(«Объект, Тип, Вид»);

  
     ОтборРегистра.Вид=Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид);

    

выдает ошибку

{ВнешняяОбработка.ПечатьПорядокЛьготногоИТС.МодульОбъекта(25)}: Ошибка при вызове метода контекста (Выбрать)

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид,);

по причине:

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

Подскажите что за ошибка?

   Wobland

1 — 21.08.13 — 07:50

это значит, что первым параметром идёт хрень

   galimovmaks

2 — 21.08.13 — 07:52

(0) {ВнешняяОбработка.ПечатьПорядокЛьготногоИТС.МодульОбъекта(25)}: Ошибка при вызове метода контекста (Выбрать)

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид,);

по причине:

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

   galimovmaks

3 — 21.08.13 — 07:53

(1) а что тогда будет не хрень?

   razlagator

4 — 21.08.13 — 07:53

(2) ОтборРегистра.Вид — этого быть не должно

   Wobland

5 — 21.08.13 — 07:53

конин — это такое вещество, которое препятствует чтению СП?

   Wobland

6 — 21.08.13 — 07:54

(3) структура

   razlagator

7 — 21.08.13 — 07:54

(3) Юзай запрос (с)

   galimovmaks

8 — 21.08.13 — 07:55

(5) конин это регистр сведений контактная информация

   Wobland

9 — 21.08.13 — 07:56

(8) так что ж тебе мешает взять и почитать?

   galimovmaks

10 — 21.08.13 — 07:58

(7) мне по определенному ОтборРегистра.Вид нужно вывести определенную информацию. я выбираю Вид из Справочники.ВидыКонтактнойИнформации там есть и адрес и телефон и майл. а эта определенная инфа хранится в регистре, вот мне ее надо от туда получить

   Wasya

11 — 21.08.13 — 07:58

Это как?

В коде:

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид);

В сообщении об ошибке:

     Адрес = КонИн.Выбрать(ОтборРегистра.Вид,);

   galimovmaks

12 — 21.08.13 — 07:59

(9) вот написано метод выбрать

   Wobland

13 — 21.08.13 — 07:59

(10) думаю, он уже понял

   Rie

Модератор

14 — 21.08.13 — 07:59

(10) Внимательно почитай (6).

Потом — открой встроенную справку и прочитай, что это за структура.

   galimovmaks

15 — 21.08.13 — 08:00

(11) без запятой) одна ошибка

   galimovmaks

16 — 21.08.13 — 08:09

мда.. темный лес

   Wobland

17 — 21.08.13 — 08:10

(16) какое слово не понятно?

   galimovmaks

18 — 21.08.13 — 08:12

да там понятно. не работает ни чего

   Starhan

19 — 21.08.13 — 08:14

И фамилия говорящая….

п.с. простите не удержался, просто юмор.

   Starhan

20 — 21.08.13 — 08:16

Встань на слово Выбрать. Нажми синтаксис-помощник.  И прочитай про метод, может  там даже пример будет.

   Rie

21 — 21.08.13 — 08:18

(18) Какие изменения внёс в код после чтения этой ветки и встроенной справки по методу Выбрать?

   Rie

22 — 21.08.13 — 08:25

(0) А то долго будет…

ОтборРегистра = Новый Структура(«Объект, Вид»);

ОтборРегистра.Объект = СсылкаНаОбъект.Организация;   ОтборРегистра.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

Адрес = РегистрыСведений.КонтактнаяИнформация.Выбрать(ОтборРегистра);

При этом Адрес — тоже будет структурой.

   Wobland

23 — 21.08.13 — 08:26

(22) выборкой он будет

   galimovmaks

24 — 21.08.13 — 08:27

КонИн = РегистрыСведений.КонтактнаяИнформация;

     Организация = Строка(СсылкаНаОбъект.Организация);

     Контрагент = Строка(СсылкаНаОбъект.Контрагент);

     ОтборРегистра        = Новый Структура(«Вид»);

     //ОтборРегистра.Вставить(«Значение»,Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации);

     ОтборРегистра.Вид =Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

     Адрес = Строка( КонИн.Выбрать(ОтборРегистра) );

сделал так. теперь он просто пустую строку в документ вставляет

   Rie

25 — 21.08.13 — 08:27

(23) Сам уже туплю :-(

   Rie

26 — 21.08.13 — 08:29

(24) Вместо Выбрать — используй Получить. Указав при этом объект.

Или выбирай из Адрес.

   Wobland

27 — 21.08.13 — 08:29

(24) видимо, выборка имеет пустое строковое представление. ни разу не делал так, даже не знаю ;)

   galimovmaks

28 — 21.08.13 — 08:31

(26) {ВнешняяОбработка.ПечатьПорядокЛьготногоИТС.МодульОбъекта(24)}: Ошибка при вызове метода контекста (Получить)

     Адрес = Строка( КонИн.Получить(ОтборРегистра) );

по причине:

Недопустимое значение параметра (параметр номер ‘1’)

   Wobland

29 — 21.08.13 — 08:32

(28) ты здесь соврал или в (24)?

   Wobland

30 — 21.08.13 — 08:32

(29) тфу.. марш читать про получить теперь

   Rie

31 — 21.08.13 — 08:33

(28) У Получить (в отличие от Выбрать) — надо указывать _все_ измерения.

   Starhan

32 — 21.08.13 — 08:35

Если так писать

Строка( КонИн.Выбрать(ОтборРегистра))

и с «Получить» ничего не выйдет

   galimovmaks

33 — 21.08.13 — 08:36

(32) я так и пишу

   Wobland

34 — 21.08.13 — 08:37

(33) цель достигнута?

   galimovmaks

35 — 21.08.13 — 08:37

Вариант синтаксиса: Для непериодического регистра

Синтаксис:

Получить(<Отбор>)

Параметры:

<Отбор> (необязательный)

Тип: Структура. (31)

какие еще измерения??

   Defender aka LINN

36 — 21.08.13 — 08:38

Это ливингстар ник поменял, или они просто из одного инкубатора?

   galimovmaks

37 — 21.08.13 — 08:38

(34) нет. он пустую строку выдает

   Wobland

38 — 21.08.13 — 08:39

(35) купи СП

Должны указываться значения для всех измерений.

   Rie

39 — 21.08.13 — 08:39

(35) У регистра сведений есть такая штука — измерения называются.

   Wobland

40 — 21.08.13 — 08:40

(36) не, ливингстар готовое хочет. а здесь товарищ просто не понимает. рад бы, да не доходит

   Rie

41 — 21.08.13 — 08:45

(37) Что-то вроде

ОтборРегистра = Новый Структура(«Объект,Вид,Тип»);

// это — все три измерения регистра сведений КонтактнаяИнформация

// теперь задаём их значения

ОтборРегистра.Объект = СсылкаНаОбъект.Организация;

ОтборРегистра.Вид = Справочники.ВидыКонтактнойИнформации.ФактАдресОрганизации;

ОтборРегистра.Тип = Перечисления.ТипыКонтактнойИнформации.Адрес;

// спрашиваем у регистра

СтруктАдрес = РегистрыСведений.КонтактнаяИнформация.Получить(ОтборРегистра);

// получили структуру, содержащую и значения ресурсов. Извлекаем нужное:

Адрес = СтруктАдрес.Представление;

// (тут возможны варианты — поэтому лучше использовать методы, преобразующие структуру адреса в строку адреса

   galimovmaks

42 — 21.08.13 — 08:49

(41) огромное спасибо!!! адрес выводится!)) теперь для телефона надо сделать) буду дальше думать)

   Starhan

43 — 21.08.13 — 08:51

(41) ну все, хрен он теперь СП откроет. Будет на мисту за готовым кодом ходить :)

(43) Ему не СП надо… СП — это лишь подсказка. ТС же, похоже, не понимает, что такое информационная база, как она устроена и с чем её едят (если «теперь для телефона надо сделать» вызывает трудности) :-(

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

Здравствуйте, помогите пожалуйста с проблемой.
У меня внешняя обработка, загрузка 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Выбор(Элемент, ВыбраннаяСтрока, Поле, СтандартнаяОбработка)
   ОткрытьЗначение(ВыбраннаяСтрока.Текст);
КонецПроцедуры

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

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

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

Ошибка при вызове метода контекста (НайтиПоСсылкам) по причине: Несоответствие типов (параметр номер ‘4’)

Описание ошибки:
При попытке использовать новый функционал функции НайтиПоСсылкам(), а именно использовать параметр <ИсключитьОбъекты>, возникает ошибка «Несоответствие типов (параметр номер ‘4’)»

Найденные решения:

Платформа 1С: Предприятие 8.3 развивается. Так же развивается инструментарий разработчика конфигураций. Вот развитие коснулось и функции НайтиПоСсылкам. Если ранее была возможность просто организовать посредством функции поиск всех ссылок на массив переданных в параметр функции объектов, то теперь стало  возможно указать область поска, включить объекты или наоборот — исключить.

Вроде бы на первый взгляд все достаточно просто: НайтиПоСсылкам(<СписокСсылок>, <ОбластьПоиска>, <ВключитьОбъекты>, <ИсключитьОбъекты>), последние три параметра в синтакс-помощнике объявлены как необязательные. Поэтому с уверенностью в своей правоте была создана конструкция:

  МассивИсключений = Новый Массив;

МассивИсключений.Добавить(Метаданные.Справочники.ЕдиницыИзмерения);

 МассивПоиска = Новый Массив;
     МассивПоиска.Добавить(Выборка.Ссылка);

РезультатПоиска = НайтиПоСсылкам(МассивПоиска, , , МассивИсключений);

Но, увы положительного результата использования новых возможностей функции НайтиПоСсылке не удалось получить по причине возникновения ошибки: Ошибка при вызове метода контекста (НайтиПоСсылкам) по причине: Несоответствие типов (параметр номер ‘4’)

1c 8 найтипоссылкам как указать исключения включить исключить объекты

Предположение о том, что не правильно указан объект метаданных в массиве с исключенными объектами был оперативно отклонен посредством наскоро найденной информации в сети. Но ошибка оставалась и создавала проблему. Отказываться от возможности воспоьзоваться столь подходящим функционалом не хотелось, поэтому попытки поиска решения устранения проблемы увенчались небольшим успехом благодаря обсуждению на форуме сайта infostart.ru. Оказалось, что в данном случае, даже учитывая тот факт, что параметры 2 и 3 не обязательные, но тем не менее хотя бы пустые массивы, но должны быть переданы в качестве параметров:

1с 8 не работает найтипоссылке не соответствие типа параметра

Таким образом оказалась рабочим следующая версия кода:

  МассивИсключений = Новый Массив;

МассивИсключений.Добавить(Метаданные.Справочники.ЕдиницыИзмерения);

 МассивПоиска = Новый Массив;
     МассивПоиска.Добавить(Выборка.Ссылка);

ПустойМассив = Новый Массив;

РезультатПоиска = НайтиПоСсылкам(МассивПоиска, ПустойМассив, Новый Массив, МассивИсключений);

Эта конструкция оказалась работоспособной и РезультатПоиска действитель в примере выводились ссылки за исключением ссылок на справочник «Единицы измерения» конфигурации 1С: Управление торговлей 8, ред. 10.3, для которой и реализовывалась задача.

Оцените, помогло ли Вам предоставленное описание решения ошибки?




© www.azhur-c.ru 2014-2020. Все права защищены. Использование текстов и изображений с данной страницы без письменного разрешения владельца запрещено. При использовании материалов с данной страницы обязательно указание ссылки на данную страницу.

30-11-2016

Журавлев А.С.
(Сайт www.azhur-c.ru)

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