Вход | Регистрация


Нужна помощь: как две ТаблицыЗначений поместить в третью?

Нужна помощь: как две ТаблицыЗначений поместить в третью?
Я
   dft2014
 
25.04.18 - 18:15
Добрый день!

Получаю две таблицы значений, с помощью типовых функций:
1) КадровыеДанныеСотрудников = КадровыйУчет.КадровыеДанныеСотрудников(Истина, СписокСотрудников, ИменаКадровыхДанных, ПериодОтчета,);
2) КадровыеДанныеФЛ = КадровыйУчет.КадровыеДанныеФизическихЛиц(Истина, СписокФизлиц, ИменаПрочихДанных, ПериодОтчета,);

Подскажите, как мне теперь КадровыеДанныеСотрудников и КадровыеДанныеФЛ поместить в третью (общую) таблицу значений. Ключом может быть колонка ФизическоеЛицо.

СтрокаИтоговойТЗ = тзИтог.Добавить();
что дальше писать?
 
 
   Бертыш
 
1 - 25.04.18 - 18:26
СтрокаИтоговойТЗ.ТвоёПоле=
   Flover
 
2 - 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";
   b_ru
 
7 - 25.04.18 - 18:50
Я так понимаю, нужно связать эти таблицы, а не объединить? Можно действительно засунуть их во временные таблицы БД и объединить запросом (пример в (4), только в 3м результирующем запросе пакета нужно соединять, а не объединять). А более правильно заглянуть а типовые процедуры КадровыеДанныеСотрудников и КадровыеДанныеФизическихЛиц, подсмотреть, как там получаются данные,и написать свой запрос, чтобы он сразу делал соединение, чтобы избежать лишней передачи данных с сервера БД на сервер приложения и обратно.

Если производительность не критична, я бы не заморачивался и сделал по первому варианту :)

Список тем форума
Рекламное место пустует  Рекламное место пустует
AdBlock убивает бесплатный контент. 1Сергей
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.
Рекламное место пустует