Нельзя сравнивать поля неограниченной длины и поля несовместимых типов 1с
Довольно часто возникает необходимость сравнить значения, которые имеют тип "строка". Первым делом на ум приходит идея воспользоваться оператором сравнения " = ". Однако, в случае, когда одно из сравниваемых текстовых полей имеет неограниченную длину, сравнение закончится ошибкой "Нельзя сравнивать поля неограниченной длины и поля несовместимых типов". Здесь на помощь придёт другой оператор.
Оператор ПОДОБНО - оператор проверки строки на подобие шаблону. Позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон "%АБВ5[абвг]\_абв%" СПЕЦСИМВОЛ "\" означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.
Помогите пожалуйста добрые люди , с кодом в 1с. В обработке возникла вот такая ошибка , что делать ?
Ошибка:": Ошибка при вызове метода контекста (Выполнить)
ТаблицаИсполнителей = Запрос.Выполнить().Выгрузить();
по причине:
<(11, 56)>: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ИЛИ МедицинскиеУслуги.УникальныйИдентификаторУслуги <<?>>= &УникальныеИдентификаторыУслуг)"
Код:
Функция ДанныеУслуг(Знач ОбъектПечати, Знач УслугиПечати)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| МедицинскиеУслуги.Ссылка КАК Ссылка,
| ВЫРАЗИТЬ(МедицинскиеУслуги.УникальныйИдентификаторУслуги КАК СТРОКА(150)) КАК УникальныйИдентификаторУслуги,
| МедицинскиеУслуги.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ТаблицаУслуг
|ИЗ
| &ТаблицаУслуг КАК МедицинскиеУслуги
|ГДЕ
| МедицинскиеУслуги.Ссылка = &ОбъектПечати
| И (&БезОтбораУслуг = ИСТИНА
| ИЛИ МедицинскиеУслуги.УникальныйИдентификаторУслуги = &УникальныеИдентификаторыУслуг)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МедУслуги.Номенклатура КАК Номенклатура,
| МедицинскиеРабочиеМестаИсполнители.Сотрудник КАК Сотрудник
|ИЗ
| ТаблицаУслуг КАК МедУслуги
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СменныеЗадания КАК СменныеЗадания
| ПО МедУслуги.УникальныйИдентификаторУслуги = СменныеЗадания.УникальныйИдентификаторУслуги
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МедицинскиеРабочиеМеста.Исполнители КАК МедицинскиеРабочиеМестаИсполнители
| ПО (СменныеЗадания.МедицинскоеРабочееМесто = МедицинскиеРабочиеМестаИсполнители.Ссылка)
|ГДЕ
| НЕ МедицинскиеРабочиеМестаИсполнители.Ссылка ЕСТЬ NULL";
ТЧДокумента = СписокТЧ.Получить(ТипЗнч(ОбъектПечати));
Если ТЧДокумента = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
// МедицинскиеУслуги.УникальныйИдентификаторУслуги КАК УникальныйИдентификаторУслуги,
// | ИЛИ МедицинскиеУслуги.УникальныйИдентификаторУслуги В (&УникальныеИдентификаторыУслуг))
ИмяТаблицыДляЗапроса = ОбъектПечати.Метаданные().ПолноеИмя() + "." + ТЧДокумента;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаУслуг", ИмяТаблицыДляЗапроса);
Если УслугиПечати = Неопределено Тогда
сообщить("массив");
Запрос.УстановитьПараметр("УникальныеИдентификаторыУслуг", Новый Массив);
Иначе
сообщить("услуги печати");
Запрос.УстановитьПараметр("УникальныеИдентификаторыУслуг", УслугиПечати);
КонецЕсли;
ПустыеУслуги = (УслугиПечати = Неопределено) ИЛИ (ТипЗнч(УслугиПечати) = Тип("Массив") И УслугиПечати.Количество() = 0);
Запрос.УстановитьПараметр("ОбъектПечати", ОбъектПечати);
Запрос.УстановитьПараметр("БезОтбораУслуг", ПустыеУслуги);
ТаблицаНоменклатур = ТаблицаИсполнителей.Скопировать();
ТаблицаНоменклатур.Свернуть("Номенклатура");
МассивНоменклатур = ТаблицаНоменклатур.ВыгрузитьКолонку("Номенклатура");
ТаблицаСотрудников = ТаблицаИсполнителей.Скопировать();
ТаблицаСотрудников.Свернуть("Сотрудник");
МассивСотрудников = ТаблицаСотрудников.ВыгрузитьКолонку("Сотрудник");
Возврат Новый Структура("СписокУслуг, СписокСотрудников", МассивНоменклатур, МассивСотрудников);
Помогите пожалуйста добрые люди , с кодом в 1с. В обработке возникла вот такая ошибка , что делать ?
Ошибка:": Ошибка при вызове метода контекста (Выполнить)
ТаблицаИсполнителей = Запрос.Выполнить().Выгрузить();
по причине:
<(11, 56)>: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ИЛИ МедицинскиеУслуги.УникальныйИдентификаторУслуги <<?>>= &УникальныеИдентификаторыУслуг)"
Код:
Функция ДанныеУслуг(Знач ОбъектПечати, Знач УслугиПечати)
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ РАЗЛИЧНЫЕ
| МедицинскиеУслуги.Ссылка КАК Ссылка,
| ВЫРАЗИТЬ(МедицинскиеУслуги.УникальныйИдентификаторУслуги КАК СТРОКА(150)) КАК УникальныйИдентификаторУслуги,
| МедицинскиеУслуги.Номенклатура КАК Номенклатура
|ПОМЕСТИТЬ ТаблицаУслуг
|ИЗ
| &ТаблицаУслуг КАК МедицинскиеУслуги
|ГДЕ
| МедицинскиеУслуги.Ссылка = &ОбъектПечати
| И (&БезОтбораУслуг = ИСТИНА
| ИЛИ МедицинскиеУслуги.УникальныйИдентификаторУслуги = &УникальныеИдентификаторыУслуг)
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| МедУслуги.Номенклатура КАК Номенклатура,
| МедицинскиеРабочиеМестаИсполнители.Сотрудник КАК Сотрудник
|ИЗ
| ТаблицаУслуг КАК МедУслуги
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СменныеЗадания КАК СменныеЗадания
| ПО МедУслуги.УникальныйИдентификаторУслуги = СменныеЗадания.УникальныйИдентификаторУслуги
| ЛЕВОЕ СОЕДИНЕНИЕ Справочник.МедицинскиеРабочиеМеста.Исполнители КАК МедицинскиеРабочиеМестаИсполнители
| ПО (СменныеЗадания.МедицинскоеРабочееМесто = МедицинскиеРабочиеМестаИсполнители.Ссылка)
|ГДЕ
| НЕ МедицинскиеРабочиеМестаИсполнители.Ссылка ЕСТЬ NULL";
ТЧДокумента = СписокТЧ.Получить(ТипЗнч(ОбъектПечати));
Если ТЧДокумента = Неопределено Тогда
Возврат Неопределено;
КонецЕсли;
// МедицинскиеУслуги.УникальныйИдентификаторУслуги КАК УникальныйИдентификаторУслуги,
// | ИЛИ МедицинскиеУслуги.УникальныйИдентификаторУслуги В (&УникальныеИдентификаторыУслуг))
ИмяТаблицыДляЗапроса = ОбъектПечати.Метаданные().ПолноеИмя() + "." + ТЧДокумента;
Запрос.Текст = СтрЗаменить(Запрос.Текст, "&ТаблицаУслуг", ИмяТаблицыДляЗапроса);
Если УслугиПечати = Неопределено Тогда
сообщить("массив");
Запрос.УстановитьПараметр("УникальныеИдентификаторыУслуг", Новый Массив);
Иначе
сообщить("услуги печати");
Запрос.УстановитьПараметр("УникальныеИдентификаторыУслуг", УслугиПечати);
КонецЕсли;
ПустыеУслуги = (УслугиПечати = Неопределено) ИЛИ (ТипЗнч(УслугиПечати) = Тип("Массив") И УслугиПечати.Количество() = 0);
Запрос.УстановитьПараметр("ОбъектПечати", ОбъектПечати);
Запрос.УстановитьПараметр("БезОтбораУслуг", ПустыеУслуги);
ТаблицаНоменклатур = ТаблицаИсполнителей.Скопировать();
ТаблицаНоменклатур.Свернуть("Номенклатура");
МассивНоменклатур = ТаблицаНоменклатур.ВыгрузитьКолонку("Номенклатура");
ТаблицаСотрудников = ТаблицаИсполнителей.Скопировать();
ТаблицаСотрудников.Свернуть("Сотрудник");
МассивСотрудников = ТаблицаСотрудников.ВыгрузитьКолонку("Сотрудник");
Возврат Новый Структура("СписокУслуг, СписокСотрудников", МассивНоменклатур, МассивСотрудников);
Довольно часто возникает необходимость сравнить значения, которые имеют тип "строка". Первым делом на ум приходит идея воспользоваться оператором сравнения " = ". Однако, в случае, когда одно из сравниваемых текстовых полей имеет неограниченную длину, сравнение закончится ошибкой "Нельзя сравнивать поля неограниченной длины и поля несовместимых типов". Здесь на помощь придёт другой оператор.
Оператор ПОДОБНО - оператор проверки строки на подобие шаблону. Позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон "%АБВ5[абвг]\_абв%" СПЕЦСИМВОЛ "\" означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.
Читайте также:
- Как прошить самсунг s8 на компьютере
- Программа для восстановления сим карты телефона
- При написании формул вместо адреса ячейки указываются названия полей столбцов почему в эксель
- Чтобы посмотреть видео пожалуйста включите поддержку javascript или обновите ваш браузер ps3
- Почему не работает заливка в adobe animate