Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.71/141: Рейтинг темы: голосов - 141, средняя оценка - 4.71
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 97
1
1C 8.x

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

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

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

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
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.11.2016, 16:44
Ответы с готовыми решениями:

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

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

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

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

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

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

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

Не по теме:

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

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

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

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

Не по теме:

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

0
Эксперт 1С
3062 / 2009 / 524
Регистрация: 25.06.2009
Сообщений: 6,964
08.11.2016, 17:29 6

Не по теме:

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


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

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

перенесите выше в блок ПО
0
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 97
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
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
09.11.2016, 10:28 10
Neophyte1C, Я не обратил внимание "СсылкаНаОбъект = Справочники.Контрагенты;"

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

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

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

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

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

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

А следующим рисунком показан реквизит Владелец, к чему он относится и почему я его подставляю в условие.
В табло-1 показаны данные параметров.
Миниатюры
Неверные параметры в операции сравнения. Нельзя сравнивать поля  неограниченной длины и поля несовместимых тип   Неверные параметры в операции сравнения. Нельзя сравнивать поля  неограниченной длины и поля несовместимых тип  
0
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 97
09.11.2016, 11:37  [ТС] 14
renat_dmitriev, Весь этот рабочий код переношу в процедуру формы списка Справочники.Контрагенты и получаю ошибку.
Поэтому у меня возник вопрос...
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
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
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 97
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
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
09.11.2016, 11:54 17
1C
1
Запрос.УстановитьПараметр("Контрагент", ЭлементыФормы.СправочникСписок.ТекущаяСтрока);
1
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 97
09.11.2016, 11:57  [ТС] 18
renat_dmitriev, ответил так: Данные не заполнены.
0
392 / 294 / 121
Регистрация: 26.08.2016
Сообщений: 902
09.11.2016, 12:05 19
Neophyte1C, Посмотрите в отладчике ЭлементыФормы.СправочникСписок.ТекущаяСтрока чему равна?
0
6 / 6 / 5
Регистрация: 18.08.2016
Сообщений: 97
09.11.2016, 12:11  [ТС] 20
renat_dmitriev, СправочникСсылка.Контрагенты

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

Благодарю за помощь, дальше буду копать код...
0
09.11.2016, 12:11
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
09.11.2016, 12:11
Помогаю со студенческими работами здесь

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

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

Как можно сравнивать поля двух подчиненных форм?
У меня есть две подчиненные формы, расположенные рядышком. В одной в поле со списком выбирается...

Найти работу поля, разность потенциалов на концах участка, напряженность поля, объемную плотность энергии поля
Электрон разгоняется однородным полем на участке 10^(-2) см до скорости 4×10^6 м/с. Найти:...

Зависимые поля (список значений одного поля зависит от значения другого поля)
Здравствуйте, Уважаемые участники форума, изучив множество подобных вопросов на разных форумах,...

Как связать между собой два поля (список значений одного поля зависит от значения другого поля)
Есть таблица: предмет, КодТипаМатериала (список), КодМатериала (список) для примера: ...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru