Имя: Пароль:
1C
1С v8
Помещение результата запроса при объединение во временную таблицу.
0 Solitar
 
31.01.13
16:57
Запрос = Новый Запрос;
МВТ    = Новый МенеджерВременныхТаблиц;
Запрос.МенеджерВременныхТаблиц = МВТ;
Запрос.Текст = "ВЫБРАТЬ
                   |    ТзДТ.ВладелецСчетаДебета КАК Контрагент,
                      |    ТзДТ.ИННВладельцаДТ КАК ИНН,
                      |    ТзДТ.НомерПаспортаДТ КАК НомерПаспорта
                      |ПОМЕСТИТЬ ТЗ
                      |ИЗ
                      |    &ТзДТ КАК ТзДТ
                      |ГДЕ
                      |    ТзДТ.ВладелецСчетаДебета <> &ПустоеЗначение
                      |
                      |ОБЪЕДИНИТЬ ВСЕ
                      |
                      |ВЫБРАТЬ
                      |    ТзКТ.ВладелецСчетаКредита,
                      |    ТзКТ.ИННВладельцаКТ,
                      |    ТзКТ.НомерПаспортаКТ
                      |ИЗ
                      |    &ТзКТ КАК ТзКТ
                      |ГДЕ
                      |    ТзКТ.ВладелецСчетаКредита <> &ПустоеЗначение";
       Запрос.УстановитьПараметр("ТЗДТ", ТЗ);
       Запрос.УстановитьПараметр("ТЗКТ", ТЗ);
       Запрос.УстановитьПараметр("ПустоеЗначение", "");
       Запрос.Выполнить();

Ошибка "Содержимое объекта данных может быть выбрано только во временную таблицу".

Ведь написано, что результат помешаю во временную таблицу...
1 DrShad
 
31.01.13
16:58
для начало нужно ВТ создать из своей ТЗ
2 НЕА123
 
31.01.13
17:00
"ВЫБРАТЬ
                   |    ТзДТ.ВладелецСчетаДебета КАК Контрагент,
                      |    ТзДТ.ИННВладельцаДТ КАК ИНН,
                      |    ТзДТ.НомерПаспортаДТ КАК НомерПаспорта
                      |ПОМЕСТИТЬ ТЗ
                      |ИЗ
                      |    &ТзДТ КАК ТзДТ
                      |ГДЕ
                      |    ТзДТ.ВладелецСчетаДебета <> &ПустоеЗначение;
ВЫБРАТЬ
                   |    Тз.ВладелецСчетаДебета КАК Контрагент,
                      |    Тз.ИННВладельцаДТ КАК ИНН,
                      |    Тз.НомерПаспортаДТ КАК НомерПаспорта
                      |ИЗ
                      |    &Тз КАК Тз


                      |
                      |ОБЪЕДИНИТЬ ВСЕ
                      |
                      |ВЫБРАТЬ
                      |    ТзКТ.ВладелецСчетаКредита,
                      |    ТзКТ.ИННВладельцаКТ,
                      |    ТзКТ.НомерПаспортаКТ
                      |ИЗ
                      |    &ТзКТ КАК ТзКТ
                      |ГДЕ
                      |    ТзКТ.ВладелецСчетаКредита <> &ПустоеЗначение";
3 DrShad
 
31.01.13
17:03
(2) ошибочки :)))
4 НЕА123
 
31.01.13
17:06
(3)
угу. ТС, надеюсь, смысл может поймет.
5 Maxus43
 
31.01.13
17:10
Объеденить разве работает при помещении ТЗ в ВТ?
6 НЕА123
 
31.01.13
17:12
(5)
эх. вроде да, не сработает...
7 Solitar
 
31.01.13
17:12
(3) да, спасибо. не подумал решить вопрос через две ВТ.
8 DrShad
 
31.01.13
17:16
(7) а он по другому и не решается :))))
9 Solitar
 
31.01.13
17:29
чтоб не плодить темы, мб скажите что не так.

нужно получить всех отсутствующих контрагентов в базе.

типы для тз определяю так:

ТЗ.Колонки.Добавить("НомерПаспортаДТ",      Новый ОписаниеТипов("Строка" ,, Новый КвалификаторыСтроки(50, ДопустимаяДлина.Переменная)));

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

Неверные параметры в операции сравнения. Нельзя сравнивать поля
неограниченной длины и поля несовместимых типов.
ИЛИ ТЗ.НомерПаспорта <<?>>= Контрагенты.ДокументУдостоверяющийЛичность)

У реквизита "ДокументУдостоверяющийЛичность" тип строка и неограниченная длина. Мб я ошибся с описание типа для колонки ТЗ?
10 Maxus43
 
31.01.13
17:32
(9) убирай вобще это условие, по ИНН достаточно
11 DrShad
 
31.01.13
17:44
(10) ИНН + КПП
12 Maxus43
 
31.01.13
17:46
(11) тут паспортные, это физик)
13 DrShad
 
31.01.13
17:48
у физика КПП будет пустой, а ИНН длиннее
14 viktor_vv
 
31.01.13
18:01
Я так подозревая

Контрагенты.ДокументУдостоверяющийЛичность

неограниченной длины.

ТЗ.НомерПаспорта = Выразить(Контрагенты.ДокументУдостоверяющийЛичность КАК Строка(50))
15 DrShad
 
31.01.13
18:02
(14) ПОДОБНО
16 viktor_vv
 
31.01.13
18:08
(15) Должно и так сработать, хотя, ДокументУдостоверяющий личность, вряд ли там только номер.
Таки наверное ПОДОБНО.
17 Solitar
 
31.01.13
18:35
Запрос.Текст = "ВЫБРАТЬ
                      |    ТЗ.Контрагент,
                      |    ТЗ.ИНН,
                      |    ТЗ.НомерПаспорта,
                      |    Контрагенты.Ссылка
                      |ИЗ
                      |    ТЗ КАК ТЗ
                      |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Контрагенты КАК Контрагенты

                      |        ПО (ТЗ.ИНН = Контрагенты.ИНН
                      |                ИЛИ ТЗ.НомерПаспорта = (ВЫРАЗИТЬ(Контрагенты.ДокументУдостоверяющийЛичность КАК СТРОКА(50))))
                      |ГДЕ
                      |    Контрагенты.Ссылка ЕСТЬ NULL ";

или же вместо "=" поставить "подобно" результат запроса пустой.
18 Solitar
 
31.01.13
19:17
не охото вносить изменения в справочник "Контрагенты", делать реквизит ограниченной длины...
неужели нет каких либо еще способов для сравнения.
19 viktor_vv
 
31.01.13
19:31
(18) Ограниченной не надо, Выразить() поможет. Но это если значения равны.
А ты сравни какие у тебя данные в ТЗ.НомерПаспорта и в Контрагенты.ДокументУдостоверяющийЛичность, явно они не будут в точности совпадать, поэтому "=" и не поможет.
20 Solitar
 
31.01.13
19:49
(19) я не понимаю. ведь если не срабатывает первое условие ИЛИ второе, то записей не должно быть. Но первое ведь срабатывает...

как мне сравнить данные?
21 mikeA
 
31.01.13
20:30
(20) у тебя типы значений для колонок таблицы значений заданы при её создании? иначе операции сравнения не работают по таким таблицам, переданным в запрос, насколько я помню.
22 viktor_vv
 
31.01.13
21:17
(20) Выведи без условий и колокни из обоих таблиц и посмотри что у тебя за данные.
И с чего ты взял, что первое срабатывает ? Колонка ИНН в ТЗ какого типа ?
23 Solitar
 
31.01.13
23:07
(22) разобрался, спасибо.

теперь, когда создаю контрагент и прописываю все необходимые реквизиты, то все ОК.

Но когда открываю форму, там стоит галочка "Входит в холдинг". Это реквизит формы, к нему ведь нельзя обратится при создании нового элемента, не так ли?
24 ДенисЧ
 
31.01.13
23:12
(23) открой код формы и посмотри, как он заполняется. Там скоре условие, что ГоловнойКонтргаент заполнен