Имя: Пароль:
1C
1С v8
Заполнить / объединить таблицы
,
0 mauar115
 
01.12.15
13:25
Есть запрос, из него заполняются 3 таблицы:

Пока Выборка.Следующий() Цикл
        
        Если ЗначениеЗаполнено(Выборка.Ссылка1) Тогда
            
        Если ТипЗнч(Выборка.Ссылка1)=ТипЗнч(Документы.ргАктФактическогоВыполнения.ПустаяСсылка()) И Выборка.Ссылка1.ПометкаУдаления = Ложь Тогда
            
            ТЗАкт = ТЗВывестиАкт.Добавить();
            
            ТЗАкт.Акт = Выборка.Ссылка1;
            ТЗАкт.Контрагент = КонтрагентПечати;
            
        ИначеЕсли ТипЗнч(Выборка.Ссылка1)=ТипЗнч(Документы.СчетНаОплату.ПустаяСсылка()) И Выборка.Ссылка1.ПометкаУдаления = Ложь  Тогда
            
        ТЗСчет = ТЗВывестиСчетНаОплату.Добавить();
        
        ТЗСчет.Контрагент = КонтрагентПечати;
        ТЗСчет.СчетНаОплату = Выборка.Ссылка1;
                
        ИначеЕсли ТипЗнч(Выборка.Ссылка1)=ТипЗнч(Документы.СчетФактура.ПустаяСсылка())  И Выборка.Ссылка1.ПометкаУдаления = Ложь   Тогда
            
            ТЗФактура = ТЗВывестиСчетФактура.Добавить();
            ТЗФактура.Контрагент =  КонтрагентПечати;
            ТЗФактура.СчетФактура = Выборка.Ссылка1;
КонецЕсли;

КонецЕсли;
    
    
КонецЦикла;    
    


Теперь надо эти 3 таблицы вывести в одну таблицу на основании контрагента, циклом не получается:

    Для каждого СтраАкт ИЗ ТЗВывестиАкт Цикл
        
    ДЛя каждого стрСчет ИЗ ТЗВывестиСчетНаОплату Цикл
        
        ТЗ.СчетНаОплату = стрСчет.СчетНаОплату;
    КонецЦикла;
    
    ДЛя каждого стрФакт ИЗ ТЗФактура
    КонецЦикла;
1 Горогуля
 
01.12.15
13:25
бедолага
2 mauar115
 
01.12.15
13:28
Ну такой умный, расскажи ))
3 Горогуля
 
01.12.15
13:29
чего рассказать? как не приходить к идиотским вопросам?
4 Горогуля
 
01.12.15
13:29
(3) *ситуациям
5 User_Agronom
 
01.12.15
13:31
(0)  ...циклом не получается...

Не правда. Циклом должно получится.
6 palpetrovich
 
01.12.15
13:34
(0) что именно "циклом не получается" ?
7 ibreiter
 
01.12.15
13:35
За условием еще одну таблицу формировать и в нее все подряд записывать,..как вариант
8 Ёпрст
 
01.12.15
13:36
(0) сделай итоги в тексте запроса и выводи по группировкам сразу, минуя 3 таблички..
Ну или скд заюзай или построительотчета, что ле..
9 mauar115
 
01.12.15
13:53
Там итоги не надо, тут прикол в том что эти 3 таблицы должны быть также, и четвертая со всеми запиясями

    
Для каждого СтраАкт ИЗ ТЗВывестиАкт Цикл
        
    ТЗ = ТЗСписок.Добавить();    
    ТЗ.Контрагент = СтраАкт.Контрагент;
    ТЗ.Акт = СтраАкт.Акт;
Для каждого стрСчет ИЗ ТЗВывестиСчетНаОплату Цикл
    
    
    
Для каждого стрФакт ИЗ ТЗВывестиСчетФактура Цикл

        
        Если СтраАкт.Контрагент = стрСчет.Контрагент Тогда
            ТЗ.СчетНаОплату = стрСчет.СчетНаОплату;    
        КонецЕсли;
        Если СтраАкт.Контрагент = стрФакт.Контрагент Тогда
            ТЗ.СчетФактура = стрФакт.СчетФактура;
        КонецЕсли;
        
КонецЦикла;
КонецЦикла;            
КонецЦикла;
10 Горогуля
 
01.12.15
13:55
какой-то неправильный у тебя велосипед
11 ibreiter
 
01.12.15
14:00
(10) ;)
12 Ёпрст
 
01.12.15
14:04
(9) Так, ну и зачем вам 3 таблички ?
ЗЫ: их тоже можно получить сразу, выполнив, например, пакетный запрос.
13 aleks_default
 
01.12.15
14:11
Сделай  запросе сразу и четвертую таблицу
14 sash-ml
 
01.12.15
14:19
Для каждого СтраАкт ИЗ ТЗВывестиАкт Цикл
        
    ТЗ     = ТЗСписок.Добавить();    

    ТЗ.Контрагент    = СтраАкт.Контрагент;
    ТЗ.Акт         = СтраАкт.Акт;
    ТЗ.СчетНаОплату     = ТЗВывестиСчетНаОплату.Найти(СтраАкт.Контрагент).СчетНаОплату;
    ТЗ.СчетФактура     = ТЗВывестиСчетФактура.Найти(СтраАкт.Контрагент).СчетФактура;
      
КонецЦикла;
15 mauar115
 
01.12.15
15:50
не работает (15)
16 Niveus
 
01.12.15
16:27
(10) Какой умный занятый человек, для сарказма времени есть, помочь нет) зато самоутвержаешся. Удачи по жизни задрипыш
17 mauar115
 
01.12.15
17:10
Niveus, забей!

Я для себя просто хочу разобрать эту тему на будущее.
Для саморазвития.


Для каждого СтраАкт ИЗ ТЗВывестиАкт

    ТЗ     = ТЗСписок.Добавить();    

    ТЗ.Контрагент    = СтраАкт.Контрагент;
    ТЗ.Акт         = СтраАкт.Акт;

    ТЗ.СчетНаОплату     = ТЗВывестиСчетНаОплату.Найти(СтраАкт.Контрагент).СчетНаОплату;
    ТЗ.СчетФактура     = ТЗВывестиСчетФактура.Найти(СтраАкт.Контрагент).СчетФактура;
      
КонецЦикла;


Проблема возникает в том что не хочет получать найденную строку у двух вторых таблиц
ТЗВывестиСчетНаОплату.Найти(СтраАкт.Контрагент).СчетНаОплату;

через параметры отбора также ругается на СчетНаОплату, в этой строчке ТЗВывестиСчетНаОплату.Найти(СтраАкт.Контрагент).СчетНаОплату;   а счет на оплату там это реквизит есть и он типо документ.счетнаоплату
18 aleks_default
 
01.12.15
17:14
(16) Если человек не дает себе труда подумать прежде чем создавать тему на форуме, то сарказм это еще не самое плохое чем его могут наградить.
Вот что мы видим в первом посте? Обход выборки в цикле и заполнение трех таблиц. А потом спрашивает как объединить эти три таблицы в одну.
Так почему бы сразу в обходе выборки сразу не создавать и четвертую КАРЛ!ЧЕТВЕРТУЮ!!! таблицу?
Как это можно назвать если не МАРАЗМ! КАРЛ! МАРАЗМ!
19 Mirnin
 
01.12.15
17:18
Ну и пометку удаления на этапе запроса лучше отфильтровать.
20 hhhh
 
01.12.15
17:34
(17) почитай в синтакс-помощнике про метод Найти()
21 Мимохожий Однако
 
01.12.15
17:39
(0)Делай одним пакетным запросом. Остальное - от лукавого. В чём конечная цель получения разных таблиц?
22 mauar115
 
02.12.15
11:30
Тема закрыта, сделал таки запросом )
Независимо от того, куда вы едете — это в гору и против ветра!