МоментВремени в запросе #589263


#0 by 1С_Дурик
Добрый день. При использовании МоментВремени, запрос выполняется очень . В чем может быть проблема.Спасибо
#1 by vicof
очень быстро?
#2 by Cube
Ну дык, без использования МоментВремени, запрос будет выполняться не очень...
#3 by 1С_Дурик
*очень долго
#4 by 1С_Дурик
без использования остатки не правильные
#5 by DrShad
Остатки без даты берет текущие, а с датой рассчитывает
#6 by Cube
Если дата = Неопределено Тогда Что за переменная "Дата" и где она присваивается?
#7 by 1С_Дурик
реквизит документа
#8 by Cube
Как реквизит документа типа "Дата" может быть равен Неопределено? У тебя это условие всегда возвращает ЛОЖЬ...
#9 by 1С_Дурик
А если использовать Ссылка.МоментВремени на сколько будут точные остатки?
#10 by Cube
Да хоть что используй, у тебя в любом случае выполняется первый запрос, втрой никогда не выполняется.
#11 by Cube
То есть, выполняется только второй
#12 by Cube
запрос...
#13 by Cube
Ты это при проведении документа, поди, делаешь, да?)
#14 by 1С_Дурик
извиняюсь, не реквизит документа, я передаю
#15 by 1С_Дурик
ага
#16 by Cube
Что передаешь? Эстафету? Кому?)) Выражайся конретнее.
#17 by 1С_Дурик
ПроверитьОстаток(Ссылка,Строчка.Счет,Ссылка.Склад,Строчка.Номенклатура,Ссылка.Дата); ПроверитьОстаток(Ссылка,Счет,Склад,Номенклатура,Дата=Неопределено)
#18 by Cube
Ага... А документу разрешено оперативное проведение и проводишь ты его текущей датой, угадал?
#19 by Rovan
а по какой день у тебя в регистре итоги рассчитаны ?
#20 by Cube
Вместо "дата = Неопределено" используй "ЗначениеЗаполнено(Дата)"...
#21 by hhhh
по-любому текущий остаток быстрее, хоть ты дерись. Потому что он уже есть, а если на дату, то 1С его рассчитывает из 2-х таблиц.
#22 by Cube
А ещё лучше сделай так: И запрос один оставь, тот который с параметром "Дата".
#23 by 1С_Дурик
Дата документа 01.12.2011 23.59.59 итоги 31.12.2011
#24 by Cube
О, лучше не так, а вот так: Ну как-то так, направление я думаю, ты понял.
#25 by Cube
Ответь на .
#26 by 1С_Дурик
неоперативно провожу
#27 by RomanYS
База файловая и в сети? А вообще уходи от запроса в цикле, делай проверку одним запросом.
#28 by 1С_Дурик
SQL
#29 by Cube
Ты не ответил на вопрос.
#30 by AndOne
Обращение к таблице остатков без указания вида субконто, сомнительное удовольствие.
#31 by RomanYS
поддерживаю + один запрос на документ будет выполняться ненамного дольше чем твои запросы для каждой строки
#32 by Cube
Один запрос будет выполняться гарантированно быстрее, чем его запросы для каждой строки. А за запросы в цикле, обычно, расстреливают без суда и следствия... :)
#33 by RomanYS
* чем каждый запрос для одной строки
#34 by RomanYS
я про тоже, а проверяет построчно
#35 by afk
очень долго - это сколько в секундах?
#36 by 1С_Дурик
5-10
#37 by Fragster
на какую дату итоги рассчитаны?
#38 by 1С_Дурик
помогите передалать запрос, мне не понятно как будут определять номенклатура и счет, когда я ТЗ передаю, что передавать в &Счет и &Номенклатура.
#39 by 1С_Дурик
31 12 2011
#40 by kabanoff
+ ужас какой... Все можно сделать одним запросом. Получай ТЗ из самого документа и помещай результат во временную таблицу, затем эту таблицу соединяй с регистром остатков.
#41 by 1С_Дурик
пример можно?!
#42 by kabanoff
ну или делай так (конкретный пример):
#43 by kabanoff
Запрос, конечно, лучше сделать к таблице непосредственно самого документа:
#44 by Fragster
зачем? лишний раз базу подергать? а если это в "передЗаписью"?
#45 by kabanoff
Строку: надо заменить на: иначе при перепроведении документа будут учитываться остатки с его собственными движениями. Ну и код: выкосить за ненадобностью.
#46 by Fragster
а если при перепроведении сдвинули дату вперед? надо еще с таблицей регистра объединить с отбором по ссылке, дате и вывернутыми движениями. а вообще - нужно просто после записи посмотреть "а что это мы нафигачили" и если что - откатить
#47 by kabanoff
Ну тогда надо запрещать изменять дату проведенного документа :) А насчет "откатить" - этот принцип используется в 8.2, там парадигма несколько другая. В 8.1 это будет не оптимально.
#48 by 1С_Дурик
Сделал вот так запрос. Для 110 позиций выполнялся около 1 мин ВЫБРАТЬ                       |    Товары.Номенклатура,
#49 by kabanoff
Ну контроль остатков обычно выполняется в обработке проведения. А так согласен, нужно думать головой и решать в каждом конкретном случае.
#50 by kabanoff
1. Ты е%анулся? Получать остатки по РБ без указания счета - это глупость. 1.1. У тебя остатки номенклатуры могут на разных счетах лежать? 2. Пользуйся ограничением типов по субконто и конструкцией ВЫРАЗИТЬ. 3. Используй ограничение по номенклатуре в параметрах виртуальной таблицы Остатков РБ (как это сделано в . 4. В данном случае запрос к остаткам РБ можно делать без вложенного запроса.
#51 by 1С_Дурик
1.Разве я не указал??? "И Товары.Счет = ВложенныйЗапрос.Счет"
#52 by hhhh
вот ты указал ИЗ                       |            РегистрБухгалтерии.Хозрасчетный.Остатки(&Дата, , ,Субконто2 таблица остатков формируется по всему плану счетов. Там счетов 150-200.
#53 by 1С_Дурик
не пойму как сделать, помогите пожалуйста
#54 by hhhh
(&Дата, , Счет В (&СписокСчетов),Субконто2
#55 by 1С_Дурик
Так правильно будет? РегистрБухгалтерии.Хозрасчетный.Остатки(                   |                    &Дата,
#56 by 1С_Дурик
подскажите альтернативу МоментВремени, при использовании, запрос выполняется 7.355 сек, при использовании Граница 0.423 сек. Итоги пересчитал, тестирование и исправление ИБ делал, ничего не помогает...
#57 by kabanoff
Да, только добавь еще ограничение по типам субконто в параметры виртуальной таблицы: где СписокСубконто - список значений с элементами ПВХ "ВидыСубконтоХозрасчетные". и вырази тип Субконто2, т.е. Индексирование еще по счету во временную таблицу добавь:
#58 by 1С_Дурик
сделал вот так, ругается Ошибка обработки представления "РегистрБухгалтерии.Хозрасчетный.Остатки:Недопустимое значение параметра виды субконто." Запрос.УстановитьПараметр("СписокСубконто",ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные);
#59 by hhhh
ну вот это бред ИМХО Запрос.УстановитьПараметр("СписокСубконто",ПланыВидовХарактеристик.ВидыСубконтоХозрасчетные);
#60 by kabanoff
Очевидно надо сделать так:
#61 by 1С_Дурик
спасибо. Запрос работает, но проблема осталась, долго выполняется. Если момент времени использую = 14,773 сек, если ссылка.дата = 4,417 сек
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

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