Метод ВыбратьДвижения() по регистру через прямой запрос SQL #556724


#0 by Looking
Конфигурация ПУБ, БД SQL. Написал функцию для контроля просроченной задолженности в Модуле документа РеализацияПродукции, через метод ВыбратьДвижения. Работает медленно, задержка порядка 5 секунд. Можно-ли выбрать движения регистра прямым запросом SQL? Помогите примером, пожалуйста. Мой код: Если Константа.КонтрольКредитаПокупателей=1 Тогда
#1 by Looking
задержка в 5 секунд именно в строке Регистры.РасчетыСПокупателями.ВыбратьДвижения(,Тек ущийДокумент,);
#2 by zak555
ВыбратьДвиженияДокумента ?
#3 by Looking
это вопрос? или предложение воспользоваться этим методом? у меня используется метод регистра Регистры.РасчетыСПокупателями.ВыбратьДвижения(,Тек ущийДокумент,);
#4 by m g r
а где прямой запрос ?
#5 by milan
Имха прямой запрос не шипко ускорит
#6 by Собеседник
откуда такая уверенность? пробовал? :)
#7 by milan
Предполагаю, хочешь - попробуй ;)
#8 by Собеседник
спасибо, улыбнуло :)
#9 by nicxxx
хорошо ускорит. проверено
#10 by VoditelKobyly
На тебе пример из нашей программы. В твоем коде не разбирался. Получишь сразу текущий и долг и просроченный по дням долг.
#11 by Азат
я канеш извиняюсь, но нафига делать выборку из Справочника контрагентов?
#12 by Looking
Наверное я напрасно весь код привёл, меня интересует, как можно реализовать следующий кусок кода прямым запросом, и даст-ли это навскидку существенное ускорение? В этом куске кода - первое - выборка движений регистра, второе - выборка подчинённых документов. Эти методы имеют аналоги в виде прямых запросов?
#13 by Ёпрст
имеют.
#14 by Азат
эмммМ, любое действие, совершаемое тобой имеет аналог в виде прямого запроса как минимум потому, что так и происходит, когда проводится документ или что-то еще... или ты надеялся, что sql-сервер понимает язык 1С? Ну посмотри на 1cpp.ru - там оч хороший хелп есть
#15 by Ёпрст
код в - это полный ПЭ.
#16 by Ёпрст
вопрос в модуле проведения - это 2 раза полный ПЭ. Таблица - это три раза.. В общем, всё в топку.
#17 by VoditelKobyly
Скорее всего осталось от предыдущих версий, когда требовались сортировки. Конечно, здесь это лишнее. Но похоже автора это не интересует, если он на этот пример внимания не обращает.
#18 by Mikeware
Система слишком быстро работает. Надо притормозить :-)
#19 by Ёпрст
ага, то-то я и смотрю, что автор все движения регистра перебирает.. :)
#20 by ЧеловекДуши
А для чего так много циклов по одной и той же таблице :)
#21 by Looking
можно установить фильтр только по расходным движениям?
#22 by Ёпрст
where debkred =1
#23 by VoditelKobyly
Зачем вообще тебе движения? Ты же стоял на правильном пути: собрался с использованием прямого запроса сразу выдернуть просроченную задолженность клиента. Я тебе дал пример. Поправь его к своей базе и всё. Теперь опять собираешься думать как быстрее стандартными средствами 1с выбрать движения, накидать табличку по документам, чтобы потом получить просрочку? И вынеси все проверки из модуля проведения.
#24 by Looking
движения нужно по причине того, что остаток Регистра РасчетыСПокупателями по измерению РасчДокумент не актуален, т.к. документы оплаты разносятся обезличенно без указания документов отгрузки и последовательность сложно поддерживать в актуальном состоянии, т.к. в БД круглосуточно работают пользователи.
#25 by Ёпрст
Если интересно, могу сказать как у нас контролируется просроченная задолженность по клиентосу.
#26 by Looking
интересно, скажите, пожалуйста
#27 by Ёпрст
У клиентоса в договоре сумма кредита и глубина в днях. Просрочка определяется очень просто - долг на документ минус оборот за глубину кредита, если оборот превысил долг - значит есть просроченный. Всё собственно. Простым прямым запросом получаем итоги и оборот и там же разница (+ учитываем еще возвраты). Да, если есть просроченный долг - отгрузка клиентосу запрещена.
#28 by Looking
я о таком варианте думал изначально, он мне отчего-то показался уязвимым, из-за отсутствия детального анализа движений, подумал что могут не учитываться взаимозачёты или ещё какие-то движения внутри глубины кредита, похоже я ошибся в своих предположениях и пошёл наиболее времяёмким и кривым путём, спасибо что направили на путь истинный!
#29 by Ёпрст
а оно тебе надо, знать кто кому и зачем в модуле проведения ? Тебе нужно всего лишь определить - есть у клиентоса просроченный долг или нет. Есть - пнх на отгрузку. У нас регламентируется отдельным документом выписка таким клиентосам, в них -  кто и когда разрешил отгрузить таким клиентосам и причина.
#30 by Looking
всё верно, спасибо огромное за наводку!
#31 by Looking
подскажите, пожалуйста, каким образом возвраты учитываете? смотрите-ли к какому периоду относится возврат - в рамках глубины кредита или к более раннему? или-же просто прибавляете к долгу все возвраты за период глубины кредита, в независимости от того к какому периоду относится документ отгрузки по которому производится возврат?
#32 by Ёпрст
с возвратами там хитро сделано.. и с глубиной кредита связано в том числе и от какой отгрузки был возврат. Чтоб не было такого, что долга нет, а из-за возврата получается, что долг как-бэ есть просроченный.
#33 by Aleksey
Возврат - это оплата (она как и оплата уменьшает долг). Как может по оплате вылезти просрочка?
#34 by Ёпрст
Просрочка = Долг-Продажа+Возврат.. дальше объяснять ?
#35 by Looking
спасибо! значит возвраты нужно подокументно перебирать? чтобы анализировать дату документа-основания? таким образом деля сумму возврата на две - "сумма возвратов по отгрузкам в рамках глубины кредита" - её прибавляем к долгу, и "сумма возвратов по отгрузкам раньше глубины кредита" - её не учитываем, т.е. не прибавляем и не вычитаем.
#36 by Ёпрст
не помню ужо, нужно код глядеть. Есть же еще возвраты без указания документа основания..
#37 by Looking
гм, по поводу возвратов без указания документа-основания, у меня таких вроде-бы нет, если и будут, то честно говоря непонятно куда их относить - к уменьшающим долг или не оказывающим на него влияния, т.к. непонятно - то-ли это уменьшение просроченного долга, то-ли непросроченного
#38 by Looking
такие возвраты нужно, наверное по решению ответственного лица относить к тому или иному периоду - либо в рамках глубины кредита, либо до неё
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

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