Вход | Регистрация



Поиск по вхождению в строке

Поиск по вхождению в строке
Я
   yyyuuu
 
31.08.18 - 15:39
Здравствуйте друзья, столкнулся с задачей.
Есть некая таблица значений, содержащая данные.
Читаю ее запросом, в ней есть поле "Наименование" это может быть и компутер и системный блок и вдеокарта и роутер и принтер.
Для всех этих элементов есть специальный справочник, куда по категориям надо все запхать.
Как мне определить по вхождению в строку, что куда пихать. Условие то напишу не сложно будет определить зная точное вхождение.

ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Сотрудники", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));

Запрос1 = Новый Запрос;
Запрос1.Текст = 
    "ВЫБРАТЬ
    |    Сотрудники.Код,
    |    Сотрудники.Наименование
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники";

    РезультатЗапроса = Запрос1.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);
    

////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

//*****************************************************************************//

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("ТЗ", ТЗ);
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ТЗ.Код,
        |    ТЗ.Наименование
        |ПОМЕСТИТЬ Таблица
        |ИЗ
        |    &ТЗ КАК ТЗ
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    Таблица.Код,
        |    Таблица.Наименование
        |ИЗ
        |    Таблица КАК Таблица";

    РезультатЗапроса = Запрос.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Наименование; 
    КонецЦикла;

Пока на тесте проверяю, и думаю как сделать.
ВыборкаДетальныеЗаписи.Наименование здесь у меня точно наименование "компутер Acer 5232" по условию буду хочу проверять на вхождение "компутер" если подошел запишу в нужную группу.
Вторая итерация "Системный блок" проверяю на "Компутер" = ложь иначе ..... доходим до "Системный" условие и в нужную группу. Есть у кого нибудь мысли или опыт реализации. Я что то не нашел, вообще в 1с проверки вхождения в строку
 
 
   Lexey_
 
1 - 31.08.18 - 15:43
(0) в запросе ПОДОБНО, в коде СтрНайти()
   yyyuuu
 
2 - 31.08.18 - 15:53
А вот тут Я честно немного заглох, да тоже хотел сделать подобно. Но вот смотри, запросом выбираю все группы, которые в справочнике. Получаю таблицу значений с группами. В одни запрос могу Я запихать две таблицы значений?
   yyyuuu
 
3 - 31.08.18 - 15:53
(1)
   Lexey_
 
4 - 31.08.18 - 15:54
(2) да
   sitex
 
5 - 31.08.18 - 15:57
(0) регулярными выражениями в запросе
   yyyuuu
 
6 - 31.08.18 - 16:03
(4)
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Сотрудники", Новый ОписаниеТипов("СправочникСсылка.Сотрудники"));
ТЗ_Группы = Новый ТаблицаЗначений;

Запрос1 = Новый Запрос;
Запрос1.Текст = 
    "ВЫБРАТЬ
    |    Сотрудники.Код,
    |    Сотрудники.Наименование
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники";

    РезультатЗапроса = Запрос1.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);
    
    Запрос2 = Новый Запрос;
    Запрос2.Текст = 
        "ВЫБРАТЬ
        |    Тест.Родитель,
        |    Тест.Наименование
        |ИЗ
        |    Справочник.Тест КАК Тест";

    РезультатЗапроса = Запрос2.Выполнить();
    ТЗ_Группы = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);
        
////////////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////////

    Запрос3 = Новый Запрос;
    Запрос3.УстановитьПараметр("ТЗ", ТЗ);
    Запрос3.УстановитьПараметр("ТЗ_Группы", ТЗ_Группы);
    Запрос3.Текст = 
        "ВЫБРАТЬ
        |    ТЗ.Код,
        |    ТЗ.Наименование,
        |    ТЗ_Группы.Наименование1
        |ПОМЕСТИТЬ Таблица
        |ИЗ
        |    &ТЗ КАК ТЗ,
        |    &ТЗ_Группы КАК ТЗ_Группы
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    Таблица.Код,
        |    Таблица.Наименование,
        |    Таблица.Наименование1
        |ИЗ
        |    Таблица КАК Таблица";

    РезультатЗапроса = Запрос3.Выполнить();

    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();

    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    
    КонецЦикла;
