#0
by Косяк
Есть задача: найти последний по дате приходный документ, в котором есть конкретный материал. База довольно большая и за несколько лет. Делаю соответствующий запрос. Обхожу этот запрос в нужном мне порядке. а именно, - в обратном порядке. Обойти то я его обойду, но это когда он уже сформирован, а формироваться он может долго. Сам запрос выполняется по всем годам в прямом порядке: сначала год 2000, затем 2001 и т.д. Неужели нет способа ускорить? Если встретился документ с разыскиваемым материалом, например в 2016 году, то нужно прекратить перебор документов. Как?
#0
by Косяк
Есть задача: найти последний по дате приходный документ, в котором есть конкретный материал. База довольно большая и за несколько лет. Делаю соответствующий запрос. Обхожу этот запрос в нужном мне порядке. а именно, - в обратном порядке. Обойти то я его обойду, но это когда он уже сформирован, а формироваться он может долго. Сам запрос выполняется по всем годам в прямом порядке: сначала год 2000, затем 2001 и т.д. Неужели нет способа ускорить? Если встретился документ с разыскиваемым материалом, например в 2016 году, то нужно прекратить перебор документов. Как?
#1
by evGenius
Ну например сделать не единым запросом, а циклом с запросами по месяцам, начиная с последнего месяца и постепенно идти назад.
#4
by Duke1C
Для начала выкинь Код из условия. Если я правильно понимаю то ОснМатериал - это реквизит на форме?
#6
by Duke1C
+4 и нафейхоа тебе лишние переменные в запросе ДатаДокумента, ДатаНомерСчФактуры, Поставщик (для которого еще к тому же наименование выбирается)??
#8
by Lazy Stranger
если это оперучет - я бы по регистру искал, что-то вроде рег = СоздатьОбъект("Регистр.ОстаткиТМЦ"); рег.УстановитьЗначениеФильтра("Номенклатура",ОснМатериал) КонецЦикла; и проверить наличие галки "отбор движений" на соответствующем измерении регистра
#10
by Lazy Stranger
лучше, но сложнее на порядок - разбираться с отдельной технологией и приделывать ВК к базе
#12
by Lazy Stranger
если чел в обычно запросе вместо ОсновнойМатериал= ОснМатериал пишет ОсновнойМатериал.Код = ОснМатериал.Код, страшно представить что в прямых запросах будет (впрочем я тоже их писать не умею, хотя видоизменять готовые доводилось, есть у меня клиент, где предшественник писал отчеты прямыми запросами - штука могучая, конечно)
#14
by Ёпрст
прямой запрос. А так, в , вот за этот код |Условие(ОсновнойМатериал.Код = ОснМатериал.Код); нужно стальной линейкой по пальчикам бить
#18
by Масянька
Если бы вы работали учителями/преподавателями - давно бы уже сидели... За насилие над учащимися... :)
#25
by Злопчинский
аналогично, хотя я "учил" меньше. Но постоянно ругаюсь сейчас на всяких ларечников-клюшечников - стучаться за консультациями... ниче, терпят, пасибу говорят, денежку перечисляют. Если не мы, то - кто?
#26
by Ёпрст
ну как тебе сказать, например в sql базе выполняется в разы медленнее, если написать по-человечьи
#27
by trad
у нас в школе, когда я учился, математичка была - старушка старой закалки, могла и линейкой по башке и мелком метко швырнуть. Одна из самых уважаемых была, и уважали как хорошего учителя, а не из-за страха
#31
by Масянька
Тогда - времена были другие. Учитель был авторитетом. А сегодня? Ученик откровенно саботирует, да еще и права качает...
#38
by kobzon2
Убери это условие |Условие(ОсновнойМатериал.Код = ОснМатериал.Код); И добавь его в обход группировки. Разве так не лучше?)
#47
by Ёпрст
Если делать штатно, то добавить графу отбора и ВыбратьПоЗначению, будет не быстро, а очень быстро. Можно еще и ускорить, ограничив через ИспользоватьЖурнал
#55
by kobzon2
Если запрос работает в прямом порядке, может тогда ну его нах? Делать через выборку документов в обратном порядке.
#58
by MishaD
Давно бы заглянул в синтакс помошник ОбратныйПорядок(<?>); Синтаксис: ОбратныйПорядок(<Режим>) Назначение: Установить порядок выборки документов во времени. Возвращает значение порядка выборки до вызова: 1 - выборка документов в порядке убывания даты и времени; 0 - в порядке возрастания. Параметры: <Режим> - необязательный параметр. Число: 1 - выбирать документы в порядке убывания даты и времени; 0 - выбирать документы в порядке возрастания даты и времени. Если параметр опущен, то метод просто возвращает текущее значение порядка выборки документов. Замечание: Метод можно использовать как процедуру и как функцию. Метод можно использовать только для объектов, созданных функцией СоздатьОбъект.
#59
by Lazy Stranger
регистры остатков каких-нибудь двигает этот документ? если да - чем вариант из не подходит?
#63
by Lazy Stranger
подозреваю что материал там в табл. части - перебирать все строки всех документов - ещё больший изврат чем в
#64
by Mikeware
Загрузи 1cpp.dll , и выполни следующее: рс=СоздатьОбъект("ODBCRecordset"); ТекстЗапроса=" (вместо "ПоступлениеТМЦ" поставь название своего дока, вместо Номенклатура - название твоего поля)
#66
by Mikeware
Не скопировалась еще одна сточка: ДокПоступление=рс.ВыполнитьСкалярный(ТекстЗапроса);
#68
by Mikeware
лучше молчать, чем нести куйню, как ты. я могу сделать это добрым десятком методов. но самый правильный был предложен в
#79
by Косяк
рс=СоздатьОбъект("ODBCRecordset"); {Документ.Обоснование1.Форма.Модуль}: Неудачная попытка создания объекта (ODBCRecordset) 1CPP.DLL лежит в папке 1С BIN
#80
by Mikeware
Если ЗагрузитьВнешнююКомпоненту("1CPP.dll") = 0 Тогда Предупреждение("Неудачная попытка загрузить 1CPP.dll"); СтатусВозврата; Возврат; КонецЕсли;
#82
by Косяк
Что то не хочет работать, не пойму почему.. RS.УстановитьТекстовыйПараметр("Материал",ОснМатериал); {Документ.Обоснование1.Форма.Модуль}: Значение не представляет агрегатный объект (УстановитьТекстовыйПараметр)
#83
by Mikeware
после загрузки компонениы еще раз создай одбсрекордсет. ты ж его не создал - вывалился по исключению....
#87
by Ёпрст
>>>ПоступлениеМатериаловСтроки.IDDOC нет такого алияса ПоступлениеМатериаловСтроки есть ПоступлениеМатериалов если че ну и дальше по тексту исправить
#90
by Косяк
ТЗ.ВыбратьСтроки; {Документ.Обоснование1.Форма.Модуль}: Значение не представляет агрегатный объект (ВыбратьСтроки)
#96
by Косяк
Если оставлю только RS=СоздатьОбъект("ODBCRecordset"); то получаю ошибку ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса); {Документ.Обоснование1.Форма.Модуль}: База данных не установлена
#98
by Масянька
Фига себе... До сотки дотянули... А сделал бы выборку - уже давно другую задачу решал бы... Комсомольцы, блин...
Тэги: 1С 7.7 и ранее
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
- V7 Запрос по БухСчету (Не бух запрос)
- v7: v7 : НДС при возврате
- v7: Что нужно чтоб подключить ККМ Меркурий 112F к 1с V7 Торговля + склад
- v7: v7.7 премещение элемента справочника
- v7: v8: v7: Кто-нибудь сумел скачать комплект отчетности за I квартал 2007 года
- v7: 1С V7.7 в сети
- v7: 1C:V7 starter program (for SQL) - обнаружена ошибка
- v7: Перенос данных Бухгалтерия из v7 в v8
- v7: v7 Перехват глобального события ПриЗаписи() или ОбработкаПроведения()
В этой группе 1С
- Грузополучатель в УТ 11.1
- MSIE меняет порядок атрибутов при отображении XML
- Когда используют метод Добавить у КоллекцияЭлементовПользовательскихНастроекКомп
- Делаю объединение с "Взять из конфигурации поставщика", а оно все равно вылазит
- Оптовый и розничный склад в УТ 10.3
- Планировщик 1С
- УФ: Как из подчиненной формы получить путь к данным ТЧ родительской формы
- v7: 1C 7.7. Как выбрать все движения регистра до документа
- КНД 0710096
- Может кто поделится методикой по внедрению 1С:ERP?
- Себестоимость в БП 3 Возврат от покупателя
- Добавление спец символов в строку
- Ошибка при запуске программы 1С Предприятие
- v7: Универсальная выгрузка данных XML и падение 1С 7.7
- почему в УТ11 док ПТиУ не пишет в регистр Свободные остатки?
- как установить вид шкалы времени в диаграмме Ганта
- Как можно программно оповестить другого пользователя 1С
- Восстановить положение окна
- Регистрация изменений регистра накоплений
- Долгое сохранение файлов в Remote APP 1С на подключенный локальный диск