Имя: Пароль:
1C
 
Вложенные таблицы в запросе
0 Air777
 
19.10.10
11:53
Хочу обратиться к табличной части документа в запросе.

Естественно поле Регситратор составное. Делаю через конструкцию ВЫБОР
и тут натыкаюсь на непонятку напрямую к табл части доступа нет если обращаться через Ссылка.ТабЧасть сервер 1с обрывает коннект.
Вот текст запроса:


ВЫБРАТЬ
Регистратор,
ВЫБОР
КОГДА Регистратор ССЫЛКА Документ.Реализация Тогда Реализация.Ссылка.Товары
КОНЕЦ Как товары,
ЕстьNull(Взаиморасчеты.СуммаВалНачальныйОстаток,0) как НачальныйОстатокВал
ИЗ
РегистрНакопления.ВзаиморасчетыБух.ОстаткиИобороты(&ДатаНачала,&ДатаКонца,Регистратор,ДвиженияИГраницыПериода) Как Взаиморасчеты
ЛЕВОЕ СОЕДИНЕНИЕ
Документ.Реализация Как Реализация
ПО Реализация.Ссылка=Регистратор

ИТОГИ Сумма(НачальныйОстатокВал) ПО Общие,Регистратор
(Резльтат - Падение клиента т.к. сервер 1с принудительно рвет коннект)

Конечно я могу вытащить 10 видов табл частей без конструкции ВЫБОР но хотелось изящно - все таб части свести в одному графу выборки

У кого какие идеи?
1 butterbean
 
19.10.10
11:55
ЛЕВОЕ СОЕДИНЕНИЕ
Документ.Реализация.Товары Как РеализацияТовары
ПО РеализацияТовары.Ссылка=Регистратор
и уже из РеализацияТовары тянуть все что надо
2 Air777
 
19.10.10
11:58
(1) неподходит, т.к. нужна вся табл.часть как вложенная таблица причем состав колонок разных видов документов естественно может не совпадать.
3 hhhh
 
19.10.10
12:04
(2) ну, пристрелить автора подобной идеи.
4 Ненавижу 1С
 
гуру
19.10.10
12:07
(2) для каждого вида дока надо писать отдельно
5 Air777
 
19.10.10
12:12
(4) это понятно я и пищу для каждого отдельно получаю графу выборки типа ВложенныйЗапрос и хочу эти 3 графы одного типа свести в одну. Ан нет. Но даже не это удивила, а то что система тупо падает при попытке обратится Реализация.Ссылка.Товары в конструкции ВЫБОР

без объяснения причин!
6 butterbean
 
19.10.10
12:13
(5) перестань пищать и почитай книжки
7 Ненавижу 1С
 
гуру
19.10.10
12:19
пример:

ВЫБРАТЬ
   ТоварыНаСкладах.Регистратор,
   ТоварыНаСкладах.Номенклатура,
   ЕСТЬNULL(ПоступлениеТоваровУслугТовары.СтавкаНДС, РеализацияТоваровУслугТовары.СтавкаНДС) КАК СтавкаНДС
ИЗ
   РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары
       ПО ТоварыНаСкладах.Регистратор = ПоступлениеТоваровУслугТовары.Ссылка
           И ТоварыНаСкладах.Номенклатура = ПоступлениеТоваровУслугТовары.Номенклатура
       ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК РеализацияТоваровУслугТовары
       ПО ТоварыНаСкладах.Регистратор = РеализацияТоваровУслугТовары.Ссылка
           И ТоварыНаСкладах.Номенклатура = РеализацияТоваровУслугТовары.Номенклатура
8 Air777
 
19.10.10
12:19
(6) Ткните меня носом где в описании конструкции ВЫБОР это недопустимо???

В выражениях языка запросов могут применяться операции выбора, которые позволяют получить одно из возможных значений в соответствии с указанными условиями.

Операция выбора описывается следующим набором правил:

<Операция выбора>

ВЫБОР
<Альтернативы выбора>
[ИНАЧЕ <Выражение>]
КОНЕЦ

<Альтернативы выбора>

<Одиночный выбор>
[<Альтернативы выбора>]

<Одиночный выбор>

КОГДА <Логическое выражение>
ТОГДА <Выражение>

В операции выбора может указываться неограниченное количество альтернативных одиночных выборов КОГДА… ТОГДА. Они обрабатываются в запросе последовательно; если <Логическое выражение> имеет значение ИСТИНА, обработка операции выбора завершается; результатом операции является значение выражения, указанного после слова ТОГДА. Логические выражения писаны в Логические выражения в языке запросов.

Значение выражения, указанного после слова ИНАЧЕ используется в качестве результата операции выбора в том случае, если во всех ранее указанных альтернативных одиночных выборах предикат имел значение ЛОЖЬ.

Пример:
Выбрать
Справочник.Номенклатура.Наименование,
Выбор
  Когда Справочник.Номенклатура.Этогруппа = Истина
     Тогда «Это Группа»
  Когда Справочник.Номенклатура.ЗакупочнаяЦена > 1000
     Тогда «1000 -»
  Когда Справочник.Номенклатура.ЗакупочнаяЦена > 100
     Тогда «100 – 1000»
  Когда Справочник.Номенклатура.ЗакупочнаяЦена > 10
     Тогда «10 – 100»
  Когда Справочник.Номенклатура.ЗакупочнаяЦена > 0
     Тогда «0 – 10»
Иначе
  «Не Задана»
Конец Цена
9 butterbean
 
19.10.10
12:21
(8) дело не в конструкции ВЫБОР , а в том что нельзя выбирать таб. части как обычные поля
10 Air777
 
19.10.10
12:23
В том то и дело что можно, вот работающий пример:

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

ИТОГИ Сумма(НачальныйОстатокВал) ПО Общие,Регистратор
11 Ненавижу 1С
 
гуру
19.10.10
12:28
(10) но лучше не надо, с ними ничего в самом запросе сделать нельзя, на самом деле вытаскивается ссылка на ТЧ, которая потом на клиенте грузится в ТЗ
12 Air777
 
19.10.10
12:42
(11) именно это мне и нужно