Имя: Пароль:
1C
1С v8
Как выбрать запросом подчиненные документы?
,
0 Anton2016
 
03.12.15
15:24
СписокЗаполнения = ПолучитьСписокВводимыхДокументовНаОсновании(СсылкаНаОбъект.Метаданные());
    ТекстЗапросаПоСтатусу = "";
    Для Каждого ЭлементСписка Из СписокЗаполнения Цикл    
        Если НЕ ПустаяСтрока(ТекстЗапросаПоСтатусу) Тогда
            ТекстЗапросаПоСтатусу = ТекстЗапросаПоСтатусу + "
            |ОБЪЕДИНИТЬ ВСЕ
            |";
        КонецЕсли;
        
        ТекстЗапросаПоСтатусу = ТекстЗапросаПоСтатусу + "
        |ВЫБРАТЬ " + ?(ПустаяСтрока(ТекстЗапросаПоСтатусу), "РАЗРЕШЕННЫЕ", "") + "
        |    Док.Ссылка КАК ПодчиненныйДокумент
        |ИЗ
        |    Документ." + ЭлементСписка.Значение + " КАК Док
        |ГДЕ
        |    Док.ДокументОснование = &парамОснование
        |    И Док.Проведен
        |";
    КонецЦикла;

    Запрос = Новый Запрос;
    Запрос.УстановитьПараметр("парамОснование", СсылкаНаОбъект);
    Запрос.Текст = ТекстЗапросаПоСтатусу;
    Возврат Запрос.Выполнить().Выгрузить().ВыгрузитьКолонку("ПодчиненныйДокумент");    

не взлетает ;(
1 Anton2016
 
03.12.15
15:25
мне вообще нужно получить СФ, в тч ДокументыОснования есть нужная накладная...
2 Михаил Козлов
 
03.12.15
15:27
(1) А где Вы видите, что идет запрос к ТЧ?
Почему бы не воспользоваться критерием отбора?
3 mikecool
 
03.12.15
15:28
(2) +1 к критерию
4 Anton2016
 
03.12.15
15:35
мне в запросе надо для отчета
5 Anton2016
 
03.12.15
15:36
вот так...

Запрос = Новый Запрос;
Запрос.Текст = «
|ВЫБРАТЬ
|    СчетФактураВыданный.Ссылка
|ИЗ
|    Документ.СчетФактураВыданный КАК СчетФактураВыданный
|ГДЕ
|    СчетФактураВыданный.ДокументОснование = &ДокументОснование»;
Запрос.УстановитьПараметр(«ДокументОснование»,    Накладная);
6 mikecool
 
03.12.15
15:37
(5) так я тоже не против )
7 Anton2016
 
03.12.15
15:39
спс
8 Anton2016
 
03.12.15
15:51
даже так...

&НаСервере
Функция док_фн_ПолучитьСФ(парам_Документ)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    СчетФактураВыданный.Ссылка
        |ИЗ
        |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |ГДЕ
        |    СчетФактураВыданный.ДокументОснование = &ДокументОснование";
    
    Запрос.УстановитьПараметр("ДокументОснование", парам_Документ);
    
    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    СФ="";
    Пока Выборка.Следующий() Цикл
        СФ = Выборка.Ссылка.ПолучитьОбъект();
    КонецЦикла;    
    
    Возврат СФ;
    
КонецФункции
9 DTX 4th
 
03.12.15
16:22
Там должна быть ТЧ ДокументыОснования. Из неё и надо выбирать, а не из Документ.СчетФактураВыданный.
10 Anton2016
 
03.12.15
16:36
блин... спасибо!
не заметил...
11 Anton2016
 
