ComОбъект. Быстрый способ загрузки результата запроса в ТЗ #678940


#0 by Любопытная
Здравствуйте. Имеется задача получить данные из сторонней БД на SQL. Для этого имеется запрос к этой БД и подключение к ней же через COM. Запрос на выходе дает 140 с гаком тысяч строк, которые тупым перебором в цикле заполняют ТЗ для дальнейшей обработки. Внимание вопрос: способы избавиться от тупого перебора есть? Так чтоб разом COMОбъект каким-то невероятным способом слить в ТЗ. Заранее признательна всем ответившим :) З.Ы. изначальный запрос обязательно переработаю. Потом как-нибудь)
#1 by Kreont
РезультатТЗ = ЗапросОЛЕ.Выполнить.Выгрузить;
#2 by Heckfy
Запрос.выполнить.Выгрузить не...
#3 by Kreont
а сори у тебя не к 8-ке ОЛЕ :(
#4 by Wobland
решение для связки 1С-1С
#5 by Rie
ComSafeArray - не поможет?
#6 by Любопытная
У меня не Запрос в результате, у меня ComОбъект
#7 by Wobland
+ мой КОМ умел представить свою ТЗ в строковом виде. твой - видимо, нет. предлагаю предаться унынию
#8 by ДенисЧ
Существует такая вещь, как GameWithFire (внешняя компонента, бесплатная). Там есть метод выгрузки запроса в ТЗ.
#9 by dk
цепляемся к 1с 7.7 (с установленный 1С++) обращаемся из 7.7 к внешней БД через 1c++ получаем ТЗ в 7.7 ))
#10 by Любопытная
Мне проще 5 минут подождать))
#11 by Любопытная
Это что за зверь?
#12 by H A D G E H O G s
5 минут - это слишком долго. Подозреваю копрокот.
#13 by H A D G E H O G s
Но не вини себя. Ты просто девочка, им - простительно.
#14 by Любопытная
Ты правильно подозреваешь. Скуль возвращает 145 тысяч строк, которые в отчете превращаются в 145 без тысяч. Но запрос к скулю писала не я, а какой-то великий гуру.
#15 by H A D G E H O G s
Отчет - это ПостроительОтчета на основании ИсточникаДанных ?
#16 by arsik
Я так полагаю, что разбираться с запросом к скулю, что бы возвращало сразу 145, вы не хотите?
#17 by Любопытная
СКД
#18 by Любопытная
Хочу. Но я же девочка, я же не умею)
#19 by Rie
Если COMОбъект умеет возвращать значения в виде массива (например, Excel это умеет).
#20 by Rie
Так показала бы запрос!
#21 by Любопытная
#22 by Любопытная
Где-то что-то с группировками не так.
#23 by arsik
Тогда шагом марш к плите, щи, пеленки и все такое.
#24 by dk
а переделываешь во что?
#25 by Любопытная
:-Р Я на мяско в щи кто мне денег даст? Ты обеспечивать будешь. Не уходите от темы
#26 by Alex375
А теперь, что делается с результатом покажи :)
#27 by Любопытная
там, как я понимаю нет группировки по группе. или не по группе... в общем, потом это преобразуется так:
#28 by Rie
Обращаешься к SQL через ADO?
#29 by Alex375
Все это можно в SQL перенести. Не особо сложно.
#30 by Любопытная
верю! Но запуталась в 5 таблицах БД.
#31 by Alex375
Только вот что за поле "ses"? Откуда оно? В SQL такого не вижу.
#32 by Любопытная
да
#33 by Любопытная
адрес БД на сервере. Техническое поле, для вас оно не имеет никакого значения. Заполняется в цикле
#34 by Rie
Тогда COMSafeArray можно использовать для получения результата - у ADODBRecordset есть метод GetRows. Вот только потом этот массив - всё равно перебирать.
#35 by Любопытная
почему все равно перебирать? И какой тогда в этом смысл?
#36 by Гефест
Излови этого гуру и заставь переписать запрос. Или сама перепиши
#37 by Любопытная
а то вы гуру не знаете. Вы же сами первым делом - "дура, сама виновата". Вот и сижу сама :) Ладно, я все поняла. Спасибо за помощь
#38 by Alex375
стукни в аську - я тебе запрос по SQL скину. Посмотришь - вдруг получится )
#39 by Rie
Возьми второй запрос (1С-овский). Перепиши по-английски. Двойные кавычки замени на одинарные. И название временной таблицы сделай латиницей. В первый запрос перед FROM добавь INTO #НазваниеТвоейВременнойТаблицыЛатиницей
#40 by Rie
+ И выполни всё это в SQL
#41 by Любопытная
не вывозит 1С временные таблицы. Этот вариант рассматривался вчера.
#42 by Любопытная
+
#43 by Гефест
Причем тут 1С? Он тебе предлагает все в скуле сделать
#44 by ДенисЧ
SET NOCOUNT ON
#45 by Rie
А не надо его закрывать. Создаёшь соединение - 1 (Одно). И в нём выполняешь запросы.
#46 by Любопытная
вот сейчас не поняла вообще) В общем, выкинула лишнее из скульного запроса, получила 243 строки в результате. Приемлимо)
#47 by Wobland
лемо
#48 by romansun
манипулировать ТЗ в 150 тыщ строк - это само по себе косячно, т.е. архитектурная ошибка ура :)
#49 by Любопытная
тебе отдельное спасибо :) я вообще не поняла, что там к чему. Каким образом соотносятся дисконтные карты с продажами и как получаются суммы... Да и черт с ним. Пусть сами разбираются, раз рассказывать не хотят
#50 by Serginio1
#51 by МихаилМ
GetRows
#52 by МихаилМ
+ орефков год назад грозился сделать приблуду
#53 by МихаилМ
напишите хранимую процедуру, которая сериализует выборку в тз сожмет, и получите через поле типа хранилище значений
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С