Имя: Пароль:
1C
1C 7.7
v7: Прямой запрос. Поиск контрагента по ИНН
0 Oblako486
 
09.07.14
15:17
|ВЫБРАТЬ
| СпрКонтр.id КАК [впКонтрагент $Справочник.Контрагенты]
|ИЗ
|  $Справочник.Контрагенты КАК СпрКонтр
|ГДЕ ((СпрКонтр.IsFolder=2)
|И ($СпрКонтр.ЮрФизЛица.ИНН = :впИННКПП))
|";  
  
ошибка: Meta name parser error: неизвестное метаимя или алиас "$SC172"
1 acsent
 
09.07.14
15:18
через 2 точки нельзя
2 Oblako486
 
09.07.14
15:31
(1)
SELECT
    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
    ЮрФизЛица.ИНН As ИНН
FROM
    $Справочник.Контрагенты As СпрКонтрагенты
RIGHT JOIN
    (SELECT
       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
        $СпрЮрЛица.ИНН As ИНН
     FROM
        $Справочник.ЮрЛица As СпрЮрЛица
     ГДЕ ($СпрЮрЛица.ИНН = :впИННКПП)
     UNION
    
     SELECT
       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
        $СпрФизЛица.ИНН
     FROM
        $Справочник.ФизЛица As СпрФизЛица) As ЮрФизЛица
      ГДЕ ($СпрФизЛица.ИНН = :впИННКПП)
ON
    ЮрФизЛица.Ссылка = $СпрКонтрагенты.ЮрФизЛицо, Число БезПодготовки=0)

Таже ошибка: Meta name parser error: неизвестное метаимя или алиас "$SC172"
3 Oblako486
 
09.07.14
15:34
(2) вернее так
|SELECT
|    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
|    ЮрФизЛица.ИНН As ИНН
|FROM
|    $Справочник.Контрагенты As СпрКонтрагенты
|RIGHT JOIN
|    (SELECT
|       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
|        $СпрЮрЛица.ИНН As ИНН
|     FROM
|        $Справочник.ЮрЛица As СпрЮрЛица
|     ГДЕ ($СпрЮрЛица.ИНН = :впИННКПП)
|     UNION
|    
|     SELECT
|       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица As СпрФизЛица) As ЮрФизЛица
|      ГДЕ ($СпрФизЛица.ИНН = :впИННКПП)
|ON
|    ЮрФизЛица.Ссылка = $СпрКонтрагенты.ЮрФизЛицо";

ошибка: Meta name parser error: неизвестное метаимя или алиас "$SC172"
4 mehfk
 
09.07.14
15:38
так делай
|       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица As СпрФизЛица
|ГДЕ ($СпрФизЛица.ИНН = :впИННКПП)
|) As ЮрФизЛица
|
5 Oblako486
 
09.07.14
15:55
(4) Такая же ошибка

|SELECT
|    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
|    ЮрФизЛица.ИНН As ИНН
|FROM
|    $Справочник.Контрагенты As СпрКонтрагенты
|RIGHT JOIN
|    (SELECT
|       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
|        $СпрЮрЛица.ИНН As ИНН
|     FROM
|        $Справочник.ЮрЛица As СпрЮрЛица
|     ГДЕ ($СпрЮрЛица.ИНН = :впИННКПП)
|     UNION
|    
|     SELECT
|       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица As СпрФизЛица
|      ГДЕ ($СпрФизЛица.ИНН = :впИННКПП)
| ) As ЮрФизЛица
|ON
|    ЮрФизЛица.Ссылка = $СпрКонтрагенты.ЮрФизЛицо";
6 Ёпрст
 
09.07.14
16:03
|SELECT
|    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
|    ЮрФизЛица.ИНН As ИНН
|FROM
|    $Справочник.Контрагенты As СпрКонтрагенты (nolock)
|inner JOIN
|    (SELECT
|       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
|        $СпрЮрЛица.ИНН As ИНН
|     FROM
|        $Справочник.ЮрЛица As СпрЮрЛица (nolock)
|     where $СпрЮрЛица.ИНН = :впИННКПП
|     UNION all
|     SELECT
|       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица As СпрФизЛица (nolock)
|     where  $СпрФизЛица.ИНН = :впИННКПП
| ) As ЮрФизЛица ON  ЮрФизЛица.Ссылка = $СпрКонтрагенты.ЮрФизЛицо";
7 Oblako486
 
09.07.14
16:08
(6)  Тоже самое: Meta name parser error: неизвестное метаимя или алиас "$SC172"
а как понять в какой строчке ошибка?
8 Ёпрст
 
09.07.14
16:09
Запрос.Отладка(1) покажи
9 Oblako486
 
09.07.14
16:19
(8) Ошибка: Поле агрегатного объекта не обнаружено (Отладка)
пПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
    
|SELECT
|    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
|    ЮрФизЛица.ИНН As ИНН
|FROM
|    $Справочник.Контрагенты As СпрКонтрагенты (nolock)
|inner JOIN
|    (SELECT
|       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
|        $СпрЮрЛица.ИНН As ИНН
|     FROM
|        $Справочник.ЮрЛица As СпрЮрЛица (nolock)
|     where $СпрЮрЛица.ИНН = :впИННКПП
|     UNION all
|     SELECT
|       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица As СпрФизЛица (nolock)
|     where  $СпрФизЛица.ИНН = :впИННКПП
| ) As ЮрФизЛица ON  ЮрФизЛица.Ссылка =  $СпрКонтрагенты.ЮрФизЛицо";
            
пПрямойЗапрос.Отладка(1);
            пПрямойЗапрос.УстановитьТекстовыйПараметр("впИННКПП",впИННКПП);  
        
ПрямойЗапрос.УстановитьТекстовыйПараметр();
РезультатКонтрагент = пПрямойЗапрос.Выполнить("ИндексированнаяТаблица",ТекстЗапроса);
10 Ёпрст
 
09.07.14
16:25
пилять.. я хз, где в этом классе включить отладку - читай доку, мне лень, я им не пользуюсь
11 Dolly_EV
 
09.07.14
16:36
(9)
пПрямойЗапрос.РежимОтладки=1
12 Chai Nic
 
09.07.14
16:40
Я вообще не понял.. запрос пишется для ODBCRecordSet, а используется класс ПрямойЗапрос. Это по идее разные вещи..
13 Dolly_EV
 
09.07.14
16:43
(12) да нормально)) что не распарсилось - как есть передается :-))

пПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
    
|ВЫБРАТЬ
|    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
|    ЮрФизЛица.ИНН As ИНН
|ИЗ
|    $Справочник.Контрагенты As СпрКонтрагенты (nolock)
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
|    (ВЫБРАТЬ
|       :ВидСправочника.ЮрЛица||СпрЮрЛица.ID As Ссылка,
|        $СпрЮрЛица.ИНН As ИНН
|     ИЗ
|        $Справочник.ЮрЛица As СпрЮрЛица (nolock)
|     ГДЕ $СпрЮрЛица.ИНН = :впИННКПП
|     ОБЪЕДИНИТЬ
|     ВЫБРАТЬ
|       :ВидСправочника.ФизЛица||СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     ИЗ
|        $Справочник.ФизЛица As СпрФизЛица (nolock)
|     ГДЕ  $СпрФизЛица.ИНН = :впИННКПП
| ) КАК ЮрФизЛица ПО  ЮрФизЛица.Ссылка =  $СпрКонтрагенты.ЮрФизЛицо";
            
пПрямойЗапрос.Отладка(1);
пПрямойЗапрос.УстановитьТекстовыйПараметр("впИННКПП",впИННКПП);  
        
ПрямойЗапрос.УстановитьТекстовыйПараметр();
РезультатКонтрагент = пПрямойЗапрос.Выполнить(,ТекстЗапроса);
14 Dolly_EV
 
09.07.14
16:43
пПрямойЗапрос.РежимОтладки=1
15 Oblako486
 
09.07.14
16:49
(14)
РежимОтладки: 1
ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=
ВЫБРАТЬ
    СпрКонтрагенты.ID As [впКонтрагент $Справочник.Контрагенты],
    ЮрФизЛица.ИНН As ИНН
FROM
    $Справочник.Контрагенты As СпрКонтрагенты (nolock)
inner JOIN
    (SELECT
       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
        $СпрЮрЛица.ИНН As ИНН
     FROM
        $Справочник.ЮрЛица As СпрЮрЛица (nolock)
     where $СпрЮрЛица.ИНН = :впИННКПП
     UNION all
     SELECT
       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
        $СпрФизЛица.ИНН
     FROM
        $Справочник.ФизЛица As СпрФизЛица (nolock)
     where  $СпрФизЛица.ИНН = :впИННКПП
) As ЮрФизЛица ON  ЮрФизЛица.Ссылка = $СпрКонтрагенты.ЮрФизЛицо, Число БезПодготовки=0) : Meta name parser error: неизвестное метаимя или алиас "$SC172"
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
{D:\1с\компания\Classes\ПрямыеЗапросы\ПрямойЗапрос.ert(13485) }
16 Oblako486
 
09.07.14
16:51
(12) Я тоже не пойму. Но внутри ПрямойЗапрос.ert подключается ODBCRecordSet
17 Ёпрст
 
09.07.14
16:52
(15) Эт че ?
18 Ёпрст
 
09.07.14
16:53
Ладно, наводящий вопрос, база в дбф ?
в скуле ?
19 Dolly_EV
 
09.07.14
16:54
(16) так конечно подключается, т.к. ПрямойЗапрос.ert - это класс-обертка, реальный запрос на СКЛе делает ОДБЦ, на ДБФе - СКЛайт
Поменяй на:
|       :ВидСправочника.ЮрЛица||СпрЮрЛица.ID As Ссылка,
|       :ВидСправочника.ФизЛица||СпрФизЛица.ID,
20 Oblako486
 
09.07.14
17:00
(19) таже ошибка  
ПрямойЗапрос::Выполнить(Строка ТипОбъекта=ИндексированнаяТаблица, Строка ТекстВыполнения=
ВЫБРАТЬ
|    СпрКонтрагенты.ID As [впКонтрагент |$Справочник.Контрагенты],
|    ЮрФизЛица.ИНН As ИНН
|FROM
|    $Справочник.Контрагенты As СпрКонтрагенты (nolock)
|inner JOIN
|    (SELECT
|      :ВидСправочника.ЮрЛица||СпрЮрЛица.ID As Ссылка  
|        $СпрЮрЛица.ИНН As ИНН
|     FROM
|        $Справочник.ЮрЛица As СпрЮрЛица (nolock)
|     where $СпрЮрЛица.ИНН = :впИННКПП
|     UNION all
|     SELECT
|        :ВидСправочника.ФизЛица||СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица As СпрФизЛица (nolock)
|     where  $СпрФизЛица.ИНН = :впИННКПП
| ) As ЮрФизЛица ON  ЮрФизЛица.Ссылка = |$СпрКонтрагенты.ЮрФизЛицо, Число БезПодготовки=0) : Meta name parser error: неизвестное метаимя или алиас "$SC172"
ЗапросODBC.ВыполнитьИнструкцию(ТекстЗапроса,ПолучательЗапроса,1);
21 Oblako486
 
09.07.14
17:00
(18) SQL
22 Ёпрст
 
09.07.14
17:04
(20) ясен пень, левый синтаксис от sqlite
23 Ёпрст
 
09.07.14
17:09
(21) теперь делаем так:

Процедура Сформировать()

  Запрос = СоздатьОбъект("ODBCRecordSet");
  ТекстЗапроса=" |SELECT
|    СпрКонтрагенты.ID  [впКонтрагент $Справочник.Контрагенты],
|    ЮрФизЛица.ИНН  ИНН
|FROM
|    $Справочник.Контрагенты  СпрКонтрагенты (nolock)
|inner JOIN
|    (SELECT
|       $ВидСправочника36.ЮрЛица +СпрЮрЛица.ID As Ссылка,
|        $СпрЮрЛица.ИНН  ИНН
|     FROM
|        $Справочник.ЮрЛица  СпрЮрЛица (nolock)
|     where $СпрЮрЛица.ИНН = :впИННКПП
|     UNION all
|     SELECT
|       $ВидСправочника36.ФизЛица +СпрФизЛица.ID,
|        $СпрФизЛица.ИНН
|     FROM
|        $Справочник.ФизЛица  СпрФизЛица (nolock)
|     where  $СпрФизЛица.ИНН = :впИННКПП
| ) As ЮрФизЛица ON  ЮрФизЛица.Ссылка = $СпрКонтрагенты.ЮрФизЛицо";
   Запрос.УстановитьТекстовыйПараметр("впИННКПП",впИННКПП);
   Запрос.ВыполнитьИнструкцию(ТекстЗапроса).ВыбратьСтроку();
КонецПроцедуры
результаты в студию
24 Ёпрст
 
09.07.14
17:09
верхнюю | только удали еще
25 Dolly_EV
 
09.07.14
17:23
Блин $ лишний... даже специально проверил на ТиСе. Вот так взлетит:

    пПрямойЗапрос = СоздатьОбъект("ПрямойЗапрос");
    ТекстЗапроса="
    |ВЫБРАТЬ
    |    $СпрКонтрагенты.ТекущийЭлемент КАК [впКонтрагент $Справочник.Контрагенты]
    |    ,ЮрФизЛица.ИНН КАК ИНН
    |ИЗ
    |    Справочник.Контрагенты КАК СпрКонтрагенты $nolock
    |ВНУТРЕННЕЕ СОЕДИНЕНИЕ
    |    (ВЫБРАТЬ
    |       :ВидСправочника.ЮрЛица||СпрЮрЛица.ID КАК ТекЭлем
    |        ,$СпрЮрЛица.ИНН КАК ИНН
    |     ИЗ
    |        Справочник.ЮрЛица КАК СпрЮрЛица $nolock
    |     ГДЕ $СпрЮрЛица.ИНН = :впИННКПП
    |     ОБЪЕДИНИТЬ
    |     ВЫБРАТЬ
    |       :ВидСправочника.ФизЛица||СпрФизЛица.ID
    |        ,$СпрФизЛица.ИНН
    |     ИЗ
    |        Справочник.ФизЛица КАК СпрФизЛица $nolock
    |     ГДЕ  $СпрФизЛица.ИНН = :впИННКПП
    | ) КАК ЮрФизЛица ПО  ЮрФизЛица.ТекЭлем =  $СпрКонтрагенты.ЮрФизЛицо";
                
    пПрямойЗапрос.РежимОтладки=1;
    пПрямойЗапрос.УстановитьТекстовыйПараметр("впИННКПП",СокрП(впИННКПП));  
            
    РезультатКонтрагент = пПрямойЗапрос.Выполнить(,ТекстЗапроса);
26 Dolly_EV
 
09.07.14
17:37
+(25) готовый пример:
http://www.webfile.ru/ea54ac6027e5781f25310e41f4d9f03d
27 Ёпрст
 
09.07.14
17:43
(25) врят ли это будет работать в sql
28 Dolly_EV
 
09.07.14
17:47
(27) нету ТиСа в СКЛе, но на ДБФ (26) работает
29 Oblako486
 
10.07.14
11:17
(25) взлетело
(26) пример пригодился
(27) запускаю в ТиСе на SQL-ой базе
(23) не пробовал