Форум программистов, компьютерный форум, киберфорум
Наши страницы
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
 
Рейтинг 4.75/12: Рейтинг темы: голосов - 12, средняя оценка - 4.75
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
1

Неверные параметры в операции сравнения. Нельзя сравнивать поля неограниченной длины и поля несовместимых тип

08.11.2016, 16:44. Просмотров 2340. Ответов 27
Метки нет (Все метки)

Приветствую всех, написал запрос в отладчике печатной формы, все нужные данные он мне показывает.

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Запрос = Новый Запрос;                                                           
                Запрос.Текст = "ВЫБРАТЬ
                               |              ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 50) КАК Поле1
                               |ИЗ
                               |              РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                               |                              ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов
                               |                              ПО КонтактнаяИнформация.Объект = КонтактныеЛицаКонтрагентов.Ссылка
                               |ГДЕ
                               |              КонтактнаяИнформация.Тип = &Тип
                               |              И КонтактныеЛицаКонтрагентов.Владелец = &Владелец";                                 
                Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
                Запрос.УстановитьПараметр("Владелец",СсылкаНаОбъект);
                //Запрос.УстановитьПараметр("Вид",Справочники.ВидыКонтактнойИнформации.АдресЭлектроннойПочтыКонтрагентаДляОбменаДокументами);                                               
                Результат = Запрос.Выполнить();        
                Если Результат.Пустой() Тогда                                              
                               Сообщить("Данные не заполнены.");                              
                Иначе Выборка = Результат.Выбрать();                                           
                               Если Выборка.Следующий() Тогда                                     
                                               Сообщить(Выборка.Поле1);
                               КонецЕсли;       
                КонецЕсли;
Но как только подставляю этот код в форму списка контрагентов в процедуру, то получаю ошибку...
Тип у "Владелец" - СправочникСсылка.Контрагенты.

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
08.11.2016, 16:44
Ответы с готовыми решениями:

Нельзя сравнить поля неограниченной длины и несовместимых типов
Всем ХАЙ)) Тут такое дело: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ...

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

Убрать поля в запросе (скрыть поля в отчете скд)
В запросе я создаю временную таблицу. В ней сгруппировав поля получаю нужную...

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

Увеличить даты из поля дата на основании поля тип и вывести в третье поле
В поле тип может быть несколько вариантов и в зависимости от значения...

27
GreenkA
Модератор
Эксперт 1С
2275 / 1682 / 501
Регистрация: 25.06.2009
Сообщений: 6,176
08.11.2016, 17:15 2
Neophyte1C, а что у вас в СсылкаНаОбъект? там такой же тип? - СправочникСсылка.Контрагенты.
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
08.11.2016, 17:17  [ТС] 3
GreenkA, Да, СсылкаНаОбъект - СправочникСсылка.Контрагенты.
0
GreenkA
Модератор
Эксперт 1С
2275 / 1682 / 501
Регистрация: 25.06.2009
Сообщений: 6,176
08.11.2016, 17:25 4
Neophyte1C, так, а почему я вижу у вас в коде это
1C
1
Запрос.УстановитьПараметр("Владелец",СсылкаНаОбъект);
а на скрине в модуле какая-то чушь - что за "Справочники.КонтактныеЛицаКонтрагентов"?

Добавлено через 36 секунд
сравните код на скрине и текстовый выше - они разные. К чему бы это?

Добавлено через 4 минуты

Не по теме:

Кстати, по поводу скрина с текстом - изучите правила форума. П.5.18:

Запрещено размещать задания и решения в виде картинок и других файлов с их текстом.

1
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
08.11.2016, 17:29  [ТС] 5
GreenkA, В коде СсылкаНаОбъект - код в отладчике, а то что на скрине, код уже в справочнике формы списка, поэтому заменяю СсылкаНаОбъект на Справочники.КонтактныеЛицаКонтрагентов.
Сделал так:

1C
1
Запрос.УстановитьПараметр("Владелец",Справочники.Контрагенты);
Но всё равно ошибку получаю...

Не по теме:

Буду знать на будущее, сильно не бейте...))

0
GreenkA
Модератор
Эксперт 1С
2275 / 1682 / 501
Регистрация: 25.06.2009
Сообщений: 6,176
08.11.2016, 17:29 6

Не по теме:

Neophyte1C, да как так-то:wall:


должна же быть строка:
1C
1
Запрос.УстановитьПараметр("Владелец",СсылкаНаОбъект);
Вам надо установить в параметр один конкретный элемент.
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
08.11.2016, 17:30  [ТС] 7
GreenkA, чуть позже проверю...
0
renat_dmitriev
219 / 208 / 89
Регистрация: 26.08.2016
Сообщений: 685
08.11.2016, 22:49 8
У вас используется левое соединение, а таблица КонтактныеЛицаКонтрагентов у вас справа, в случае когда соединение не происходит, то есть в поле Объект таблицы Контактная информация не контактное лицр, а ссылка другого типа, поле КонтактныеЛицаКонтрагентов.Владелец равно NULL и сравнивать с &Владелец его нельзя, поэтому либо сделайте внутреннее соединение, либо условие

И КонтактныеЛицаКонтрагентов.Владелец = &Владелец

перенесите выше в блок ПО
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 10:17  [ТС] 9
GreenkA, renat_dmitriev, Если делаю так, то всё равно получаю ту же самую ошибку...

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
СсылкаНаОбъект = Справочники.Контрагенты;
    
    Запрос = Новый Запрос;              
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 100) КАК Поле1
                   |ИЗ
                   |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.КонтактныеЛицаКонтрагентов КАК КонтактныеЛицаКонтрагентов
                   |        ПО КонтактнаяИнформация.Объект = КонтактныеЛицаКонтрагентов.Ссылка
                   |        И КонтактныеЛицаКонтрагентов.Владелец = &Владелец
                   |ГДЕ
                   |    КонтактнаяИнформация.Тип = &Тип";
                   //|  И КонтактныеЛицаКонтрагентов.Владелец = &Владелец";         
    Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    Запрос.УстановитьПараметр("Владелец",СсылкаНаОбъект);           
    Результат = Запрос.Выполнить(); 
    Если Результат.Пустой() Тогда           
        Сообщить("Данные не заполнены.");       
    Иначе Выборка = Результат.Выбрать();            
        Если Выборка.Следующий() Тогда          
            Сообщить(Выборка.Поле1);
        КонецЕсли;  
    КонецЕсли;
0
renat_dmitriev
219 / 208 / 89
Регистрация: 26.08.2016
Сообщений: 685
09.11.2016, 10:28 10
Neophyte1C, Я не обратил внимание "СсылкаНаОбъект = Справочники.Контрагенты;"

В чем смысл этого? Вы чего хотите добиться этим?

Добавлено через 34 секунды
То есть что за данные вы пытаетесь получить?
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 10:33  [ТС] 11
renat_dmitriev, повторюсь, если выполняется код в заголовке темы в отладчике внешней формы, то я получаю сообщением адрес электронной почты контактного лица контрагента (1-ый рисунок в заголовке темы это отображает).
Тип у СсылкаНаОбъект - СправочникСсылка.Контрагенты

Но как только я подставляю код в процедуру формы списка справочника контрагенты, прописывая для

СсылкаНаОбъект = СправочникСсылка.Контрагенты

То получаю ошибку, показанную в 3-ем рисунке заголовка темы.
0
renat_dmitriev
219 / 208 / 89
Регистрация: 26.08.2016
Сообщений: 685
09.11.2016, 10:47 12
Neophyte1C, Еще раз - в чем смысл этого отбора "КонтактныеЛицаКонтрагентов.Владелец = &Владелец", что вы пытаетесь им отфильтровать? Потому что во Владелец по логике должна быть ссылка на конкретного контрагента, когда вы присваиваете Справочники.Контрагенты, то есть значение типа СправочникиМенеджер, это вообще не имеет никакого программного или логического смысла.

Посему пока вы не ответите простым русским языком чего вы хотите добиться этой фильтрацией, никто ничем вам помочь здесь не сможет.
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 11:33  [ТС] 13
renat_dmitriev, объясню, на следующем рисунке показано, что я открываю нужного мне контрагента (1.), где перехожу во вкладку "Контакты", нахожу контактное лицо контрагента (2.), открываю его (3.) и вижу адрес dsdcs@dsc.r, который мне и надо вывести, вывожу запросом в заголовке темы через отладчик.

А следующим рисунком показан реквизит Владелец, к чему он относится и почему я его подставляю в условие.
В табло-1 показаны данные параметров.
0
Миниатюры
Неверные параметры в операции сравнения. Нельзя сравнивать поля  неограниченной длины и поля несовместимых тип   Неверные параметры в операции сравнения. Нельзя сравнивать поля  неограниченной длины и поля несовместимых тип  
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 11:37  [ТС] 14
renat_dmitriev, Весь этот рабочий код переношу в процедуру формы списка Справочники.Контрагенты и получаю ошибку.
Поэтому у меня возник вопрос...
0
renat_dmitriev
219 / 208 / 89
Регистрация: 26.08.2016
Сообщений: 685
09.11.2016, 11:45 15
Neophyte1C,

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


1C
1
2
3
4
5
6
7
8
9
10
11
12
    Запрос = Новый Запрос;              
    Запрос.Текст = "ВЫБРАТЬ
                   |    КонтактнаяИнформация.Представление
                   |ИЗ
                   |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                   |       
                   |ГДЕ
                   |    КонтактнаяИнформация.Тип = &Тип
                   |    И КонтактнаяИнформация.Объект ССЫЛКА Справочник.КонтактныеЛицаКонтрагентов
                   |    И ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛицаКонтрагентов).Владелец = &Контрагент";
 
Запрос.УстановитьПараметр("Контрагент", ТутДолжнаБытьСсылкаНаВашегоКонтрагента);
Только так и никак иначе. И пока вы будете пихать Справочники.Контрагенты вместо ссылки на ООО Лена, у вас ничего никогда не выйдет.

Добавлено через 1 минуту
Цитата Сообщение от Neophyte1C Посмотреть сообщение
Весь этот рабочий код переношу в процедуру формы списка Справочники.Контрагенты и получаю ошибку.
Поэтому у меня возник вопрос...
Если этот код в процедуре формы списка, то

1C
1
Запрос.УстановитьПараметр("Контрагент", СправочникСписок.ТекущаяСтрока);
программа выведет данные по текущей строке списка.
1
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 11:52  [ТС] 16
renat_dmitriev, прописал так:

1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Запрос = Новый Запрос;              
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПОДСТРОКА(КонтактнаяИнформация.Представление, 0, 100) КАК Поле1
                    |ИЗ
                   |    РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
                   |       
                   |ГДЕ
                   |    КонтактнаяИнформация.Тип = &Тип
                   |    И КонтактнаяИнформация.Объект ССЫЛКА Справочник.КонтактныеЛицаКонтрагентов
                   |    И ВЫРАЗИТЬ(КонтактнаяИнформация.Объект КАК Справочник.КонтактныеЛицаКонтрагентов).Владелец = &Контрагент";          
    Запрос.УстановитьПараметр("Тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    Запрос.УстановитьПараметр("Контрагент", СправочникСписок.ТекущаяСтрока);            
    Результат = Запрос.Выполнить(); 
    Если Результат.Пустой() Тогда           
        Сообщить("Данные не заполнены.");       
    Иначе Выборка = Результат.Выбрать();            
        Если Выборка.Следующий() Тогда          
            Сообщить(Выборка.Поле1);
        КонецЕсли;  
    КонецЕсли;
Получаю ошибку:
{Справочник.Контрагенты.Форма.ФормаСписка.Форма(613)}: Поле объекта не обнаружено (ТекущаяСтрока)
Запрос.УстановитьПараметр("Контрагент", СправочникСписок.ТекущаяСтрока);
0
renat_dmitriev
219 / 208 / 89
Регистрация: 26.08.2016
Сообщений: 685
09.11.2016, 11:54 17
1C
1
Запрос.УстановитьПараметр("Контрагент", ЭлементыФормы.СправочникСписок.ТекущаяСтрока);
1
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 11:57  [ТС] 18
renat_dmitriev, ответил так: Данные не заполнены.
0
renat_dmitriev
219 / 208 / 89
Регистрация: 26.08.2016
Сообщений: 685
09.11.2016, 12:05 19
Neophyte1C, Посмотрите в отладчике ЭлементыФормы.СправочникСписок.ТекущаяСтрока чему равна?
0
Neophyte1C
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 82
09.11.2016, 12:11  [ТС] 20
renat_dmitriev, СправочникСсылка.Контрагенты

Странно, вот сейчас отобразил адрес: dsdcs@dsc.r

Благодарю за помощь, дальше буду копать код...
0
09.11.2016, 12:11
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.11.2016, 12:11

Сумма всех чисел поля, тип поля float.
Здравствуйте, я недавно начал изучать php и сейчас столкнулся с такой вот...

Дополнительные поля (Тип поля: список)
На сайте при добавлении имеется раздел "Выбор плеера" Значение поля (player) ...

EasyTable - неверные данные для поля TIME
что означает это сообщение? использовал базу данных EasyTable.


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru