[РЕШЕНО] Пакет запросов в 7.7(sql 2000)

Тема в разделе "Общие вопросы "1С:Предприятие 7.7"", создана пользователем ТехБухПривет, 18 окт 2017.

  1. TopicStarter Overlay
    ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    810
    Симпатии:
    89
    Баллы:
    54
    Доброго дня! Мне требуется получить данные из 7.7 и обработать результат, для этого использую пакет запросов(Сильно упрощенный пример):

    Код:
    тзИтог = SQLSession.ExecuteStatement("
    
    CREATE TABLE #ВиртТаб1 (кол11 Char(7), кол12 Char(9))
    INSERT  INTO #ВиртТаб1
    SELECT DISTINCT
    Кол11
    ,Кол12
    From Таб1;
    
    CREATE TABLE #ВиртТаб2 (кол21 Char(7), кол22 Char(9))
    INSERT  INTO #ВиртТаб2
    SELECT DISTINCT
    Кол21
    ,Кол22
    From Таб1;
    
    CREATE TABLE #ВиртТаб3 (кол31 Char(7), кол32 Char(9))
    INSERT  INTO #ВиртТаб3
    SELECT
    Кол12
    ,Кол22
    From #ВиртТаб1 ВТ1
    INNER JOIN #ВиртТаб2 ВТ2 ON ВТ1.Кол11 = ВТ2.Кол21
    
    SELECT
    ВТ1.Кол32
    ,таб4 .Кол31
    From #ВиртТаб3 ВТ3
    INNER JOIN Таб4 таб4  ON таб4 .Кол11 = ВТ3.Кол21
    Order by таб4 .Кол31
    ");
    ОбъектФормы.Загрузить(тзИтог);
    

    Вот всё одним запросом не обрабатывается, а двумя(первые три и последняя) отдельными работает на ура(результирующий запрос отрабатывает и возвращает результат)!
    Одним(в отладчике) возвращает просто цифру или 2 или 1 в зависимости от метода. На просто Execute(вернув в отладчике 1, при загрузке на форму) - в итоге выдает ошибку.

    P.S. виртуальные таблицы потом дропаю - не забываю :)
    Последнее редактирование: 18 окт 2017
  2. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    Мне кажется, или эти 3 ВТ всего лишь "выбрать различные кол12, кол22 из Таб1 Где кол11 = кол21"?:)
  3. TopicStarter Overlay
    ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    810
    Симпатии:
    89
    Баллы:
    54
    я привел просто пример - в запросе много данных и много строк с отборами.. главный вопрос - общий синтаксис работы с Пакетом запросов...
    виртуальными таблицами я уменьшаю объем обрабатываемой информации иначе время выполнения запроса стремиться к бесконечности..))
  4. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    какой скуль? похоже, есть хитрости использования временных таблиц в АДО. А может nocount?
  5. TopicStarter Overlay
    ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    810
    Симпатии:
    89
    Баллы:
    54
    1. скуль в теме.. (MSsql)
    2. Поподробнее..)
  6. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    Ну, тут предлагают в начале sql-запроса вставить
    Код:
    SET NOCOUNT ON;
    Имхо тут нужно документацию читать, что за бубны в sql2000 с временными таблицами. Возвращает он тебе, видимо, количество таблиц.
    ТехБухПривет нравится это.
  7. TopicStarter Overlay
    ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    810
    Симпатии:
    89
    Баллы:
    54
    CREATE TABLE #ВиртТаб (..Char(...)..) SET NOCOUNT ON
    Добавление данной опции для каждой виртуальной таблицы - решило проблему!
    Правда иногда подвисает, но это может быть и из-за объема данных, во всяком случае лучшего решения не нашёл...
  8. 1с-ник
    Offline

    1с-ник Профессионал в 1С Заблокирован

    Регистрация:
    5 окт 2014
    Сообщения:
    998
    Симпатии:
    164
    Баллы:
    104
    А где мой лайк?:)
  9. TopicStarter Overlay
    ТехБухПривет
    Offline

    ТехБухПривет Профессионал в 1С Команда форума

    Регистрация:
    25 июн 2013
    Сообщения:
    810
    Симпатии:
    89
    Баллы:
    54
    На месте :p Спасибо!