Имя: Пароль:
1C
1С v8
Запрос по табличной части
0 KuJIT
 
25.10.14
11:21
День добрый.
Есть ФизЛицо, для него собираю всякую информацию из различных объектов конфигурации. У справочника ФизЛицо есть табличная часть с различной информацией (ФЛ.ТЧ1.Строка1.Реквизит1, ФЛ.ТЧ1.Строка2.Рекизит1). Каким образам можно (и можно ли) сделать так, чтобы в результате выборки (Выборка = Запрос.Выполнить().Выбрать();)Я смог получить:

Выборка.Сотрудник.Реквизит1
Выборка.ФЛ.Ссылка
Выборка.ФЛ.ТЧ1.Строка1.Реквизит1
Выборка.ФЛ.ТЧ1.Строка2.Реквизит1

При этом:

ЛЕВОЕ СОЕДИНЕНИЕ ФЛ
ПО Сотрудник.ФЛ = ФЛ.ССылка

(ФЛ1.ТЧ1.Реквизит2 = Параметр1 ИЛИ ФЛ1.ТЧ1.Реквизит2 = Параметр2)

Сотрудник.Ссылка В &СписокСотрудников

Как-то так. Надеюсь, понятно выразился.
1 KuJIT
 
25.10.14
12:14
Нашел одно из решений, но, мне кажется, есть и получше.

В Запрос добавляем:
ФЛ.ТЧ1.Реквизит1
ФЛ.ТЧ1.Реквизит2

В результате выборки получаем:
Выборка.ФЛ.ТЧ1 как результат запроса. Делаем
Выборка2 = Выборка.ФЛ.ТЧ1.Выбрать();

А дальше по Выборке2 ищем подходящие Реквизит1 по Нужному РЕквизит2.
2 palpetrovich
 
25.10.14
12:18
(0) не, непонятно :)
покажи что уже делал, не надо абстракций в субботу ;)
3 barrgand
 
25.10.14
12:29
(0) Сразу запросом не получится, обрабатывай выборку, составляй свою таблицу.
4 Chameleon1980
 
25.10.14
13:12
(Выборка = Запрос.Выполнить().Выбрать();)Я смог получить:
итоги, группировка и метод обхода?
5 KuJIT
 
26.10.14
09:31
СписокЗначенийСотрудники = Новый СписокЗначений;
    
    Для Каждого СтрокаСЗаявкой ИЗ Заявки Цикл
        Если НЕ СтрокаСЗаявкой.Выгрузить ТОгда
            Продолжить;
        КонецЕсли;
        
        СписокЗначенийСотрудники.Добавить(СтрокаСЗаявкой);    
    КонецЦикла;
    
    Запрос = Новый Запрос;
    
    Запрос.Текст = "ВЫБРАТЬ РАЗРЕШЕННЫЕ
                   |    ФИОФизическихЛицСрезПоследних.Фамилия,
                   |    ФИОФизическихЛицСрезПоследних.Имя,
                   |    ФИОФизическихЛицСрезПоследних.Отчество,
                   |    ""21"" КАК ДокументВид,
                   |    ДокументыФизическихЛицСрезПоследних.Серия КАК ДокументСерия,
                   |    ДокументыФизическихЛицСрезПоследних.Номер КАК ДокументНомер,
                   |    ДокументыФизическихЛицСрезПоследних.ДатаВыдачи КАК ДокументДатаВыдачи,
                   |    ДокументыФизическихЛицСрезПоследних.КемВыдан КАК ДокументКемВыдан,
                   |    ДокументыФизическихЛицСрезПоследних.КодПодразделения КАК КодПодразделения,
                   |    ПлановыеНачисленияСрезПоследних.Размер КАК Оклад,
                   |    ФизическиеЛица.ИНН КАК ИНН,
                   |    ФизическиеЛица.ДатаРождения КАК ДатаРождения,
                   |    ФизическиеЛица.МестоРождения КАК МестоРождения,
                   |    СостоянияВБракеФизическихЛицСрезПоследних.СостояниеВБраке КАК СемейноеПоложение,
                   |    ТекущиеКадровыеДанныеСотрудников.ТекущаяДолжность КАК Должность,
                   |    Сотрудники.Ссылка КАК Ключ,
                   |    ФизическиеЛица.КонтактнаяИнформация.(
                   |        Ссылка,
                   |        НомерСтроки,
                   |        Тип,
                   |        Вид,
                   |        Представление,
                   |        ЗначенияПолей,
                   |        Страна,
                   |        Регион,
                   |        Город,
                   |        АдресЭП,
                   |        ДоменноеИмяСервера,
                   |        НомерТелефона,
                   |        НомерТелефонаБезКодов
                   |    )
                   |ИЗ
                   |    Справочник.Сотрудники КАК Сотрудники
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ФИОФизическихЛиц.СрезПоследних КАК ФИОФизическихЛицСрезПоследних
                   |        ПО Сотрудники.ФизическоеЛицо = ФИОФизическихЛицСрезПоследних.ФизическоеЛицо
                   |        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.ФизическиеЛица КАК ФизическиеЛица
                   |        ПО Сотрудники.ФизическоеЛицо = ФизическиеЛица.Ссылка
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ДокументыФизическихЛиц.СрезПоследних КАК ДокументыФизическихЛицСрезПоследних
                   |        ПО Сотрудники.ФизическоеЛицо = ДокументыФизическихЛицСрезПоследних.Физлицо
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.СостоянияВБракеФизическихЛиц.СрезПоследних КАК СостоянияВБракеФизическихЛицСрезПоследних
                   |        ПО Сотрудники.ФизическоеЛицо = СостоянияВБракеФизическихЛицСрезПоследних.ФизическоеЛицо
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ТекущиеКадровыеДанныеСотрудников КАК ТекущиеКадровыеДанныеСотрудников
                   |        ПО Сотрудники.Ссылка = ТекущиеКадровыеДанныеСотрудников.Сотрудник
                   |            И Сотрудники.ФизическоеЛицо = ТекущиеКадровыеДанныеСотрудников.ФизическоеЛицо
                   |            И Сотрудники.ГоловнаяОрганизация = ТекущиеКадровыеДанныеСотрудников.ГоловнаяОрганизация
                   |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ПлановыеНачисления.СрезПоследних КАК ПлановыеНачисленияСрезПоследних
                   |        ПО Сотрудники.Ссылка = ПлановыеНачисленияСрезПоследних.Сотрудник
                   |            И Сотрудники.ФизическоеЛицо = ПлановыеНачисленияСрезПоследних.ФизическоеЛицо
                   |ГДЕ
                   |    Сотрудники.Ссылка В(&Сотрудники)
                   |    И (ДокументыФизическихЛицСрезПоследних.ВидДокумента = &ВидДокумента1
                   |            ИЛИ ДокументыФизическихЛицСрезПоследних.ВидДокумента = &ВидДокумента2)"
                   ;
    Запрос.УстановитьПараметр("Сотрудники", СписокЗначенийСотрудники);
    Запрос.УстановитьПараметр("ВидДокумента1", Справочники.ВидыДокументовФизическихЛиц.ПаспортРФ);
    Запрос.УстановитьПараметр("ВидДокумента2", Справочники.ВидыДокументовФизическихЛиц.ПаспортСССР);
    
    Выборка = Запрос.Выполнить().Выбрать();
    СтруктураПоиска = Новый Структура;
    СтруктураПоиска.Вставить("Ключ", "");
    СтруктураПоискаАдресПрописки = Новый Структура;
    СтруктураПоискаСотовыйТелефон = Новый Структура;
    СтруктураПоискаДомашнийТелефон = Новый Структура;
    СтруктураПоискаАдресПрописки.Вставить("Тип", Перечисления.ТипыКонтактнойИнформации.Адрес);
    СтруктураПоискаАдресПрописки.Вставить("Вид", Справочники.ВидыКонтактнойИнформации.АдресПоПропискеФизическиеЛица);
    СтруктураПоискаДомашнийТелефон.Вставить("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
    СтруктураПоискаДомашнийТелефон.Вставить("Вид", Справочники.ВидыКонтактнойИнформации.ТелефонДомашнийФизическиеЛица);
    СтруктураПоискаСотовыйТелефон.Вставить("Тип", Перечисления.ТипыКонтактнойИнформации.Телефон);
    СтруктураПоискаСотовыйТелефон.Вставить("Вид", Справочники.ВидыКонтактнойИнформации.ТелефонМобильныйФизическиеЛица);
    
    Для Каждого Сотрудник ИЗ СписокЗначенийСотрудники Цикл
        СтруктураПоиска["Ключ"] = Сотрудник.Значение[1];
        Если Выборка.НайтиСледующий(СтруктураПоиска) Тогда
            
                КонтИнформация = Выборка.КонтактнаяИнформация.Выбрать();
                Если КонтИнформация.НайтиСледующий(СтруктураПоискаАдресПрописки) Тогда
                    Область.Параметры.АдресПрописки = КонтИнформация.Представление;
                    КонтИнформация.Сбросить();
                КонецЕсли;
                Если КонтИнформация.НайтиСледующий(СтруктураПоискаДомашнийТелефон) Тогда
                    Область.Параметры.ДомашнийТелефон = КонтИнформация.Представление;
                    КонтИнформация.Сбросить();
                КонецЕсли;
                Если КонтИнформация.НайтиСледующий(СтруктураПоискаСотовыйТелефон) Тогда
                    Область.Параметры.СотовыйТелефон = КонтИнформация.Представление;
                    КонтИнформация.Сбросить();
                КонецЕсли;
            
            Область.Параметры.Заполнить(Выборка);
            Область.Параметры.ЭмбоссированныйТекст1 = ТрЛит(Выборка.Фамилия);
            Область.Параметры.ЭмбоссированныйТекст2 = ТрЛит(Выборка.Имя);
            Выборка.Сбросить();
            ТабДокумент.Вывести(Область);
        КонецЕсли;


Как-то так получилось. ЗУП 3.0.
6 Chameleon1980
 
26.10.14
13:05
может метод "выбрать" посмотреть
2 + 2 = 3.9999999999999999999999999999999...