Типизация документов из подзапросов в 1С++ #205327


#0 by pashoid
SELECT    ДатаДок, Док AS Документ, Док_вид AS Документ_Вид,    FROM        $Справочник.ШтатноеРасписание AS СпрШтат    SELECT        Жур.IDDoc AS Док,        Жур.IDDocDef AS Док_вид,        CAST(LEFT(Жур.Date_Time_IDDoc, 8) AS DateTime) AS ДатаДок,        $ДокПМинус.Фирма AS Фирмы,        $ДокПМинус.Склад AS Склады,        $ДокПМинус.Продавец AS Продавец,        $ДокПТМинус.Товар AS Товары,        ТовПТМинус.ParentID AS Группы,        (SELECT            $Спр.Отдел        FROM            $Справочник.Товары AS Спр        WHERE    FROM        _1SJourn AS Жур    LEFT JOIN        $Документ.ПереносЗарплатыПродавца AS ДокПМинус ON ДокПМинус.IDDoc = Жур.IDDoc    LEFT JOIN        $ДокументСтроки.ПереносЗарплатыПродавца AS ДокПТМинус ON ДокПТМинус.IDDoc = Жур.IDDoc    LEFT JOIN        $Справочник.Товары AS ТовПТМинус ON ТовПТМинус.ID = $ДокПТМинус.Товар        |SELECT    ДатаДок, Док AS [Документ], Док_вид AS [ДокВид],    FROM        sc3208 AS СпрШтат    SELECT        Жур.IDDoc AS Док,        Жур.IDDocDef AS Док_вид,        CAST(LEFT(Жур.Date_Time_IDDoc, 8) AS DateTime) AS ДатаДок,        ДокПМинус.sp3294 AS Фирмы,        ДокПМинус.sp3295 AS Склады,        ДокПМинус.sp3296 AS Продавец,        ДокПТМинус.sp3305 AS Товары,        ТовПТМинус.ParentID AS Группы,        (SELECT            Спр.sp1731        FROM            sc33 AS Спр        WHERE    FROM        _1SJourn AS Жур    LEFT JOIN        dh3312 AS ДокПМинус ON ДокПМинус.IDDoc = Жур.IDDoc    LEFT JOIN        dt3312 AS ДокПТМинус ON ДокПТМинус.IDDoc = Жур.IDDoc    LEFT JOIN        sc33 AS ТовПТМинус ON ТовПТМинус.ID = ДокПТМинус.sp3305как на внешнем запросе типизировать Док как $Документ (имено неопределеного вида!), и Док_вид так, чтоб было написанно вид документ (но это не обязательно)?запрос, по сути - упрощен, поэтому выглядид чуток громоздко, но этот кусок 100% рабочий и отображает мою проблему.Очень надеюсь на помощь.
#1 by WAR
Запрос действительно выглядит рабочим.А если первые строчки подправить так:    ДатаДок, Док AS [Документ $Документ],и больше ничего не менять?
#2 by pashoid
Выдает"Для типизации поля "Документ", не найдено дополнительное типизирующее поле "
#3 by WAR
Документ_Вид надо писать Документ_вид, именно так, как написал я.вид с маленькой буквы.
#4 by pashoid
супер, супер, супер.... огромное сэнкс. :)а еще вот эта часть вопроса:"... и Док_вид так, чтоб было написанно вид документ ..."?
#5 by WAR
Сорри, поздновато заглянул опять на форум.Ну я вижу решение данной проблемы в следущем:Делаешь временную таблицу, создаешь объект типа MetaDataWork и циклом по Метаданные.Документ пихаешь во временную табличку ИДОбъекта (метод объекта MetaDataWork) и Идентификатор.Потом присодиняешь к своей таблице по IdDocDef и имеешь ВидДокумента.
#6 by WAR
На вот тебе готовый код, я его юзаю.  олеКом = СоздатьОбъект("ODBCRecordSet");  олеКом.Выполнить("IF object_id('tempdb.dbo.#VidDoc') IS NOT null
#7 by pashoid
о, спасибочки.а то уже хотел делать обход в таблице с выгруженными данными запроса.еще пару вопросов:1) чисто практический.есть отчет, в котором есть три уровня расшифровок:1. продажи по продавцам;2. продажи продавца по дням за установленный период;3. продажи продавца по документам и товарам за день.выходит так, что запрос построен одним макаром для всех трех расшифровок(в основном из завернутости расчета сумм), единственное отличие - с каждым уровнем накладываются разные условия.как лучше - при каждой расшифровке формировать почти один и тотже запрос (время выполнения которого уменьшается пропорционально количеству накладываемых условий), или сделать один раз выгрузку в ТЗ и потом просто накладывать условия при проходе для распечатки?2) и что лучше использовать, Индексируюмую ТЗ или обычную, если в таблице никакого поиска не будет - просто тупой перебор для печати.
#8 by USSR
А почему не выгрузить запрос не в ТЗ, а в промежуточный DBF? А потом к нем запрос писать? я так делал сложный отчет из нескольких запросов.
#9 by pashoid
у меня уже есть сложный отчет. почти все реквизиты его нужны или для сортировки, или для вывода на печать в каждой расшифровке.у меня вопрос по оптимизации работы именно с одним отчетом и одной таблицей.Сейчас для каждой расшифровки я формирую запрос заново - мне понравилось время его выполнения. И полученные данные просто перебором выводятся на печать. Но, в плане удобности это плохо, так-как любое изменение в расечте сумм, повлечет изменение в каждом запросе.Так вот вопрос, если я буду формировать запрос один раз, и совсеми нужными полями выгружу в ТЗ (а не в файл, время работы с которым будет явно выше) и в ней буду накладывать условия при выводе на печать - я е потеряю в скорости?Приблизительный объем - месячная обработка выгружает в ТЗ около 10 тыс строк. Первый отчет выводит приблизительно 40 строк с свернутыми данными, вторая расшифровка - максимум 31, третья - зависит от плодовитости продавца.
#10 by MC
http://www.1cpp.ru/forum/YaBB.pl?num=1153746303
#11 by pashoid
спасибочки, за ссылку, но там ответа нет на мой вопрос.потом туда брошу тему с проблемкой.
#12 by MC
а внимательно посмотреть???
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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