|
Помещение результата запроса при объединение во временную таблицу. | ☑ | ||
---|---|---|---|---|
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) открой код формы и посмотри, как он заполняется. Там скоре условие, что ГоловнойКонтргаент заполнен
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |