![]() |
![]() |
![]() |
|
Табличная часть реквизита табличной части, и всё это в запросе | ☑ | ||
---|---|---|---|---|
0
Asmody
03.05.12
✎
12:35
|
Дано: "Документ" с табличной частью "ТабЧасть", в тч есть реквизит Элемент типа Справочник.Элементы. У справочника есть таб.часть "Состав", в которой есть реквизит "Составляющая" типа Справочник.Составляющие. У него есть реквизит "ВидСоставляющей"
Что хочу: запрос по документам "Документ", с вложенными таблицами, т.е. чтобы результат был такой: Документ1, Дата1, Номер1 ТабЧасть: --- НомерСтроки1, Элемент1 ---- Состав: ------ НомерСтроки1, Составляющая1, ВидСоставляющей1 ------ НомерСтроки2, Составляющая2, ВидСоставляющей2 --- НомерСтроки2, Элемент2 ---- Состав: ..... Документ2, Дата2, Номер2 ТабЧасть: --- НомерСтроки1, Элемент1 ... и т.д т.е. чтобы была вложенная таблица второго уровня |
|||
1
Господин ПЖ
03.05.12
✎
12:37
|
предлагаю переложить в дерево руками
|
|||
2
Asmody
03.05.12
✎
12:38
|
(1) запросом хочу…
|
|||
3
fisher
03.05.12
✎
12:43
|
(0) Забей вообще на вложенные таблицы. Даже когда кажется что с ними проще, в итоге оказывается наоборот. Не завтра так послезавтра.
|
|||
4
Ненавижу 1С
гуру
03.05.12
✎
12:43
|
совсем обнаглели
ну и +(3) |
|||
5
PR
03.05.12
✎
12:45
|
(0) Вить, а что мешает плясать от таблицы документов с левым соединением по табличной части?
|
|||
6
Ненавижу 1С
гуру
03.05.12
✎
12:46
|
(5) я думаю он до этого догадался и сам ))
|
|||
7
Asmody
03.05.12
✎
12:47
|
(5) у меня 2 табличных части и обе так разворачиваются
|
|||
8
PR
03.05.12
✎
12:50
|
(7) Так объединение сделай :))
|
|||
9
Ненавижу 1С
гуру
03.05.12
✎
12:50
|
(7) получи плоскую единую ТЗ и поиграйся с параметрами её метода Скопировать()
|
|||
10
Asmody
03.05.12
✎
12:55
|
слишком развесистая клюква получится
|
|||
11
PR
03.05.12
✎
12:58
|
(10) Ты про объединение?
Да ладно, проще пареной репы. |
|||
12
Asmody
03.05.12
✎
13:00
|
(11) я про результат запроса вообще. мысль была получить выборку, потом пробежаться по ней и обработать каждый док в отдельных фукциях, чтобы уже больше в базу не лезть
|
|||
13
Ненавижу 1С
гуру
03.05.12
✎
13:01
|
(12) ну вот и делай именно так, в чем проблема? зачем тебе именно вложенные ТЗ?
|
|||
14
Asmody
03.05.12
✎
13:02
|
(13) чтобы данные ТЗ уже висели в результате в строке документа
|
|||
15
fisher
03.05.12
✎
13:02
|
(12) Так и делай. Просто коллекции формируй сам из выборки.
|
|||
16
Ненавижу 1С
гуру
03.05.12
✎
13:02
|
(14) визуально?
|
|||
17
Asmody
03.05.12
✎
13:02
|
(16) внутре
|
|||
18
fisher
03.05.12
✎
13:03
|
(15) Просто разбей на группировки и при обходе группировок детальные записи по ним выгружай целиком из подвыборок в ТЗ.
|
|||
19
ptrtss
03.05.12
✎
13:04
|
левое соединение
(выбрать 1 как Номер объединить все выбрать 2 как Номер) КАК Таблицы по истина левое соединение Первая КАК Первая по Таблицы.Номер = 1 и <условие связи> левое соединение Вторая КАК Вторая по Таблицы.Номер = 1 и <условие связи> |
|||
20
ptrtss
03.05.12
✎
13:04
|
Ошибся, во втором по Номер = 2
|
|||
21
Ненавижу 1С
гуру
03.05.12
✎
13:05
|
(17) снова ((
ДеревоЗначений самое то |
|||
22
ptrtss
03.05.12
✎
13:06
|
(20) ну и итоги по Таблицы.Номер надо
|
|||
23
Asmody
03.05.12
✎
13:07
|
грубо так хочу:
///.... ВыборкаПоДокументам=Запрос.Выполнить().Выбрать(); Пока ВыборкаПоДокументам.Следующий() Цикл ОбработатьДокумент(ВыборкаПоДокументам); КонецЦикла; ///.... Процедура ОбработатьДокумент(СтрокаВыборкиДокумента) //... ВыборкаПоТЧ1=СтрокаВыборкиДокумента.ТЧ1.Выбрать(); Пока ВыборкаПоТЧ1.Следующий() Цикл ОбработатьСтрокуТЧ1(ВыборкаПоТЧ1); КонецЦикла; //... ВыборкаПоТЧ2=СтрокаВыборкиДокумента.ТЧ2.Выбрать(); Пока ВыборкаПоТЧ2.Следующий() Цикл ОбработатьСтрокуТЧ2(ВыборкаПоТЧ2); КонецЦикла; КонецПроцедуры и т.д. |
|||
24
Asmody
03.05.12
✎
13:08
|
(21) я хочу, чтобы ДеревоЗначений получилось запросом само! Вот
|
|||
25
ptrtss
03.05.12
✎
13:08
|
(24) Я написал тебе как это сделать
|
|||
26
fisher
03.05.12
✎
13:10
|
(23) Три запроса в одном пакете делай. По одной ТЧ, по второй ТЧ и список доков.
Тогда просто обходишь выборку списка доков, а в остальных двух выборках просто позиционируешься. |
|||
27
PR
03.05.12
✎
13:17
|
(12) Так сделай группировку по регистратору, а потом выборку из нее по детальным записям.
Я так постоянно делаю :)) |
|||
28
PR
03.05.12
✎
13:19
|
(23) В разных объединениях сделай поле "НомерТабличнойЧасти" и в первое объединение пиши 1, во второе 2, а потом выборки: по регистратору, потом по номеру табличной части, потом по детальным записям.
|
|||
29
Ненавижу 1С
гуру
03.05.12
✎
13:19
|
(23)
Процедура ОбработатьДокумент(СтрокаВыборкиДокумента) //... ВыборкаПоТЧ1=СтрокаВыборкиДокумента.ТЧ1.Выбрать(); Пока ВыборкаПоТЧ1.Следующий() Цикл ОбработатьСтрокуТЧ1(ВыборкаПоТЧ1); КонецЦикла; //... ВыборкаПоТЧ2=СтрокаВыборкиДокумента.ТЧ2.Выбрать(); Пока ВыборкаПоТЧ2.Следующий() Цикл ОбработатьСтрокуТЧ2(ВыборкаПоТЧ2); КонецЦикла; КонецПроцедуры то есть связи между ТЧ1 и ТЧ2 не будет? |
|||
30
ptrtss
03.05.12
✎
13:20
|
Пример №1:
ВЫБРАТЬ "Товары" КАК ИмяТЧ ПОМЕСТИТЬ ТЧ ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Услуги" ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Док.Ссылка КАК Ссылка, ТЧ.ИмяТЧ КАК ИмяТЧ, ТЧТовары.НомерСтроки КАК Товары_НомерСтроки, ТЧТовары.Номенклатура КАК Товары_Номенклатура, ТЧУслуги.НомерСтроки КАК Услуги_НомерСтроки, ТЧУслуги.Номенклатура КАК Услуги_Номенклатура ИЗ Документ.РеализацияТоваровУслуг КАК Док ВНУТРЕННЕЕ СОЕДИНЕНИЕ ТЧ КАК ТЧ ПО (ИСТИНА) ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ТЧТовары ПО (ТЧ.ИмяТЧ = "Товары") И Док.Ссылка = ТЧТовары.Ссылка ЛЕВОЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК ТЧУслуги ПО (ТЧ.ИмяТЧ = "Услуги") И Док.Ссылка = ТЧУслуги.Ссылка УПОРЯДОЧИТЬ ПО Товары_НомерСтроки, Услуги_НомерСтроки ИТОГИ ПО Ссылка, ИмяТЧ |
|||
31
fisher
03.05.12
✎
13:24
|
(28) Просто чем больше будет видов ТЧ и чем разнороднее данные в них - тем страшнее будут мичуринские результаты сведения их в одну таблицу.
|
|||
32
ptrtss
03.05.12
✎
13:25
|
Пример №2:
ВЫБРАТЬ Д.Ссылка ПОМЕСТИТЬ втД ИЗ Документ.РеализацияТоваровУслуг КАК Д ГДЕ Д.Ссылка = &Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ "Товары" КАК ИмяТЧ, ТЧТовары.Ссылка, ТЧТовары.НомерСтроки, ТЧТовары.Номенклатура ПОМЕСТИТЬ втТЧ ИЗ втД КАК втД ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК ТЧТовары ПО втД.Ссылка = ТЧТовары.Ссылка ОБЪЕДИНИТЬ ВСЕ ВЫБРАТЬ "Услуги", ТЧУслуги.Ссылка, ТЧУслуги.НомерСтроки, ТЧУслуги.Номенклатура ИЗ втД КАК втД ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Услуги КАК ТЧУслуги ПО втД.Ссылка = ТЧУслуги.Ссылка ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ Д.Ссылка КАК Ссылка, ТЧ.ИмяТЧ КАК ИмяТЧ, ТЧ.НомерСтроки КАК НомерСтроки, ТЧ.Номенклатура ИЗ втД КАК Д ЛЕВОЕ СОЕДИНЕНИЕ втТЧ КАК ТЧ ПО Д.Ссылка = ТЧ.Ссылка УПОРЯДОЧИТЬ ПО НомерСтроки ИТОГИ ПО Ссылка, ИмяТЧ |
|||
33
Asmody
03.05.12
✎
14:06
|
(29) нет
|
|||
34
Asmody
03.05.12
✎
14:09
|
кстати, ДеревоЗначений мне не сильно подходит. Скорее это будет "Дерево массивов структур"
|
|||
35
Господин ПЖ
03.05.12
✎
14:10
|
дерево таблиц значений соответствий...
|
|||
36
Asmody
03.05.12
✎
20:34
|
забил на запрос, сделал все через СКД
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |