|
|||
| EugeneSemyonov
29.08.12 — 22:54 |
доброй всем ночи!
помогите кто сможет! То ли лыжи не едут то ли я … |
||
| Aleksey
1 — 29.08.12 — 22:56 |
» Контрагенты.Ссылка ПОДОБНО % » — это что за еретизм? Что и с чем сравниваешь то? |
||
| Aleksey
2 — 29.08.12 — 22:56 |
ПОДОБНО — Оператор проверки строки на подобие шаблону. Аналог LIKE в SQL. (с) http://help1c.com/faq82/view/852.html |
||
| Джинн
3 — 29.08.12 — 22:57 |
ПОДОБНО «»%»» + &Наименование + «»%»» А так (1) прав — бред |
||
| Aleksey
4 — 29.08.12 — 22:58 |
(3) Ты или «&» убери или «+» |
||
| Джинн
5 — 29.08.12 — 22:58 |
(4) Ага. Туплю. |
||
| EugeneSemyonov
6 — 29.08.12 — 23:05 |
(1) % — любое количество любых символов, т.е. Запрос должен сдать всех. Единственое меня смущает может Ссылка и Представление не являются строками? Пытался так ПОДСТРОКА(контрагенты.ссылка) ПОДОБНО % — результат тот же. |
||
| Джинн
7 — 29.08.12 — 23:08 |
(6) Наименование… |
||
| vmv
8 — 29.08.12 — 23:21 |
(6) преобразование в строку из других типов запрос не делает, еретик — сжечь |
||
| EugeneSemyonov
9 — 29.08.12 — 23:22 |
(7) дочитал ссылку которую мне дал Алексей там внизу мелким шрифтом «не работает со строками неограниченой длины» и я понял в чем ошибка и тебе спасибо. Запрос для примера заработал, сейчас буду пробовать на рабочем запросе. |
||
| Aleksey
10 — 29.08.12 — 23:24 |
ВЫБРАТЬ Запрос.УстановитьПараметр(«Наименование», «%» + Текст + «%»); |
||
|
EugeneSemyonov 11 — 29.08.12 — 23:42 |
Ещё раз спасибо Джинн, Алексей! С наименованием всё получилось. |
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку «Обновить» в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
В общем, проблема в следующем: Мне нужно построить запрос из двух колонок: «Контрагент» и «Статус контрагента» (Покупатель, поставщик, прочее), а потом сформировать отчет, сгруппировав по статусу. Контрагент является поставщиком, если с ним проведен документ «Поступление товаров», покупателем, если «Реализация товаров» и прочим, если с ним не проведен ни один из названных. Идея следующая: Выбрать контрагентов из справочника, тип документа из журнала документа, связать их по контрагенту, указав, чтобы выводились все строчки из справочника «Контрагенты». Получается вот такой запрос:
ВЫБРАТЬ
Контрагенты.Наименование,
ДокументыУчетаТМЦ.Тип
ИЗ
Справочник.Контрагенты КАК Контрагенты
ЛЕВОЕ СОЕДИНЕНИЕ ЖурналДокументов.ДокументыУчетаТМЦ КАК ДокументыУчетаТМЦ
ПО (ДокументыУчетаТМЦ.Контрагент = Контрагенты.Ссылка)
ГДЕ
НЕ Контрагенты.ЭтоГруппа
Вроде как все хорошо, думал я, осталось прописать условный оператор с ПОДОБНО, но когда пытаюсь написать такую конструкцию:
ВЫБОР
КОГДА ДокументыУчетаТМЦ.Тип ПОДОБНО "Поступление%" ТОГДА "Поставщик"
КОГДА ДокументыУчетаТМЦ.Тип ПОДОБНО "Реализация%" ТОГДА "Покупатель"
ИНАЧЕ "Прочее"
КОНЕЦ
пишет, что неверные параметры ПОДОБНО. Чувствую, что решение прям совсем рядом, но не могу найти, помогите, пожалуйста
-
Добрый день. Создаю запрос, включаю в него условие ПОДОБНО. (тип строка).
У меня в этой строке есть служебные символы
например:
[00515465456]_8495156456184-103_20111026132442(163).wavЗапрос выдает пустой результат.
Как решить эту задачу, чтобы не перебирать все элементы? Помогите пожалуйста. -
Offline
Максим
Опытный в 1С- Регистрация:
- 28 фев 2008
- Сообщения:
- 745
- Симпатии:
- 8
- Баллы:
- 29
Что должен возвращать запрос? Где текст запроса?
-
Вот этот запрос не работает, (т.е. он работает если параметр «ИмяФайлаЗаписи» без служебных символов)
Запрос.Текст="ВЫБРАТЬ | ЗаказыЗаписиРазговоров.Ссылка.Ссылка |ИЗ | Документ.Заказы.ЗаписиРазговоров КАК ЗаказыЗаписиРазговоров |ГДЕ | ЗаказыЗаписиРазговоров.ПользовательПринявшийЗаявку = &Пользователь | И ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи ПОДОБНО &ИмяФайлаЗаписи"; Запрос.УстановитьПараметр("ИмяФайлаЗаписи",имяФайла); Запрос.УстановитьПараметр("Пользователь",Оператор);Сейчас сделал вот так, работает как надо, только времени больше теряется, и ресурсов.
Запрос=Новый запрос; Запрос.Текст="ВЫБРАТЬ | ЗаказыЗаписиРазговоров.Ссылка.Ссылка, | ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи |ИЗ | Документ.Заказы.ЗаписиРазговоров КАК ЗаказыЗаписиРазговоров |ГДЕ | ЗаказыЗаписиРазговоров.ПользовательПринявшийЗаявку = &Пользователь"; Запрос.УстановитьПараметр("Пользователь",Оператор); В1=запрос.Выполнить().Выбрать(); Пока В1.Следующий() Цикл Если В1.ИмяФайлаЗаписи=ИмяФайла Тогда ЗаказСсылка=В1.Ссылка; КонецЕсли; КонецЦикла; -
Offline
PavelBaryshev
Опытный в 1С- Регистрация:
- 9 сен 2008
- Сообщения:
- 326
- Симпатии:
- 0
- Баллы:
- 26
А если за место ПОДОБНО написать СОДЕРЖИТ
-
Offline
Максим
Опытный в 1С- Регистрация:
- 28 фев 2008
- Сообщения:
- 745
- Симпатии:
- 8
- Баллы:
- 29
Вместо этого
ЗаказыЗаписиРазговоров.Ссылка.Ссылка
Правильно писать это:
ЗаказыЗаписиРазговоров.Ссылка
Это работает быстрее. Результат тот же.
В первом примере
| И ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи ПОДОБНО &ИмяФайлаЗаписи"; </span> </FONT></FONT></pre>
Т.е. Вроде как ИмяФайлаЗаписи должно быть подобно имяФайла
Во втором примере:Если В1.ИмяФайлаЗаписи=ИмяФайла Тогда
Строгое равенство. Что-то странно. Почему тогда в запросе не использовать «=»?
-
Синтаксическая ошибка, «содержит» на сколько я знаю в запросе не используется.Реквизит «ИмяФайлаЗаписи» тип строка.
И если установить «=» появляется Синтаксическая ошибка -
Offline
Максим
Опытный в 1С- Регистрация:
- 28 фев 2008
- Сообщения:
- 745
- Симпатии:
- 8
- Баллы:
- 29
Запрос.Текст="ВЫБРАТЬ | ЗаказыЗаписиРазговоров.Ссылка |ИЗ | Документ.Заказы.ЗаписиРазговоров КАК ЗаказыЗаписиРазговоров |ГДЕ | ЗаказыЗаписиРазговоров.ПользовательПринявшийЗаявку = &Пользователь | И ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи = &ИмяФайлаЗаписи"; Запрос.УстановитьПараметр("ИмяФайлаЗаписи",имяФайла); Запрос.УстановитьПараметр("Пользователь",Оператор);Вот так будет ошибка?! Хотя может быть если длина строки не ограничена. У вас ведь неограниченная длина строки или нет?
-
Да, действительно тип строки без ограничения длины.
{Документ..Форма.ФормаДокумента(70)}: Ошибка при вызове метода контекста (Выполнить)
В1=запрос.Выполнить().Выбрать();
по причине:по причине:
{(8, 42)}: Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
И ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи <<?>>= &ИмяФайлаЗаписи -
Offline
Максим
Опытный в 1С- Регистрация:
- 28 фев 2008
- Сообщения:
- 745
- Симпатии:
- 8
- Баллы:
- 29
Для вашего примера:
[00515465456]_8495156456184-103_20111026132442(163).wav
ИмяФайлаЗаписи будет таким:
[00515465456]_8495156456184-103_20111026132442(163)
То есть тоже самое только, без расширения да?
-
РЕШЕНО. СПАСИБО БОЛЬШОЕ ЗАРАБОТАЛО.
Изменил неограниченную длину и все заработало. теперь можно в запросе установить «=» -
Offline
Максим
Опытный в 1С- Регистрация:
- 28 фев 2008
- Сообщения:
- 745
- Симпатии:
- 8
- Баллы:
- 29
Это было не обязательно был и другой выход…
-
А какой еще был выход если бы оставить неограниченную длину в реквизите и не перебирать все реквизиты в цикле? :angry:
-
Offline
has
Опытный в 1С- Регистрация:
- 18 июн 2009
- Сообщения:
- 708
- Симпатии:
- 0
- Баллы:
- 26
Наверное он имел ввиду оператор Выразить в запросе. Например
И ВЫРАЗИТЬ(ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи КАК Строка(100)) = &ИмяФайлаЗаписи
-
Offline
Максим
Опытный в 1С- Регистрация:
- 28 фев 2008
- Сообщения:
- 745
- Симпатии:
- 8
- Баллы:
- 29
Почти угадал
И ВЫРАЗИТЬ(ЗаказыЗаписиРазговоров.ИмяФайлаЗаписи КАК Строка(100)) ПОДОБНО &ИмяФайлаЗаписи + ""%""
Я думаю должно сработать
Оператор «ПОДОБНО», в языке запросов 1С 8.3, предназначен для сравнения строковых выражений с заданным шаблоном. Результатом такой проверки будет «Ложь» или «Истина». Отличие от оператора « = », заключается в возможности использования спецсимволов.
Синтаксис:
<Строковое выражение> ПОДОБНО <«Шаблон»>
Следует понимать, что спецсимволы оператора ПОДОБНО несут служебный характер и их смысл (назначение) отличается от обычных символов.
Пояснение спецсимволов:
- « % » — любое количество обычных произвольных символов;
- « _ » — один любой обычный символ;
- « […] » — в таких скобках, возможно, указать последовательность обычных символов или диапазон (а-д, 0-5 и подобные);
- « [^…] » — с помощью знака « ^ » в квадратных скобках, можно исключить последовательность обычных символов или диапазон (а-д, 0-5 и подобные).
Рассмотрим работу такого оператора на примерах.
Наша команда предоставляет услуги по консультированию, настройке и внедрению 1С.
Связаться с нами можно по телефону +7 499 350 29 00.
Услуги и цены можно увидеть по ссылке.
Будем рады помочь Вам!
Содержание
- Оператор «ПОДОБНО» в полях выборки запроса
- Оператор «ПОДОБНО» в конструкции условного оператора «Где»
- Оператор «ПОДОБНО» в конструкции условного оператора «ВЫБОР»
- Как сравнивать текст по спецсимволу (%,..)
- Использование параметров в конструкции «ПОДОБНО»
- Возможные ошибки
Оператор «ПОДОБНО» в полях выборки запроса
ВЫБРАТЬ
Номенклатура.Наименование ПОДОБНО «Мол%» КАК Молоко,
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
Результат:

В данном примере проверяем каждую строку, начинается ли она на «Мол», для наглядности выводим такое же поле без применения оператора «ПОДОБНО».
Оператор «ПОДОБНО» в конструкции условного оператора «Где»
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Наименование ПОДОБНО «_о%»
Результат:

Из результата запроса понятно, что были отобраны поля, у которых вторая буква « о », а после неё любые произвольные символы.
Оператор «ПОДОБНО» в конструкции условного оператора «ВЫБОР»
ВЫБРАТЬ
ВЫБОР
КОГДА Номенклатура.Наименование ПОДОБНО «%[л]%»
ТОГДА Номенклатура.Наименование
ИНАЧЕ «Не соответствует шаблону»
КОНЕЦ КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
Результат:

В таком примере помечаем поля, в которых не содержится буква « л ».
Как сравнивать текст по спецсимволу (%,..)
Для реализации таких задач требуется пользоваться ключевым словом СПЕЦСИМВОЛ. Указав любой символ после такого ключевого слова, система, в шаблоне конструкции ПОДОБНО, будет воспринимать следующий символ за ним как обычный.
ВЫБРАТЬ
Номенклатура.Наименование КАК Наименование
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Наименование ПОДОБНО «%/%» СПЕЦСИМВОЛ «/»

В таком примере были выбраны все поля содержащие знак « % » в конце.
Использование параметров в конструкции «ПОДОБНО»
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Наименование КАК Наименование |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Наименование ПОДОБНО &Шаблон"; Запрос.УстановитьПараметр("Шаблон", "М%");
Результат:

