![]() |
|
Нужна помощь: как две ТаблицыЗначений поместить в третью? | ☑ | ||
---|---|---|---|---|
0
dft2014
25.04.18
✎
18:15
|
Добрый день!
Получаю две таблицы значений, с помощью типовых функций: 1) КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СписокСотрудников, ИменаКадровыхДанных, ПериодОтчета,); 2) КадровыеДанныеФЛ = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, СписокФизлиц, ИменаПрочихДанных, ПериодОтчета,); Подскажите, как мне теперь КадровыеДанныеСотрудников и КадровыеДанныеФЛ поместить в третью (общую) таблицу значений. Ключом может быть колонка ФизическоеЛицо. СтрокаИтоговойТЗ = тзИтог.Добавить(); что дальше писать? |
|||
1
Бертыш
25.04.18
✎
18:26
|
СтрокаИтоговойТЗ.ТвоёПоле=
|
|||
2
Flover
25.04.18
✎
18:31
|
СтрокаИтоговойТЗ = тзИтог.Добавить();
Для каждого стр из КадровыеДанныеСотрудников ЗаполнитьЗначенияСвойств(СтрокаИтоговойТЗ, стр); КонецЦикла Для каждого стр из КадровыеДанныеФЛ ЗаполнитьЗначенияСвойств(СтрокаИтоговойТЗ, стр); КонецЦикла так можно |
|||
3
Бертыш
25.04.18
✎
18:37
|
А если структура итоговой ТЗ тебе нужна такая же как в одной из входящих таблиц, то можно организовать
тзИтог=КадровыеДанныеСотрудников.Скопировать(); Для каждого стр из КадровыеДанныеФЛ СтрокаИтоговойТЗ = тзИтог.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаИтоговойТЗ, стр); КонецЦикла |
|||
4
Бертыш
25.04.18
✎
18:44
|
А если у обоих структура идентична, то
Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗ.Поле1, | ТЗ.Поле2 |ПОМЕСТИТЬ Таблица1 |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ТЗ.Поле1, | ТЗ.Поле2 |ПОМЕСТИТЬ Таблица2 |ИЗ | &ТЗ2 КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица1.Поле1, | Таблица1.Поле2 |ИЗ | Таблица1 КАК Таблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Таблица2.Поле1, | Таблица2.Поле2 |ИЗ | Таблица2 КАК Таблица2"; Запрос.УстановитьПараметр("ТЗ",КадровыеДанныеСотрудников ); Запрос.УстановитьПараметр("ТЗ2",КадровыеДанныеФЛ); РезультатЗапроса = Запрос.Выполнить(); тзИтог=РезультатЗапроса.Выгрузить(ОбходРезультатаЗапроса.Прямой) |
|||
5
Бертыш
25.04.18
✎
18:45
|
Может конечно текст запроса может быть и таким но не уверен
"ВЫБРАТЬ | * |ПОМЕСТИТЬ Таблица1 |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ПОМЕСТИТЬ Таблица2 |ИЗ | &ТЗ2 КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | Таблица1.Поле1, | Таблица1.Поле2 |ИЗ | Таблица1 КАК Таблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | Таблица2.Поле1, | Таблица2.Поле2 |ИЗ | Таблица2 КАК Таблица2"; |
|||
6
Бертыш
25.04.18
✎
18:46
|
Пардон
Запрос.Текст = "ВЫБРАТЬ | * |ПОМЕСТИТЬ Таблица1 |ИЗ | &ТЗ КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ПОМЕСТИТЬ Таблица2 |ИЗ | &ТЗ2 КАК ТЗ |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | * |ИЗ | Таблица1 КАК Таблица1 | |ОБЪЕДИНИТЬ ВСЕ | |ВЫБРАТЬ | * |ИЗ | Таблица2 КАК Таблица2"; |
|||
7
b_ru
25.04.18
✎
18:50
|
Я так понимаю, нужно связать эти таблицы, а не объединить? Можно действительно засунуть их во временные таблицы БД и объединить запросом (пример в (4), только в 3м результирующем запросе пакета нужно соединять, а не объединять). А более правильно заглянуть а типовые процедуры КадровыеДанныеСотрудников и КадровыеДанныеФизическихЛиц, подсмотреть, как там получаются данные,и написать свой запрос, чтобы он сразу делал соединение, чтобы избежать лишней передачи данных с сервера БД на сервер приложения и обратно.
Если производительность не критична, я бы не заморачивался и сделал по первому варианту :) |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |