Имя: Пароль:
1C
1С v8
Запрос Составной Тип
0 sema76
 
16.04.14
15:17
Есть регистр НДС, там есть поле Счет-Фактура, это различные документы, Поступление, Поступление доп. расходов, ГТД, у этих документов есть табличная часть "Товары", как мне к ней обратиться.

Если пишу Счет.Фактура.Товары ругается

Нельзя обращаться к вложенной таблице через поле составного типа
1 Ёпрст
 
гуру
16.04.14
15:17
левое соединение сделай и привет
2 Ненавижу 1С
 
гуру
16.04.14
15:18
соединяй слева со всеми видами ТЧ
3 Ёпрст
 
гуру
16.04.14
15:18
тем самым, не будешь бегать по всем докам составного типа, а только по нужным
4 sema76
 
16.04.14
15:34
Можно пример? Я сам не сделаю)
5 sema76
 
16.04.14
15:37
Вроде понял немного, попробую)
6 sema76
 
16.04.14
15:39
Т.е. придется соединять со всеми мне нужными документами?
7 Ёпрст
 
гуру
16.04.14
15:43
Ну так
    "ВЫБРАТЬ
    |    НДСНачисленный.СчетФактура,
    |    НДСНачисленный.НДС,
    |    ДокументРеализацияТоваровУслуг.Товары.(
    |        Номенклатура
    |    )
    |ИЗ
    |    РегистрНакопления.НДСНачисленный КАК НДСНачисленный
    |        ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг КАК ДокументРеализацияТоваровУслуг
    |        ПО (ДокументРеализацияТоваровУслуг.Ссылка = НДСНачисленный.СчетФактура)"


или сразу соединение с Документ.РеализацияТоваровУслуг.Товары
8 sema76
 
16.04.14
15:46
(7) Так у меня могут быть разные документы, а в вашем примере только один документ
9 sema76
 
16.04.14
15:50
Мне так где выбрать нужно чтобы было

СчетФактура.Товары.(
10 Ёпрст
 
гуру
16.04.14
16:00
да не вопрос, перечисляй все виды документов
11 Ёпрст
 
гуру
16.04.14
16:00
только вопрос - накуа ? спрашивается в задачнике..
12 sema76
 
16.04.14
16:10
(10) Попробую!
13 sema76
 
24.04.14
09:12
В продолжении темы

У меня теперь не работает Запрос, когда задаю условие

Где

НЕ ТребованиеНакладная.Материалы.СчетЗатрат В ИЕРАРХИИ (&СчетЗатрат)

И НЕ ПоступлениеТоваровУслугВНТТ.Услуги.СчетЗатрат В ИЕРАРХИИ (&СчетЗатрат)

Если пишу


НЕ

(ТребованиеНакладная.Материалы.СчетЗатрат В ИЕРАРХИИ (&СчетЗатрат)

ИЛИ

ПоступлениеТоваровУслугВНТТ.Услуги.СчетЗатрат В ИЕРАРХИИ (&СчетЗатрат))

То ругается

поля из различных вложенных таблиц используются в одном результирующем поле
14 Ёпрст
 
гуру
24.04.14
09:44
больше кода
15 sema76
 
24.04.14
11:01
Сделал несколько запросов и соединил их посредствов

Объединить все


Как теперь сделать поле СчетЗатрат общим?


Если вывожу все поля где есть СчетЗатрат, то ругается

"Использование полей из несвязанных наборов данных не допустимо"
16 Ёпрст
 
гуру
24.04.14
11:09
либо пихать условие на счет  в каждый запрос в юнионе, либо обернуть все запросы в юнионе в один подзапрос и снаружи лепить условия:

select вася from (
   select a as вася from table1
   union all
   select b  from table2
   union all
   .....
   )
where вася = 'лошпед'
17 sema76
 
24.04.14
11:12
(16) "либо пихать условие на счет  в каждый запрос в юнионе"

В смысле?
18 Ёпрст
 
гуру
24.04.14
11:13
да ё..
19 Ёпрст
 
гуру
24.04.14
11:14
select a as вася from table1
  where a = 'лошпед'

  union all
  select b  from table2
  where b = 'ходячий тормоз'

  union all
   .....
20 sema76
 
24.04.14
11:23
(19) Я не понимаю ...

Мне надо

ИЗ

Поступление.Услуги.СчетЗатрат

и

ИЗ

ТребованиеНакладная.Материалы.СчетЗатрат

Вывести СчетЗатрат в одно поле

При том, что эти таблицы являются левым соединением к регистру, эти документы есть Регистратор
21 Ёпрст
 
гуру
24.04.14
11:24
(20) И ? Больше кода.
22 sema76
 
24.04.14
11:34
(21)

ВЫБРАТЬ

    ПУСТАЯТАБЛИЦА.(),
    ТребованиеНакладная.Материалы.(
        СчетЗатрат
    )

ИЗ
    РегистрНакопления.НДСКосвенныеРасходы.Обороты(, , Регистратор, Организация = &Организация) КАК НДСКосвенныеРасходыОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная
        ПО НДСКосвенныеРасходыОбороты.Регистратор = ТребованиеНакладная.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        ПО НДСКосвенныеРасходыОбороты.Регистратор = ПоступлениеТоваровУслуг.Ссылка


ОБЪЕДИНИТЬ ВСЕ


ВЫБРАТЬ


    ПоступлениеТоваровУслуг.Услуги.(
        СчетЗатрат
    ),
    ПУСТАЯТАБЛИЦА.()


ИЗ
    РегистрНакопления.НДСКосвенныеРасходы.Обороты(, , Регистратор, Организация = &Организация) КАК НДСКосвенныеРасходыОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная КАК ТребованиеНакладная
        ПО НДСКосвенныеРасходыОбороты.Регистратор = ТребованиеНакладная.Ссылка
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг КАК ПоступлениеТоваровУслуг
        ПО НДСКосвенныеРасходыОбороты.Регистратор = ПоступлениеТоваровУслуг.Ссылка
23 sema76
 
24.04.14
11:43
Может как-нибудь можно выразить?
24 Ёпрст
 
гуру
24.04.14
11:56
(22) ну, хрень же написана
:)
25 sema76
 
24.04.14
11:58
(24) Может. А как по-другому?
26 Ёпрст
 
гуру
24.04.14
12:07
блин, а че Ответ не прилетел :(
27 Ёпрст
 
гуру
24.04.14
12:08
делай соединение не к табличке документа, а к табличной части :

ВЫБРАТЬ
  ТребованиеНакладная.СчетЗатрат
ИЗ
    РегистрНакопления.НДСКосвенныеРасходы.Обороты(, , Регистратор, Организация = &Организация) КАК НДСКосвенныеРасходыОбороты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ТребованиеНакладная.Материалы КАК ТребованиеНакладная
        ПО НДСКосвенныеРасходыОбороты.Регистратор = ТребованиеНакладная.Ссылка
28 sema76
 
24.04.14
12:15
(27) Да. Спасибо!

Только вот здесь прочитал:

v8: Как объединять обычное поле со вложенными таблицами?
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой