Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 7.7 и ранее

v7: Помогите плиз с SQLiteBase

v7: Помогите плиз с SQLiteBase
Я
   sysadminlk
 
08.08.19 - 10:51
Перем базаДанных, запрос;

Процедура Сформировать()
    стрПоиска = "зии";    
    текст="SELECT *, id [ЭлБрака :Справочник.БракПриемка],
    |Контрагент [Контр :Справочник.Контрагенты]
    |FROM СпрБрак WHERE descr LIKE '%"+СокрЛП(стрПоиска)+"%'
    |INNER JOIN [Справочник.Контрагенты] Контр on СпрБрак.Контрагент = Контр.id and Контр.descr LIKE '%"+СокрЛП(стрПоиска)+"%'";
    тз=запрос.ВыполнитьЗапрос(текст);
    тз.выгрузить(тб);
КонецПроцедуры

Процедура ПриОткрытии()
    базаДанных = СоздатьОбъект("SQLiteBase");    
    базаДанных.Открыть(":memory:");
    запрос = базаДанных.НовыйЗапрос();
    запрос.ВыполнитьЗапрос("create virtual table СпрБрак using dbeng(Справочник.БракПриемка)");
КонецПроцедуры    // ПриОткрытии

Процедура ПриЗакрытии()
    базаДанных.Закрыть();    
КонецПроцедуры    // ПриЗакрытии
 
 
   sysadminlk
 
1 - 08.08.19 - 10:53
в Справочник.БракПриемка есть реквизит Контрагент [Справочник.Контрагенты]
Как мне через SQLiteBase составить запрос чтоб поиск был по наименованию Справочник.БракПриемка и наименованию контрагента?
   Djelf
 
2 - 08.08.19 - 11:24
(1) WHERE должно находится после джойнов.
   palpetrovich
 
3 - 08.08.19 - 11:34
(0) и алиас добавить нелишним будет
 WHERE СпрБрак.descr LIKE '%"+СокрЛП(стрПоиска)+"%'
   sysadminlk
 
4 - 08.08.19 - 11:56
текст="SELECT * FROM СпрБрак 
    |INNER JOIN СпрКонтр on СпрБрак.Контрагент = СпрКонтр AND СпрКонтр.descr LIKE '%"+СокрЛП(стрПоиска)+"%'
    |WHERE СпрБрак.descr LIKE '%"+СокрЛП(стрПоиска)+"%'"; 


тз=запрос.ВыполнитьЗапрос(текст);
{C:\ТЕСТТТТ.....ERT(10)}: no such column: СпрКонтр
   sysadminlk
 
5 - 08.08.19 - 11:57
Перем базаДанных, запрос;

Процедура Сформировать()
    стрПоиска = "шам";
    
    текст="SELECT * FROM СпрБрак 
    |INNER JOIN СпрКонтр on СпрБрак.Контрагент = СпрКонтр AND СпрКонтр.descr LIKE '%"+СокрЛП(стрПоиска)+"%'
    |WHERE СпрБрак.descr LIKE '%"+СокрЛП(стрПоиска)+"%'"; 
    
    тз=запрос.ВыполнитьЗапрос(текст);
    тз.выгрузить(тб);
КонецПроцедуры

Процедура ПриОткрытии()
    базаДанных = СоздатьОбъект("SQLiteBase");    
    базаДанных.Открыть(":memory:");
    запрос = базаДанных.НовыйЗапрос();
    запрос.ВыполнитьЗапрос("create virtual table СпрБрак using dbeng(Справочник.БракПриемка);");
    запрос.ВыполнитьЗапрос("create virtual table СпрКонтр using dbeng(Справочник.Контрагенты);");
КонецПроцедуры    // ПриОткрытии


Процедура ПриЗакрытии()
    базаДанных.Закрыть();    
КонецПроцедуры    // ПриЗакрытии
   sysadminlk
 
6 - 08.08.19 - 11:58
текст="SELECT * FROM СпрБрак 
    |INNER JOIN СпрКонтр on СпрБрак.Контрагент.id = СпрКонтр.id AND СпрКонтр.descr LIKE '%"+СокрЛП(стрПоиска)+"%'
    |WHERE СпрБрак.descr LIKE '%"+СокрЛП(стрПоиска)+"%'"; 



тз=запрос.ВыполнитьЗапрос(текст);
{C:\ТЕСТТТТ.....ERT(10)}: no such column: СпрБрак.Контрагент.id
   Злопчинский
 
7 - 08.08.19 - 12:03
СпрБрак.Контрагент.id
вот у тебя с правочнике брака - есть ссылка на контргаента (спр.Контрагент)
я вот как-то с трудом представляю что у ССЫЛКИ есть реквизит id
   Злопчинский
 
8 - 08.08.19 - 12:04
это не чорный запрос где платформа автоматом делает разыменование через точку
   Злопчинский
 
9 - 08.08.19 - 12:04
напиши просто
СпрБрак.Контрагент = СпрКонтр.id
   Ёпрст
 
10 - 08.08.19 - 12:08
(0)

>>>  запрос.ВыполнитьЗапрос("create virtual table СпрБрак using dbeng(Справочник.БракПриемка)");
это лишнее, давно есть автоподключение таблиц
   sysadminlk
 
11 - 08.08.19 - 12:10
SELECT СпрБрак.* FROM СпрБрак 
INNER JOIN СпрКонтр on СпрБрак.Контрагент = СпрКонтр.id AND СпрКонтр.descr LIKE '%шам%'
WHERE СпрБрак.descr LIKE '%шам%'


что-то ищет долго и ничего не находит
   Ёпрст
 
12 - 08.08.19 - 12:13
(0)

   текст="
|БракПриемка.id [ЭлБрака :Справочник.БракПриемка], 
|Контрагент [Контр :Справочник.Контрагенты] 
|FROM [Справочник.БракПриемка] БракПриемка  
|INNER JOIN [Справочник.Контрагенты] Контр on БракПриемка.Контрагент = Контр.id and Контр.descr LIKE '%:стрПоиска%' 
|WHERE БракПриемка.descr LIKE '%:стрПоиска%' 
|";
запрос.Подставлять("стрПоиска","Вася");



";
   sysadminlk
 
13 - 08.08.19 - 12:38
текст="SELECT СпрБрак.id [ЭлБрака :Справочник.БракПриемка] FROM СпрБрак 
        |LEFT JOIN СпрКонтр on СпрБрак.Контрагент = СпрКонтр.id
        |WHERE СпрБрак.descr LIKE '%"+СокрЛП(стрПоиска)+"%' or СпрКонтр.descr LIKE '%"+СокрЛП(стрПоиска)+"%'"; 


оказывается так надо было )

спасибо (12)

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