#0
by aass
запрос выдает сумму цен (SUM(Cena.Цена)*SUM($ДокОКС.Количество)) но соотвественно выдает не то что надо, как добиться от left join что бы выбирал последнюю цену для нужного товара или есть в природе возможность передать дату и товар из первого запроса в условие для подзапроса ?
#0
by aass
запрос выдает сумму цен (SUM(Cena.Цена)*SUM($ДокОКС.Количество)) но соотвественно выдает не то что надо, как добиться от left join что бы выбирал последнюю цену для нужного товара или есть в природе возможность передать дату и товар из первого запроса в условие для подзапроса ?
#9
by Ёпрст
да, только там всё равно нужен будет order by и top 1. в FAQ на 1сpp есть пример получения периодики.. и на скайте серого, на скрипт-коддинг.ком
#10
by orefkov
Ну во-первых - СпрКатЦен.DESCR = 'Закупочная' моветон. Перед запросом получи идшник типа цен один раз, его и подставляй как параметр. И будет примерно так:
#11
by Ёпрст
Ну , моветон изначально брать цену из справочника, когда цена должна быть реквизитом документа всегда.
#12
by Кириллка
еси запрос через vfpoledb, то коррелированный в селект-листе будет ой (если память не изменяет).
#13
by aass
СпрКатЦен.DESCR = 'Закупочная' это принципиально, так как запрос пишеться под "чужую базу, шаримся из родной в соседней"
#15
by aass
тут документ продаж и цена тама продажи, а нам нужен закуп,есть вариант брать из партии цену, но в нашем случаи справочник отработает точней (нет последовательности)
#17
by Ёпрст
да не, работать будет нормально. Токма вот для скорости один хрен нужно всё переписывать
#18
by orefkov
И чего? Так же сначала делаешь запрос в соседнюю базу, получаешь id. Подставляешь его в текст запроса.
#19
by Кириллка
ну я упираться не буду, конечно, но точно помню, что была засада какая-то, что толи TOP не разрешен был, толи ORDER BY в коррелированном подзапросе в селект-листе.
#20
by aass
к этому варианту и пришел то что скорость на уровне около минуты движения за месяц , до этого еще два варианта было один до 30 минут второй до 8 если получиться с топ, отпишусь по времени
#21
by aass
если в соседнию базу кидаешь несколько запросов времени уходит намного больше когда один большой запрос
#23
by orefkov
Замер времени - истина в последней инстанции. Кстати, еще вариант - OLE + 1sqlite в той базе. Вобщем, мерять надо.
#25
by aass
ругается , ( SELECT top 1 cast(value as numeric(15,2)) FROM 1sconst as Константа INNER JOIN sc3772 as СпрЦены ON СпрЦены.ID = Константа.objid INNER JOIN sc3769 as СпрКатЦен ON СпрЦены.SP3787 = СпрКатЦен.ID INNER JOIN sc33 as СпрНоменк ON СпрНоменк.ID = СпрЦены.PARENTEXT WHERE AND cast(value as numeric(15,2))>0 FROM dt3487 as ДокОКС JOIN 1sjourn as Журнал on Журнал.iddoc = ДокОКС.iddoc INNER JOIN dh3487 as Док ON Док.IDDoc = ДокОКС.IDDoc INNER JOIN 1SJourn as Жур ON Жур.IDDoc = ДокОКС.IDDoc WHERE тзВыбНомеклатура = Запрос.ВыполнитьИнструкцию(ТекстЗапроса); {E:1C_DBEXTFORMSW_VFPOLEDB_4.ERT}: FAILED! ICommandText::Execute: SQL: Queries of this type are not supported.
#29
by Ёпрст
А нахрена вот так делать ?! JOIN 1sjourn as Журнал on Журнал.iddoc = ДокОКС.iddoc INNER JOIN 1SJourn as Жур ON Жур.IDDoc = ДокОКС.IDDoc
#36
by aass
$СпрЦены.Владелец а так он ругается Meta name parser error: поле таблицы не найдено "$СпрЦены.Владелец"
#37
by aass
вообщем не получились у меня JOIN в подзапросе для DBF. единсвенный вариант вычислять в основном запросе параметры для 1sconst id, objid и передавать их в условие подзапроса, как нарисую , результаты, по времени выполнения, напишу.
#45
by Кириллка
+44 а зачем тебе эта громоздкая конструкция в скобках? Пиши вместо скобок всегда 1234.56
#49
by aass
вот так работает, теперь не знаю как связать товар из подзапроса с товарам в основном запросе
#50
by aass
и по времени получается период что за один день что за месяц, выполнение запроса разница 20-30 секунд
#55
by aass
тут получается две фишки надо сделать 1. это соедbнить товары из подзапроса с оcновным запросом 2. в подзапросе наложить фильтр на 1sconst.Date <= Журнал.Date(из основного)
#60
by aass
запрос отработал тока | Журнал.Date - ругается, но тут понятно теперь есть загвоздка документы у нас на разную дату и цена тоже на разную дату условие в даннном случаи нас не устраивает and Конст.date<=:КонДата~~ надо что типо and Конст.date<=Журнал.Date решения два либо сюда запихивать дату документа, либо формировать на каждую дату свой запрос есть возможность запихнуть дату ?
#62
by Ёпрст
есть запрос надо переписывать, чтоб коррелированный подзапрос тоже бегал по индексу, т.е необходимо переделать условие подзапроса на индексное выражение.
#63
by Ёпрст
+62 Если не хочешь составлять правильное индексное выражение для фоксового запроса, пиши запрос с помощью 1sqlite - там оно само подбирает подходящий индекс. +синтаксис попроще.
#64
by aass
скорость существенно изменилась с индексами за день выполнен за : 20555 мс Время выполнения: 21 сек. за месяц выполнен за : 21947 мс Время выполнения: 22 сек.
#65
by Ёпрст
это п..ц как долго. Как будет ~2-3 мс, вот тогда "попадаешь". Смотри план выполнения запроса. На 1cpp есть ветка как смотреть его для фоксового провайдера.
#69
by aass
че то у меня , на "просто меньше или равно даты", после сообщения - "невозможно обработать та-та-та .tmp по причине превышения допустимых объемов" винт отвалился (у меня базы на отдельном винте) это совпадение или последствия "кривых рук" ? ))
#70
by aass
в общем с такой то матери( пришлось мать менять на компе на старой похоже с контролером че то не так, отваливался винт) заработало но прироста скорости обработки не увидел, и значение берет не на ту дату которою указываешь а последнюю, не могу попасть в индекс, индексы вверху посмотрите плиз, че нетак опять ?
#72
by aass
вот так отрабатывает а если Периодика.objid вставлять то ругается FAILED! ICommandText::Execute: SQL: Error correlating fields. и время выполнения - выполнен за : 5 мс так быстрее: | Конст.ID + Конст.OBJID + dtos(Конст.date) + Конст.time + Конст.DOCID + STR(Конст.PARTNO,3) <= выполнен за : 2 мс но пять что то ч этот вариант цену дает последнюю а не на заданную дату, как быть ?
#75
by Ёпрст
передавать дату из журнала вестимо. Если болт в коррелированном селект листе, то делать лефт джоин с подзапросом, в котором получать нужную периодику. или использовать 1sqlite
#77
by aass
| Конст.id+Конст.objid+DTOS(Конст.date)+Конст.time+Конст.docid+STR(Конст.partno,3) <= FAILED! ICommandText::Execute: SQL: Error correlating fields.
#81
by aass
вот разные запросы, разные показатели |SELECT | Журнал.Date, выполнен за : 29028 мс Время выполнения: 29 сек. |SELECT | Журнал.Date, выполнен за : 4936 мс Время выполнения: 5 сек. есть еще варианты ускорить ?
#83
by aass
совсем все уже убрал |SELECT | $ДокОКС.Товар as [Товар $Справочник.Номенклатура], выполнен за : 4978 мс Время выполнения: 5 сек. это все возможное ?
#84
by Ёпрст
Строка подключения из ? + Запрос.Выполнить("EXECSCRIPT('SET ANSI OFF')"); Это в коде есть ? второй раз запускаешь на выполнение, время какое ?
#85
by aass
1. есть 2. выполнен за : 5057 мс Время выполнения: 5 сек. выполнен за : 4956 мс Время выполнения: 5 сек. выполнен за : 4933 мс Время выполнения: 5 сек.
#86
by aass
че то уменя какой не делаю один хрен время около примерно выполнен за : 6629 мс Время выполнения: 7 сек. выполнен за : 3885 мс Время выполнения: 4 сек. выполнен за : 3864 мс Время выполнения: 4 сек.
#89
by aass
вот рабочий вариант получения закупочной цены на нужную дату, теперь бы все это сцепить с при условии дата цены на дату документы выполнен за : 2061 мс Время выполнения: 2 сек.
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1с++ Общие.Форма.Привязка.ert
- v7: 1С++ прямой запрос по периодом все
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Прямой запрос 1С++ к DBF через OLEDBCommand и виртуальные таблицы
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
- v7: 1С++ Хочу прямой запрос на удаление записей из регистров по условию Номенклатура
В этой группе 1С
- Цены в Требование-накладная при РАУЗ
- Группировка колонок в СКД
- no such interface supported
- В подборе нет свободного остатка. УТ
- Суммовые остатки по 41.02 по розничным суммам - это нормально?
- УПП. Ограничение доступа на уровне записей. У пользователя недостаточно прав.
- Проблема с конфигуратором: не отключается масштаб по ширине
- "Холодная" перезагрузка - как?
- v7: Свернуть с неизвестным количеством колонок
- ASUS RT-N16 и DD-WRT
- 1с8.2 Форматированный документ: вставка картинки и ее сохранение не отрабатывают
- Последняя стабильная версия 1С 8.2.14
- v7: Предприятие 7.7 (7.70.025) Как добавить колонку в ЖурналПриход?
- Как задать параметры построителя в СКД
- Отладчик не встает на точку останова!
- 1С 8.2 Итоги в Таблице значений
- УПП: Как закрыть затраты 23 счета на др. счета и подразделения?
- Не подключается внешняя компонента в клиент серверном варианте
- УПП. Соответствие договора расчетному счету
- Как снять с матплаты рамку Socket 478