Имя: Пароль:
1C
1С v8
Выбрать 1 запросом
0 skupidom
 
11.07.18
12:55
У элемента справочника есть табличная часть.
Нужно 1 запросом выбрать сначала сам элемент, а во 2 группировке все его элементы табличной части
1 los_hooliganos
 
11.07.18
12:56
Попробуйте левое соединение
2 novichok79
 
11.07.18
12:57
ИТОГИ ПО ССЫЛКА
3 los_hooliganos
 
11.07.18
12:57
Но не забывайте, что объединить все будет быстрее
4 alexshape
 
11.07.18
12:57
(0) что за вторая группировка? поле может?
5 skupidom
 
11.07.18
13:01
Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    КонтрагентыТЧ.Ссылка КАК Ссылка
    |ИЗ
    |    Справочник.КонтрагентыТЧ КАК КонтрагентыТЧ
    |ГДЕ
    |    КонтрагентыТЧ.Ссылка = &перем";
    Запрос.УстановитьПараметр("Перем",Контрагшент);
    Выборка = Запрос.Выполнить().Выбрать();
    Пока Выборка.Следующий() Цикл         
        Об = Выборка.Ссылка.ПолучитьОбъект();
        ЗапросТЧ = Новый Запрос;
        ЗапросТЧ.Текст =
        "ВЫБРАТЬ
        |    КонтрагентыТЧСостав.GUID_1 КАК GUID_1,
        |    КонтрагентыТЧСостав.GUID_2 КАК GUID_2,
        |    КонтрагентыТЧСостав.GUID_3 КАК GUID_3,
        |    КонтрагентыТЧСостав.GUID_4 КАК GUID_4
        |ИЗ
        |    Справочник.КонтрагентыТЧ.Состав КАК КонтрагентыТЧСостав
        |ГДЕ
        |    КонтрагентыТЧСостав.Ссылка = &эл";
        ЗапросТЧ.УстановитьПараметр("эл",Выборка.Ссылка);
        ВыборкаТЧ = ЗапросТЧ.Выполнить().Выбрать();
        Пока ВыборкаТЧ.Следующий() Цикл         
            Если ЗначениеЗаполнено(ВыборкаТЧ.GUID_1) Тогда
                ЗначGUID_1 = ВыборкаТЧ.GUID_1;
            КонецЕсли;
            Если ЗначениеЗаполнено(ВыборкаТЧ.GUID_2) Тогда
                ЗначGUID_2 = ВыборкаТЧ.GUID_2;
            КонецЕсли;
            Если ЗначениеЗаполнено(ВыборкаТЧ.GUID_3) Тогда
                ЗначGUID_3 = ВыборкаТЧ.GUID_3;
            КонецЕсли;
            Если ЗначениеЗаполнено(ВыборкаТЧ.GUID_4) Тогда
                ЗначGUID_4 = ВыборкаТЧ.GUID_4;
            КонецЕсли;
        КонецЦикла;
        
        Об.GUID_1 = ЗначGUID_1;
        Об.GUID_2 = ЗначGUID_2;
        Об.GUID_3 = ЗначGUID_3;
        Об.GUID_4 = ЗначGUID_4;
        
        Об.Записать();
        
    КонецЦикла;
6 skupidom
 
11.07.18
13:01
это тоЮ,что не хотелось бы, а можно пример 1 запросом ?
7 skupidom
 
11.07.18
13:12
это то,что не хотелось бы, а можно пример 1 запросом ?
8 catena
 
11.07.18
13:19
(7)->(2) и гугли обход выборки запроса по ГРппировкам.
9 Мандалай
 
11.07.18
13:30
Агонь!
Запрос в цикле, чувак, ты попал в правильное место, щас тебя закидают...
10 catena
 
11.07.18
13:32
(9)Он пришел спросить, как делать не в цикле.
11 novichok79
 
11.07.18
13:38
(5) бзсходнсть...
12 hhhh
 
11.07.18
13:40
(7)       "ВЫБРАТЬ
        |    КонтрагентыТЧСостав.Ссылка КАК Ссылка,
        |    КонтрагентыТЧСостав.GUID_1 КАК GUID_1,
        |    КонтрагентыТЧСостав.GUID_2 КАК GUID_2,
        |    КонтрагентыТЧСостав.GUID_3 КАК GUID_3,
        |    КонтрагентыТЧСостав.GUID_4 КАК GUID_4
        |ИЗ
        |    Справочник.КонтрагентыТЧ.Состав КАК КонтрагентыТЧСостав
        |ГДЕ
        |    КонтрагентыТЧСостав.Ссылка = &перем";

Запрос.УстановитьПараметр("Перем",Контрагшент);


с тебя 500 руб в кассу мисты
13 novichok79
 
11.07.18
13:46
накидал навскидку...

Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
|    Состав.Ссылка КАК Ссылка,
|    Состав.GUID_1 КАК GUID_1,
|    Состав.GUID_2 КАК GUID_2,
|    Состав.GUID_3 КАК GUID_3,
|    Состав.GUID_4 КАК GUID_4
|ИЗ
|    Справочник.КонтрагентыТЧ.Состав КАК Состав
|
|УПОРЯДОЧИТЬ ПО
|    Ссылка
|ИТОГИ ПО
|    Ссылка
|АВТОУПОРЯДОЧИВАНИЕ";

РезультатЗапроса = Запрос.Выполнить();
ВыборкаСсылка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);

Пока ВыборкаСсылка.Следующий() Цикл
    
    ЗначGUID_1 = "";
    ЗначGUID_2 = "";
    ЗначGUID_3 = "";
    ЗначGUID_4 = "";

    Пока ВыборкаСостав.Следующий() Цикл        
        
        Если ЗначениеЗаполнено(ВыборкаСостав.GUID_1)
            И Не ЗначениеЗаполнено(ЗначGUID_1) Тогда ЗначGUID_1 = ВыборкаСостав.GUID_1;
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ВыборкаСостав.GUID_2)
            И Не ЗначениеЗаполнено(ЗначGUID_2) Тогда ЗначGUID_2 = ВыборкаСостав.GUID_2;
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ВыборкаСостав.GUID_3)
            И Не ЗначениеЗаполнено(ЗначGUID_3) Тогда ЗначGUID_3 = ВыборкаСостав.GUID_3;
        КонецЕсли;
        
        Если ЗначениеЗаполнено(ВыборкаСостав.GUID_4)
            И Не ЗначениеЗаполнено(ЗначGUID_4) Тогда ЗначGUID_4 = ВыборкаСостав.GUID_4;
        КонецЕсли;
        
    КонецЦикла;
    
    КонтрагентСсылка = ВыборкаСсылка.Ссылка;
    КонтрагентОбъект = КонтрагентСсылка.ПолучитьОбъект();

    КонтрагентОбъект.GUID_1 = ЗначGUID_1;
    КонтрагентОбъект.GUID_2 = ЗначGUID_2;
    КонтрагентОбъект.GUID_3 = ЗначGUID_3;
    КонтрагентОбъект.GUID_4 = ЗначGUID_4;
    
    Попытка
        
        КонтрагентОбъект.Записать();
        
    Исключение
        
        Сообщить(СтрШаблон("А король-то голый: %1", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));

    КонецПопытки;

КонецЦикла;