Установив параметр запроса в значение «М%», отбираем все поля, которые начинаются на символ « М ».
Возможные ошибки
Следует учитывать, что шаблон из конструкции оператора «ПОДОБНО» должен иметь исключительно строковый тип данных так же недопустимо формировать шаблон путём сложений строк.
Примеры неправильного формирования шаблона:
- Номенклатура.Наименование ПОДОБНО Таблица.Шаблон
- Номенклатура.Наименование ПОДОБНО «Мол» + «%»
|
Yulunga 1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,078 Записей в блоге: 1 |
||||
|
1 |
||||
|
13.09.2017, 09:45. Показов 3928. Ответов 8 Метки нет (Все метки)
Прекрасного летнего утра !
{ВнешняяОбработка.КонсольЗапросов_8_3.МодульОбъект а(89)}: Ошибка при вызове метода контекста (НайтиПараметры): {(9, 2)}: Неверные параметры «ПОДОБНО» измаялся. ЧЯДНТ?
0 |
|
841 / 604 / 211 Регистрация: 24.07.2013 Сообщений: 2,101 |
|
|
13.09.2017, 10:32 |
2 |
|
Представление — это виртуальной поле. Насколько помню, его нельзя использовать нигде, кроме как выбрать в качестве поля. Добавлено через 1 минуту
задача — мне надо именно заказ Воспользуйся операцией ССЫЛКА, или сравнением типов.
0 |
|
1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,078 Записей в блоге: 1 |
|
|
13.09.2017, 10:42 [ТС] |
3 |
|
Tklwegsd, не работает про представление понял. спасибо.
0 |
|
841 / 604 / 211 Регистрация: 24.07.2013 Сообщений: 2,101 |
|
|
13.09.2017, 11:33 |
4 |
|
только его разновидности. для них существуют разные формы Ну так каким-то значением они друга от друга отличаются.
1 |
|
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
|
13.09.2017, 12:00 |
5 |
|
Не по теме: Yulunga, «подобно бесподобно»?:D Ты вроде тролль, но с тобой так весело… Прям открываешь и понимаешь, тему переименовать надо, но не хочется:good: Добавлено через 8 минут
0 |
|
1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,078 Записей в блоге: 1 |
|
|
13.09.2017, 12:02 [ТС] |
6 |
|
РешениеТклвегсд спасибо! Нашёл я этот реквизит, который отвечает за нужное. Объект «Перечисление.ВидыОперацийЗаказПокупателя» использован в: GreenkA, ты бы посидела с 7 до 10 утра , не смогя написать простейший запрос, на котором ваще не собирался останавливаться (( Не по теме: троль, троль. низкий и толстый.не надо меня банить. я иногда приношу пользу. а иногда толстых партизан. Добавлено через 1 минуту
1 |
|
3051 / 1998 / 524 Регистрация: 25.06.2009 Сообщений: 6,964 |
|
|
13.09.2017, 12:23 |
7 |
|
В УНФ действительно есть документ-основание… И разве реквизит ВидОперации — не перечисление?
0 |
|
1117 / 671 / 195 Регистрация: 22.04.2013 Сообщений: 5,078 Записей в блоге: 1 |
|
|
13.09.2017, 20:46 [ТС] |
8 |
|
В УНФ действительно есть документ-основание… И разве реквизит ВидОперации — не перечисление? документ основание будет заказпокупателя. Не по теме: Ученые выяснили, что тролли в интернете — преимущественно мужчины. Исследователи связали это с большей склонностью мужчин к самолюбованию и привлечению внимания других людей.
0 |
|
GreenkA |
|
13.09.2017, 21:22
|
|
Не по теме:
троллингом в сети занимаются только мужчины …сказал один тролль…
0 |

Сообщение было отмечено GreenkA как решение