04.12.15
09:40
как из этих двух запросов сделать один?

    Запрос = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    СчетФактураВыданный.Ссылка
        |ИЗ
        |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |ГДЕ
        |    СчетФактураВыданный.ДокументОснование = &ДокументОснование";
    
    Запрос.Текст = "
        |ВЫБРАТЬ
          |    Ссылка,
          |    ДокументыОснования.ДокументОснование
        |ИЗ Документ.СчетФактураВыданный.ДокументыОснования    Как ДокументыОснования
        |ГДЕ
        |    ДокументыОснования.ДокументОснование = &ДокументОснование";
12 DTX 4th
 
04.12.15
09:45
В первом нет необходимости. Там при записи

ДокументОснование = ДокументыОснования[0].ДокументОснование;
13 aleks_default
 
04.12.15
09:45
(0)Пригласите специалиста или сами сходите на курсы.
14 Anton2016
 
04.12.15
09:52
(13) может тебе еще и фотку дать?
15 salvator
 
04.12.15
09:56
(11) В чем тайный смысл сего действия?
16 aleks_default
 
04.12.15
09:59
(14)может тебе лесом пойти?
17 Anton2016
 
04.12.15
10:02
(15) зная накладную, надо получить счет-фактуру
18 Anton2016
 
04.12.15
10:02
(16) только после Вас! )
19 salvator
 
04.12.15
10:03
(17) Ну так ты написал запрос для получения с-ф из документа-основания. Что еще надо-то?
20 Anton2016
 
04.12.15
10:04
СФ получается...
но, наверное, можно покрасивше...
21 Anton2016
 
04.12.15
10:04
одним запросом обойтись тут нельзя?
или это уже извращение?
22 salvator
 
04.12.15
10:05
(21) Объясни, для чего тебе в (11) первый запрос и для чего второй.
23 Anton2016
 
04.12.15
10:06
1 запрос - реквизит ДокументОснование в шапке документа,
2 запрос - реквизит ДокументОснование в табличной части ДокументыОснования,
как оаказалось, документ основание может быть указан или в шапке или в табличной части
24 Anton2016
 
04.12.15
10:07
&НаСервере
Функция док_фн_ПолучитьСФ(парам_Документ)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
        |    СчетФактураВыданный.Ссылка
        |ИЗ
        |    Документ.СчетФактураВыданный КАК СчетФактураВыданный
        |ГДЕ
        |    СчетФактураВыданный.ДокументОснование = &ДокументОснование";
    
    Запрос.УстановитьПараметр("ДокументОснование", парам_Документ);
    
    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    СФ="";
    Пока Выборка.Следующий() Цикл
        СФ = Выборка.Ссылка.ПолучитьОбъект();
    КонецЦикла;    
    
    Если СФ<>"" Тогда
        Возврат СФ;
    КонецЕсли;
    
    Запрос = Новый Запрос;
    Запрос.Текст = "
        |ВЫБРАТЬ
          |    Ссылка,
          |    ДокументыОснования.ДокументОснование
        |ИЗ Документ.СчетФактураВыданный.ДокументыОснования    Как ДокументыОснования
        |ГДЕ
        |    ДокументыОснования.ДокументОснование = &ДокументОснование";
    
    Запрос.УстановитьПараметр("ДокументОснование", парам_Документ);
    
    РезультатЗапроса = Запрос.Выполнить();

    Выборка = РезультатЗапроса.Выбрать();

    СФ="";
    Пока Выборка.Следующий() Цикл
        СФ = Выборка.Ссылка.ПолучитьОбъект();
    КонецЦикла;    
    
    Если СФ<>"" Тогда
        Возврат СФ;
    КонецЕсли;
    
    Возврат "";
    
КонецФункции

не нравится )
25 DTX 4th
 
04.12.15
10:10
(24) См (12)
26 Anton2016
 
04.12.15
10:10
(25)
понял...
спасибо!
27 DTX 4th
 
04.12.15
10:11
Получать объект тоже нет необходимости..

Пока Выборка.Следующий() Цикл
Возврат Выборка.Ссылка;
КонецЦикла;
28 Anton2016
 
04.12.15
10:12
спс