Верно мысль идет?
   Lexey_
 
7 - 31.08.18 - 16:05
(6) помести каждую ТЗ в свою временную таблицу
   yyyuuu
 
8 - 31.08.18 - 16:18
(7) Теперь можно соединять?

Запрос1 = Новый Запрос;
Запрос1.Текст = 
    "ВЫБРАТЬ
    |    Сотрудники.Код,
    |    Сотрудники.Наименование
    |Поместить ВТ_ТаблицаГрупп
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники";
    
    МенеджерВТ = Новый МенеджерВременныхТаблиц;
    Запрос1.МенеджерВременныхТаблиц = МенеджерВТ;
    РезультатЗапроса = Запрос1.Выполнить();
    
    //ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);


    Запрос2 = Новый Запрос;
    Запрос2.Текст = 
        "ВЫБРАТЬ
        |    Тест.Родитель,
        |    Тест.Наименование
        |Поместить ВТ_ВремТабл
        |ИЗ
        |    Справочник.Тест КАК Тест";
        
    МенеджерВТ1 = Новый МенеджерВременныхТаблиц;
    Запрос2.МенеджерВременныхТаблиц = МенеджерВТ1;
    РезультатЗапроса = Запрос2.Выполнить();
   Lexey_
 
9 - 31.08.18 - 16:21
(8) достаточно одного запроса
   Lexey_
 
10 - 31.08.18 - 16:23
(8) хотя тут ни одной ТЗ нет
 
 Рекламное место пустует
   yyyuuu
 
11 - 31.08.18 - 16:25
(10) Что не так делаю, дай подсказку. Что то сижу сообразить вообще не могу.
   yyyuuu
 
12 - 31.08.18 - 16:27
А вообще постой
   yyyuuu
 
13 - 31.08.18 - 16:30
(10) Как говорить идем от печки.
1)Получаем ТЗ

Запрос1 = Новый Запрос;
Запрос1.Текст = 
    "ВЫБРАТЬ
    |    Сотрудники.Код,
    |    Сотрудники.Наименование
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники";
    
    РезультатЗапроса = Запрос1.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);

Получили.Его во временную таблицу запихиваем?
   Lexey_
 
14 - 31.08.18 - 16:31
(13) зачем выгружаешь в ТЗ? Сразу в запросе во временную таблицу помещай
   yyyuuu
 
15 - 31.08.18 - 16:35
Запрос1 = Новый Запрос;
Запрос1.Текст = 
    "ВЫБРАТЬ
    |    Сотрудники.Код,
    |    Сотрудники.Наименование
    |ПОМЕСТИТЬ Табл_Зап1
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники";
    
    менеджерВТ = Новый МенеджерВременныхТаблиц;
    Запрос1.МенеджерВременныхТаблиц = МенеджерВТ;
    //

    РезультатЗапроса = Запрос1.Выполнить();

Разобрались.
Шаг Второй..
   yyyuuu
 
16 - 31.08.18 - 16:59
Запрос1 = Новый Запрос;
Запрос1.Текст = 
    "ВЫБРАТЬ
    |    Сотрудники.Код,
    |    Сотрудники.Наименование
    |ПОМЕСТИТЬ Табл_Зап1
    |ИЗ
    |    Справочник.Сотрудники КАК Сотрудники";
    
    менеджерВТ1 = Новый МенеджерВременныхТаблиц;
    Запрос1.МенеджерВременныхТаблиц = МенеджерВТ1;
    РезультатЗапроса = Запрос1.Выполнить();
    //ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);


    Запрос2 = Новый Запрос;
    Запрос2.Текст = 
        "ВЫБРАТЬ
        |    Тест.Родитель,
        |    Тест.Наименование,
        |    Табл_Зап1.Код,
        |    Табл_Зап1.Наименование КАК Наименование1
        |ПОМЕСТИТЬ ВТ_ВремТабл
        |ИЗ
        |    Справочник.Тест КАК Тест,
        |    Табл_Зап1 КАК Табл_Зап1";
        
    Запрос2.МенеджерВременныхТаблиц = МенеджерВТ1;
    РезультатЗапроса = Запрос2.Выполнить().Выгрузить();

Хотя бы алгоритм действий что требуется подскажите. А то заглох
   yyyuuu
 
17 - 31.08.18 - 17:10
На сколько Я понял. Получаем ТЗ
1) Загружаем во временную таблицу из Тч Наименования
2) Второй запрос загружаем из справочника группы тоже во временную таблицу
3)Соеденяем. По условию подобно отбираем нужное
   yyyuuu
 
18 - 31.08.18 - 17:33
Буду благодарен очень, даже за просто алгоритм действий. Пока в голове сам сообразить не могу
   yyyuuu
 
19 - 01.09.18 - 01:59
Ладно, сам буду разруливать)
   yyyuuu
 
20 - 01.09.18 - 05:04
Хэлпа нужна. Где косяк?

В консоле все по красоте.


ВЫБРАТЬ
    Номенклатура.Наименование,
    Тест.Наименование КАК Наименование1
ИЗ
    Справочник.Номенклатура КАК Номенклатура
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Справочник.Тест КАК Тест
        ПО (Номенклатура.Наименование ПОДОБНО "%" + Тест.Наименование + "%")


В коде ноль на массу)

Запрос = Новый Запрос;
//МенеджерВТ = Новый МенеджерВременныхТаблиц;

//Запрос.МенеджерВременныхТаблиц = МенеджерВТ;
Запрос.Текст = 
    "ВЫБРАТЬ
    |    Номенклатура.Код,
    |    Номенклатура.Наименование
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура";
    
    РезультатЗапроса = Запрос.Выполнить();
    ТЗ = РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой);
    
    Запрос2 = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ТЗ.Наименование КАК Наименование
        |ПОМЕСТИТЬ ТЗ
        |ИЗ
        |    &ТЗ КАК ТЗ
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    Тест.Наименование,
        |    ТЗ.Наименование КАК Наименование1
        |ИЗ
        |    Справочник.Тест КАК Тест
        |        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЗ КАК ТЗ
        |        ПО (Тест.Наименование ПОДОБНО ""%"" + ТЗ.Наименование + ""%"")";
        
    Запрос.УстановитьПараметр("ТЗ", ТЗ);
    Результат  = Запрос.Выполнить();
    Выборка = Результат.Выбрать();
    
    Пока Выборка.Следующий() Цикл
        
    КонецЦикла;
   rphosts
 
21 - 01.09.18 - 05:17
хрень какая-то....

делай так: вот у тебя 1 таблица и там названия. Заведи вторую таблицу где 2 поля: код (уникальный) и подстрока для поиска, подстроки они типа как будут проверяться в порядке роста кода, т.е. если там есть
1-системник
2-ассер
то системник ассер должен пройти по категории 1

запрос: соединяешь слева все записи 1 таблицы + Таблица2.Код  по условию Подобно "%"+Таблица2.Наименование+"%" - кладешь во временную
Из временной отбираешь всё, группируя по требуемым записям 1 таблица и агрегатная функция Минимум от Таблица2.Код.
Профит!
   yyyuuu
 
22 - 01.09.18 - 07:11
(21) Спасибо друг, Я попробую. Будь если что на связи, подсраховать) вдруг не разрулю. Спасибо за алгоритм есть от чего отталкиваться.
Только все цепляется по наименованию, код вообще не как не фигурирует)
Есть некая таблица значений. В ней есть поле "Наименование"
Есть справочник, где по группам разбиты материальные ценности.
В таблице значений все материальные ценности.
Завожу запрос который мне находит все эти группы. По подобно смотрю из 1 таблице по наименованию сравниваю со второй.
А почему слева?)
   МимохожийОднако
 
23 - 01.09.18 - 07:42
(22) Описание твоего задание-это каша из описания попыток что-то сделать....ИМХО.
Опиши еще раз, что ты хочешь получить без описания попыток и почему выбрал для поиска именно ТЗ. В подобных случаях бывает полезно выписать некую пробную табличку на листок и подумать, что и откуда брать. Как получаешь эту ТЗ? А главное зачем и откуда берешь данные? Возможно, и ТЗ не нужна и есть другие инструменты.
..
В чём главная цель?
   yyyuuu
 
24 - 01.09.18 - 10:08
(23)
При загрузке в 1 из эксель Я получаю ТЗ. Мне удобно так работать, по формам распихивать, получать от туда значения. По этому Я иду таким путём.
Задача стоит так, и ТЗ мне нужно отобрать элементы и загрузить их в справочник, в справочнике иерархичный в нем имеются группы. По подобию в слове элемента из ТЗ определить к какой группе от относится.
Я вижу это так, получаем ТЗ, загружаем во временную таблицу, запросом получаем все группы справочника в который загружамем. По подобию выбираем какой элемент куда должен быть пойти, дальше условия и какой то код если .....если и запись
   yyyuuu
 
25 - 01.09.18 - 10:14
(22) каша потому что запутался сам уже, в голове логически собрать не могу алгоритм решения данной задачи
   hhhh
 
26 - 01.09.18 - 10:49
(24) может сразу в ТЗ загрузить элементы номенклатуры отдельной колонкой. чтобы дальше уже работать со ссылками и с наименованиями не связываться.
   yyyuuu
 
27 - 01.09.18 - 13:44
(26) Можно но выгрузка идет и разных баз. Если только жестко присвоит каждому свои группу при выгрузке. Но мне кажется такое себе. Я могу сделать некрасиво, брать из ТЗ мои элементы циклом пробегать и каждый сравнивать с запросом где группы. Но это не оптимально с точки зрения, и нечитаемо совсем будет. Да и действий больше будет обходить. Я хочу сделать по нормальному это. В голове вообще каша, как что и к чему. Сейчас возьму лист, нарисую все по блокам раскидаю. Расскажу свои мысли)
   rphosts
 
28 - 01.09.18 - 14:58
(22) слева, потому что могут быть такие позиции у которых не найдётся ни 1 подстрока
   yyyuuu
 
29 - 02.09.18 - 03:26
Ребята пока все компоную в голове). Скоро думаю какие то мысли опишу
(28)
Тут ты прав, если не нашлось вдруг можно в свою группу определить тогда это значение. Спасибо).

Пока над всем думаю. Алгоритм вроде собирается.
   Злопчинский
 
30 - 02.09.18 - 12:06
Не взлетит, потому что ключевое слово для помещения в группу может быть частью слова и по итогу позиция вообще попадет не в ту папку, Например

Телевизор Компутер 43

Ищешь подобно "компутер" и телевизор у тебя идет в компутеры
   yyyuuu
 
31 - 03.09.18 - 05:45
(30) Тогда каким образом можно сделать?
   yyyuuu
 
32 - 03.09.18 - 07:05
Процедура ЗагрузкаНаСервере(Таблица)
    //

    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    Таблица.ПолнНаименование КАК Наименование
        |ПОМЕСТИТЬ Таблица
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    itilprofТипыАктивов.Наименование,
        |    Таблица.Наименование КАК Наименование1
        |ИЗ
        |    Справочник.itilprofТипыАктивов КАК itilprofТипыАктивов
        |        ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Таблица
        |        ПО (itilprofТипыАктивов.Наименование Подобно ""%"" + Таблица.Наименование + ""%"")";
    
    Запрос.УстановитьПараметр("Таблица", Таблица);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        
    КонецЦикла;

Ошибка {ВнешняяОбработка.ВнешняяОбработка1.Форма.Форма.Форма(244)}: Ошибка при вызове метода контекста (Выполнить)
    РезультатЗапроса = Запрос.Выполнить();
по причине:
{(15, 54)}: Неверные параметры "+"
ПО (itilprofТипыАктивов.Наименование Подобно "%" + <<?>>Таблица.Наименование)
   hhhh
 
33 - 03.09.18 - 07:18
"ВЫБРАТЬ
        |    ПОДСТРОКА(Таблица.ПолнНаименование, 1, 200) КАК Наименование
 
 
   yyyuuu
 
34 - 03.09.18 - 09:49
Итератор = 0;
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |    ПОДСТРОКА(Таблица.ПолнНаименование, 1, 200) КАК Наименование
        |ПОМЕСТИТЬ Таблица
        |ИЗ
        |    &Таблица КАК Таблица
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    itilprofТипыАктивов.Наименование,
        |    Таблица.Наименование КАК Наименование1
        |ИЗ
        |    Справочник.itilprofТипыАктивов КАК itilprofТипыАктивов
        |        ЛЕВОЕ СОЕДИНЕНИЕ Таблица КАК Таблица
        |        ПО (itilprofТипыАктивов.Наименование ПОДОБНО ""%"" + Таблица.Наименование + ""%"")";
    
    Запрос.УстановитьПараметр("Таблица", Таблица);
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ВыборкаДетальныеЗаписи = РезультатЗапроса.Выбрать();
    
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Наименование1 <> Null Тогда
            Итератор = Итератор + 1;
        КонецЕсли;
    КонецЦикла;
    Сообщить(Итератор);




В такой констурции вообще не работает.
1. У меня в таблице значений в поле Наименование 92 элемента со словом компьютер
2. Я специально создал в справочнике с которым соедения группу Компьютер
попало полчему то только 16 и то где как то странно.
Может быть Я чего не понимаю. Или так запросом не сделать? Придется циклами и кучей итераций обходить?
   hhhh
 
35 - 03.09.18 - 09:52
(34) группа "Компутер" же ищем. Причем здесь "Компьютер" ?
   yyyuuu
 
36 - 03.09.18 - 10:01
(35) извините пожалуйста, это Я так вырожаюсь) для меня это одно слово). Ну Я создал и группу "Комп" и "Компьютер"
   hhhh
 
37 - 03.09.18 - 10:06
(36) сделайте регистр сведений где 2 поля - наименование актива и группа номенклатуры. По нему и устанавливайте соответствие
   yyyuuu
 
38 - 03.09.18 - 10:45
Процедура ЗагрузкаНаСервере(Таблица)
    МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст = "Выбрать
        |    ВременаяТаблица.Наименование
        |ПОМЕСТИТЬ ВременаяТаблица
        |ИЗ
        |    &Таблица КАК ВременаяТаблица";
    
    Запрос.УстановитьПараметр("Таблица", Таблица);
    //РезультатЗапроса = 

    Запрос.Выполнить();
    
    Запрос2 = Новый Запрос;
    Запрос2.Текст = "ВЫБРАТЬ
        |    ВременаяТаблица.Наименование
        |ИЗ
        |    ВременаяТаблица КАК ВременаяТаблица";
    
    Запрос2.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    
    Выборка = Запрос2.Выполнить().Выбрать();

Что то Я начинаю подозревать поблема совсем в другом.
При выполнении "Наименование    Ошибка чтения значения    "
Хотя параметр заполнен и имеет значения, параметр функции
   yyyuuu
 
39 - 03.09.18 - 10:49
Можно конечно с этим не мучиться и сделать простым перебором. Но Я хочу разобраться с темой и понять где у меня ошибки!
   hhhh
 
40 - 03.09.18 - 10:53
(39) эта другая уже ошибка, тупо когда программист плюет на

Выборка.Следующий()

вот нет хочет он эту строчку писать.
   yyyuuu
 
41 - 04.09.18 - 04:22
(40)
Спасибо, чтобы описать мои эмоции Я только нашел это)
https://youtu.be/NM_jcpVsEBI
   yyyuuu
 
42 - 04.09.18 - 05:44
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПОДСТРОКА(Таблица.Наименование,1,200) КАК Наименование
                   |ПОМЕСТИТЬ ВременнаяТаблица
                   |ИЗ
                   |    &Таблица КАК Таблица
                   |
                   |ИНДЕКСИРОВАТЬ ПО
                   |    Наименование";
    Запрос.УстановитьПараметр("Таблица", Таблица);
    РезультатЗапроса = Запрос.Выполнить();
    
    Запрос2 = Новый Запрос;
    Запрос2.Текст = "ВЫБРАТЬ
                    |    ПОДСТРОКА(ВременнаяТаблица.Наименование, 1, 200) КАК Поле1
                    |ИЗ
                    |    Справочник.itilprofТипыАктивов КАК itilprofТипыАктивов,
                    |    ВременнаяТаблица КАК ВременнаяТаблица";
    
    Запрос2.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    
    Выборка = Запрос2.Выполнить().Выбрать();
    Итератор = 0;
    Пока Выборка.Следующий() Цикл
        //

        Итератор = Итератор + 1;
        Сообщить(Итератор);
        //

    КонецЦикла;


