Версия для печати темы (https://pro1c.org.ua/index.php?s=727b02c9d44701a3bdd35ba1a4fae127&showtopic=67463)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование в 1С Предприятие 7.7 _ Треба знайти документ РК, якій містить заданий документ Счет

Автор: chernomoretc_cn 29.01.24, 17:25

Платформа 1с 77 (sql)
Версія 7.70.027
Конфігурація Бухгалтерія для України.

Є два документи Счет і РК.
Один із реквізитів документа РК є реквізит Счет, його тип Документ.

Треба знайти документ РК, якій містить заданий документ Счет.
Період не відомий.

Запит

        ТекстЗапроса = 
        "//{{ЗАПРОС(Сформировать)
        |ОбрабатыватьДокументы все;
        |РК = Документ.РК.ТекущийДокумент;
        |Заказ = Документ.РК.Заказ;
        |ДатаДок = Документ.РК.ДатаДок;
        |Группировка РК;
        |Условие(Заказ = ВыбЗаказ);
        |"//}}ЗАПРОС

Працює, але довго. Секунда кілька секунд.

Запит
        Если ЗагрузитьВнешнююКомпоненту("1CPP.dll") <> 1 Тогда
            Сообщить("Компонента '1CPP.dll' не найдена", "!");
        КонецЕсли;
        RS = СоздатьОбъект("ODBCRecordset");
        RS.УстБД1С();
        
        ТекстЗапроса = "
        |SELECT
        |      ДокРК.IDDOC     as [тДок $Документ.РК] ,
        |      $ДокРК.Заказ     as [Заказ $Документ]
        |FROM
        |  $Документ.РК as ДокРК
        |LEFT JOIN                        
        |    _1SJOURN as Жур ON Жур.IDDoc = ДокРК.IDDoc
        |WHERE  
        |($ДокРК.Заказ = :ВыбЗаказ)
        |Group BY ДокРК.IDDOC, $ДокРК.Заказ                                                                                                            
        |";
        
        //RS.УстановитьТекстовыйПараметр("ВыбДатаНач",ВыбНачПериода);
        //RS.УстановитьТекстовыйПараметр("ВыбДатаКон",ВыбКонПериода+1);
        RS.УстановитьТекстовыйПараметр("ВыбЗаказ",ВыбЗаказ);
        
        RS.Отладка(0);
        
        ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);
        тчДок = СоздатьОбъект("ТаблицаЗначений");
        ТЗ.Выгрузить(тчДок);


Помилок не видає. Але і документ не находить.
Що не так в запиті?

Автор: zay 30.01.24, 10:43

chernomoretc_cn @ Вчера, 18:25 * ,
Якщо у вас база на sql і ви знаєте її структуру, проіндексуйте реквізит "Заказ" прямо у таблицях бази через SQL Server Management Studio. Перший запит почне працювати із нормальною швидкістю

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua