1с недопустимый тип сравнения
Довольно часто возникает необходимость сравнить значения, которые имеют тип "строка". Первым делом на ум приходит идея воспользоваться оператором сравнения " = ". Однако, в случае, когда одно из сравниваемых текстовых полей имеет неограниченную длину, сравнение закончится ошибкой "Нельзя сравнивать поля неограниченной длины и поля несовместимых типов". Здесь на помощь придёт другой оператор.
Оператор ПОДОБНО - оператор проверки строки на подобие шаблону. Позволяет сравнить значение выражения, указанного слева от него, со строкой шаблона, указанной справа. Значение выражения должно иметь тип строка. Если значение выражения удовлетворяет шаблону – результатом оператора будет ИСТИНА, иначе – ЛОЖЬ.
Следующие символы в строке шаблона являются служебными и имеют смысл, отличный от символа строки:
% (процент): последовательность, содержащая любое количество произвольных символов
_ (подчеркивание): один произвольный символ
[…] (в квадратных скобках один или несколько символов): любой одиночный символ из перечисленных внутри квадратных скобок
В перечислении могут встречаться диапазоны, например a-z, означающие произвольный символ, входящий в диапазон, включая концы диапазона.
[^…] (в квадратных скобках значок отрицания, за которым следует один или несколько символов): любой одиночный символ, кроме тех, которые перечислены следом за значком отрицания.
Любой другой символ означает сам себя и не несет никакой дополнительной нагрузки.
Если в качестве самого себя необходимо записать один из перечисленных символов, то ему должен предшествовать <Спецсимвол>. Сам <Спецсимвол> (любой подходящий символ) определяется в этом же операторе после ключевого слова СПЕЦСИМВОЛ.
Например, шаблон "%АБВ8[абвг]\_абв%" СПЕЦСИМВОЛ "\" означает подстроку, состоящую из последовательности символов: буквы А; буквы Б; буквы В; одной цифры; одной из букв а, б, в или г; символа подчеркивания; буквы а; буквы б; буквы в. Причем перед этой последовательностью может располагаться произвольный набор символов.
Приветствую всех, написал запрос в отладчике печатной формы, все нужные данные он мне показывает.
Но как только подставляю этот код в форму списка контрагентов в процедуру, то получаю ошибку.
Тип у "Владелец" - СправочникСсылка.Контрагенты.
Помощь в написании контрольных, курсовых и дипломных работ здесь
Нельзя сравнить поля неограниченной длины и несовместимых типов
Всем ХАЙ)) Тут такое дело: Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ.
Тип поля серийного номера большой длины
Добрый день, Подскажите какой лучше/правильнее выбрать тип поля для серийного номера длинной 19.
Увеличить даты из поля дата на основании поля тип и вывести в третье поле
В поле тип может быть несколько вариантов и в зависимости от значения увеличивать дату. Если тип =.
Сумма всех чисел поля, тип поля float.
Здравствуйте, я недавно начал изучать php и сейчас столкнулся с такой вот проблемой. В общем.
а на скрине в модуле какая-то чушь - что за "Справочники.КонтактныеЛицаКонтрагентов"?
Добавлено через 36 секунд
сравните код на скрине и текстовый выше - они разные. К чему бы это?
Добавлено через 4 минуты
Кстати, по поводу скрина с текстом - изучите правила форума. П.5.18:
GreenkA, В коде СсылкаНаОбъект - код в отладчике, а то что на скрине, код уже в справочнике формы списка, поэтому заменяю СсылкаНаОбъект на Справочники.КонтактныеЛицаКонтрагентов.
Сделал так:
Но всё равно ошибку получаю.
Буду знать на будущее, сильно не бейте. ))
Neophyte1C, да как так-то:wall:
Вам надо установить в параметр один конкретный элемент.У вас используется левое соединение, а таблица КонтактныеЛицаКонтрагентов у вас справа, в случае когда соединение не происходит, то есть в поле Объект таблицы Контактная информация не контактное лицр, а ссылка другого типа, поле КонтактныеЛицаКонтрагентов.Владелец равно NULL и сравнивать с &Владелец его нельзя, поэтому либо сделайте внутреннее соединение, либо условие
И КонтактныеЛицаКонтрагентов.Владелец = &Владелец
перенесите выше в блок ПО
GreenkA, renat_dmitriev, Если делаю так, то всё равно получаю ту же самую ошибку.
Neophyte1C, Я не обратил внимание "СсылкаНаОбъект = Справочники.Контрагенты;"
В чем смысл этого? Вы чего хотите добиться этим?
Добавлено через 34 секунды
То есть что за данные вы пытаетесь получить?
Но как только я подставляю код в процедуру формы списка справочника контрагенты, прописывая для
То получаю ошибку, показанную в 3-ем рисунке заголовка темы.
Neophyte1C, Еще раз - в чем смысл этого отбора "КонтактныеЛицаКонтрагентов.Владелец = &Владелец", что вы пытаетесь им отфильтровать? Потому что во Владелец по логике должна быть ссылка на конкретного контрагента, когда вы присваиваете Справочники.Контрагенты, то есть значение типа СправочникиМенеджер, это вообще не имеет никакого программного или логического смысла.
Посему пока вы не ответите простым русским языком чего вы хотите добиться этой фильтрацией, никто ничем вам помочь здесь не сможет.
renat_dmitriev, объясню, на следующем рисунке показано, что я открываю нужного мне контрагента (1.), где перехожу во вкладку "Контакты", нахожу контактное лицо контрагента (2.), открываю его (3.) и вижу адрес [email protected], который мне и надо вывести, вывожу запросом в заголовке темы через отладчик.
А следующим рисунком показан реквизит Владелец, к чему он относится и почему я его подставляю в условие.
В табло-1 показаны данные параметров.
Поэтому у меня возник вопрос.
Соединение с таблицей КонтактныеЛицаКонтрагентов вообще абсолютно бессмысленно. Если вы хотите выбрать контактную информацию определенного типа по конкретному контрагенту, достаточно обращения к таблице контактной информации
Только так и никак иначе. И пока вы будете пихать Справочники.Контрагенты вместо ссылки на ООО Лена, у вас ничего никогда не выйдет.
Видеоролик выполнен в программе «1С:Бухгалтерия 8» релиз 3.0.43.173.
Настройка отображения данных, сортировки строк списка, а также группировки списка в таблице и оформления списка выполняется в диалоге Настройка списка. Диалог открывается командой Еще – Настроить список....
В диалоге предоставляется возможность настроить:
- отбор данных в списке;
- поля, по которым необходимо проводить упорядочивание;
- условное оформление списка;
- поля, по которым необходимо группировать данные;
- другие настройки.
Все настройки распределены на закладках: Основные, Отбор, Сортировка, Условное оформление и Группировка.
Установка отбора в списке
Отбор позволяет просматривать только те данные, которые удовлетворяют всем заданным условиям. Чтобы установить отбор в списке, следует в диалоге Настройка списка перейти на закладку Отбор и добавить элементы отбора.
Для добавления настройки элемента отбора следует в списке доступных полей указать поле и выполнить команду Выбрать. Поле добавляется в список элементов настройки. В левой колонке для него будет установлен флаг использования. Также можно выполнить команду Добавить новый элемент или просто перетащить поле из списка Доступные поля. В колонке Вид сравнения нужно выбрать требуемый вид сравнения из списка и указать значение в одноименной колонке.
Если отбор нужно выполнить по нескольким условиям, то в список элементов настройки нужно добавить другие поля со своими условиями.
Условия можно сгруппировать, объединив их логическими операторами (Группа И, Группа Или, Группа Не). Для этого используется кнопка Сгруппировать.
При необходимости можно изменить порядок, в котором условия будут применяться к списку. Для этого достаточно выделить элемент и перетащить его в нужное место.
Для отмены настройки ее следует удалить или снять флаг использования.
Например, для того чтобы в списке выставленных покупателям счетов отобрать документы, комментарии к которым не содержат слово «молоко», нужно выполнить следующие действия:
- добавить в колонку Поле значение Комментарий;
- указать вид сравнения Не содержит;
- в колонке Значение указать значение «молоко».
Чтобы применить настройку отбора в списке, следует нажать кнопку Завершить редактирование.
Сортировка, группировка и условное оформление списка
Чтобы установить сортировку в списке, следует перейти на закладку Сортировка. Для добавления элемента сортировки следует нажать Добавить новый элемент порядка (или перетащить поле из списка Доступные поля и выбрать Направление сортировки (По возрастанию/По убыванию). Если полей сортировки несколько, то в списке данные будут отсортированы вначале по первому полю, потом по второму и т. д. Последовательность элементов сортировки полей можно поменять, выделив строки и перетащив их в нужное место.
Чтобы применить настройку сортировки в списке, нажать кнопку Завершить редактирование.
Чтобы сгруппировать записи в списке, следует в диалоге настройки перейти на закладку Группировка и добавить поле, по которому необходимо провести группировку. Если было выбрано несколько полей, то записи в списке будут последовательно сгруппированы в порядке, установленном для полей группировки.
Чтобы применить настройку группировки, следует нажать кнопку Завершить редактирование.
Для настройки условного оформления следует в диалоге настройки перейти на закладку Условное оформление и в табличном поле добавить необходимые элементы.
Редактирование элемента условного оформления выполняется в отдельном окне:
- на закладке Оформление можно выбрать требуемые параметры оформления (цвет фона, цвет текста, шрифт и т. д.);
- на закладке Условие можно поставить условие, при выполнении которого оформление будет применяться к полям. Условие устанавливается аналогично отбору;
- на закладке Оформляемые поля нужно выбрать поля из списка доступных полей, к которым будет применяться оформление, если условие выполнено.
Чтобы применить настройку условного оформления, следует нажать кнопку OK.
Настройки динамического списка сохраняются автоматически при закрытии формы и автоматически загружаются при открытии формы в новом сеансе работы.
Чтобы сохранить установленный набор настроек в форме списка, нужно выбрать команду Еще – Сохранить настройки…. В открывшемся диалоге ввести название настройки и нажать кнопку Сохранить.
Для использования созданных ранее настроек списков нужно выбрать Еще – Выбрать настройки. . В открывшемся диалоге выбрать требуемую настройку из списка ранее сохраненных настроек и нажать Выбрать.
Вернуть настройки списка по умолчанию можно командой Еще – Установить стандартные настройки.
На прошлых занятиях мы изучили примитивные типы данных Число, Строка, Дата и Булево, ознакомьтесь с этими материалами, прежде чем приступить к изучению этого.
Неопределено – значение данного типа применяются, когда необходимо использовать значение, не принадлежащее ни к одному конкретному типу. Означает, что у объявленной переменной может быть любой тип, но пока тип не определен.
Тип – представляет собой объект для управления допустимыми типами значений данных.
Присвоение значения объекту «Тип данных» посредством чтения реквизита
Для того, чтобы понять этот тип данных, создадим обработку, которая позволит менять значение некоторой переменной. Мы создадим переменную А, которая может принимать следующие значения:
Для демонстрации принципов работы с этим типом данных создадим новую форму обработки.
Сразу добавим в нее следующие реквизиты:
- НашаПеременная, укажем для нее Составной тип данных: Строка, Число, Дата и Булево
- ПрисвоеныйТип – Строка длинной 15 символов
- Комментарий - Строка неограниченной длины
Затем поместим реквизиты на созданную конструктором форму.
Создадим процедуру-обработчик события при изменении значения реквизита НашаПеременная. Цель обработчика – определять тип данных реквизита, для этого используется функция ТипЗначения или ТипЗнч
На первом этапе объявим переменную А и создадим предопределенную процедуру-обработчик ПриОткрытии. Обработчик будет подтягивать в поле Комментарий примитивный тип данных реквизита НашаПеременная.
Обратите внимание, что программа не выполнит процедуру-обработчик, если мы не привяжем его к событию. В данном случае мы вызвали выполнение процедуры ТипЗначения (А), объявив ее в другой процедуре.
Теперь при открытии формы обработки можно увидеть, что созданная переменная А имеет тип Неопределено.
На втором этапе дополним код предопределенным обработчиком ПриИзменении для реквизита НашаПеременная. Задача обработчика – обновлять реквизит Комментарий каждый раз при изменении реквизита НашаПеременная.
В результате мы создали обработку, которая задает переменную А через взаимодействие с реквизитом НашаПеременная. Также мы создали процедуру ТипЗначения (А), которая выводит Тип выбранного значения примитивных данных в реквизите Комментарий.
Однако, такой способ управления переменной нельзя назвать практичным – необходимо создавать реквизит, цель которого не хранить и записывать данные, а быть переключателем типа данных.
Полный курс программиста 1С – с нуля до разработчика, способного решать практические учетные задачи в любой области.
Присвоение значения объекту «Тип данных» посредством команды
Далее мы рассмотрим более лаконичный механизм, который позволит присвоить переменной А необходимое значение при помощи соответствующих команд.
Так, чтобы присвоить переменной А тип Строка, создадим команду ТипСтрока и выведем ее на форму.
Теперь создадим процедуру-обработчик команды, которая назначит переменной А новое значение.
Для присвоения нового значения используется процедура ОписаниеТипов. При этом помимо непосредственно значения переменной А, обработчик выведет использованный код в строку Комментарий.
Для заполнения реквизита формы ПрисвоенныйТип создадим процедуру заполнения этого реквизита полученным значением.
После выполнения команды получаем результат:
Теперь создадим на управляемой форме аналогичные команды и процедуры-обработчики для присвоения переменной переменной А примитивных типов:
Вы можете попробовать сделать это самостоятельно.
Теперь при выполнении каждой команды реквизит формы ПрисвоенныйТип будет показывать какой тип данных присвоен переменной А, а реквизит Комментарий покажет строку программного кода, которая присваивает переменной А нужный тип примитивных данных.
Освойте навыки разработчика 1С на очных специализированных курсах от крупнейшей компании-франчайзи 1С.
Читайте также: