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

1С:Предприятие :: 1С:Предприятие 8 общая

Выбрать 1 запросом

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

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


с тебя 500 руб в кассу мисты
   novichok79
 
13 - 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", ПодробноеПредставлениеОшибки(ИнформацияОбОшибке())));

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

КонецЦикла;

Список тем форума
Рекламное место пустует  Рекламное место пустует
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Рекламное место пустует