В таблице значений 94 элемента. Если Я их перебераю то они херачат по кругу вместо 94, херачит до 3 478.
   catena
 
43 - 04.09.18 - 06:13
(42)
|ИЗ
|    Справочник.itilprofТипыАктивов КАК itilprofТипыАктивов,
|    ВременнаяТаблица КАК ВременнаяТаблица";

Это кросс-соединение, элементы первой таблицы умножаются на элементы второй. Это еще повезло, что всего до 3000 дошло, таблички маленькие.
   yyyuuu
 
44 - 04.09.18 - 07:48
(43) А для какой цели это делается?
   catena
 
45 - 04.09.18 - 07:55
(44)А разве не вы автор этого кода? Понятия не имею, для чего вам это.
   yyyuuu
 
46 - 04.09.18 - 07:59
(45) Автор, хотел удостовериться в правоте своих действий и мыслей)
   yyyuuu
 
47 - 04.09.18 - 08:06
МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
    Запрос = Новый Запрос;
    Запрос.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    Запрос.Текст = "ВЫБРАТЬ
                   |    ПОДСТРОКА(Таблица.Наименование,1,200) КАК Наименование
                   |ПОМЕСТИТЬ ВременнаяТаблица
                   |ИЗ
                   |    &Таблица КАК Таблица
                   |
                   |ИНДЕКСИРОВАТЬ ПО
                   |    Наименование";
    
    Запрос.УстановитьПараметр("Таблица", Таблица);
    РезультатЗапроса = Запрос.Выполнить();
    
    Запрос2 = Новый Запрос;
    Запрос2.Текст = "ВЫБРАТЬ
                    |    ПОДСТРОКА(ВременнаяТаблица.Наименование, 1, 200) КАК Поле1,
                    |    itilprofТипыАктивов.Наименование
                    |ИЗ
                    |    ВременнаяТаблица КАК ВременнаяТаблица
                    |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.itilprofТипыАктивов КАК itilprofТипыАктивов
                    |        ПО (ВременнаяТаблица.Наименование ПОДОБНО ""%"" + itilprofТипыАктивов.Наименование + ""%"")";
    
    Запрос2.МенеджерВременныхТаблиц = МенеджерВременныхТаблиц;
    
    Выборка = Запрос2.Выполнить().Выбрать();
    Итератор = 0;
    Пока Выборка.Следующий() Цикл
        //

        Итератор = Итератор + 1;
        Сообщить(Итератор);
        //

    КонецЦикла;


Кажется Я сделал)
Ну вроде работает прям на удивление правильно) Я молодец)
   yyyuuu
 
48 - 04.09.18 - 09:40
Сразу извиняюсь немного за не в тему вопрос. Но, можно ли использовато ПОДОБНО в такой конструкции. В данный момент не работает)


ВЫБРАТЬ
    ВЫБОР itilprofТипыАктивов.Наименование
        КОГДА itilprofТипыАктивов.Наименование ПОДОБНО "%" + "Тел" + "%"
            ТОГДА "1НеТелефон"
        ИНАЧЕ itilprofТипыАктивов.Наименование
    КОНЕЦ КАК Поле1
ИЗ
    Справочник.itilprofТипыАктивов КАК itilprofТипыАктивов
   yyyuuu
 
49 - 05.09.18 - 03:06
Запрос.Текст = "ВЫБРАТЬ
                   |ВЫБОР    
                   |    КОГДА ПОДСТРОКА(Таблица.Наименование, 1, 200) ПОДОБНО ""Компьютер%""
                   |        ТОГДА ""Системный блок"" + ПОДСТРОКА(Таблица.Наименование, 10, 200)
                   |    ИНАЧЕ ПОДСТРОКА(Таблица.Наименование, 1, 200)
                   |КОНЕЦ КАК наименование
                   |
                   |ПОМЕСТИТЬ ВременнаяТаблица
                   |ИЗ
                   |    &Таблица КАК Таблица
                   |
                   |ИНДЕКСИРОВАТЬ ПО
                   |    Наименование";
 
 Рекламное место пустует
   yyyuuu
 
50 - 05.09.18 - 03:07
Разрулил если кому интересно, отсупление от темы конечно. Можно было создать новую, вдруг кому нибудь поможет, когда нибудь


Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует