#0
by dva1c
Документ.ВозвратТоваровОтПокупателя КАК ВозвратТоваровОтПокупателя ГДЕ ВозвратТоваровОтПокупателя.Дата МЕЖДУ &ДатаНач И &ДатаКон УчетМПЗОстаткиИОбороты.Регистратор.Дата МЕЖДУ &ДатаНач И &ДатаКон И УчетМПЗОстаткиИОбороты.Регистратор.Контрагент = &Контрагент И УчетМПЗОстаткиИОбороты.Регистратор.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя УПОРЯДОЧИТЬ ПО ДокВозврДата
#3
by Diabolicum 1C
Второй не может быть быстрее Нет тут виртуальной таблицы. По регистраторам выберет тупо записи из таблицы регистра, да еще и соединять ее будет с таблицей документа (вернее всеми таблицами регистраторов, поскольку нету ограничения "выразить"). А в первом запросе будут выбраны данные только одной физической таблицы. Автор, проверяй еще раз. Такого быть не может, либо что-то у тебя с индексами таблицы документа.
#7
by Diabolicum 1C
Вернее скажем так: выборка по документам в данном случае будет намного быстрее чем по регистру. И ЭТО ПРАВИЛЬНО!
#9
by jsmith82
хм. имхо в регистр медленней. в запросе по документам у тебя конкретно указана таблица документов, а их может 2 штуки а в регистре записей несколько тысяч и каждую надо сравнивать
#10
by Axel2009
чета я не понял какой быстрее то? в заголовке 1 - регистр, 2 - документ в сообщение 1 - документ, 2 - регистр.
#11
by PR
Из параметров виртуальной таблицы нужно убрать детализацию до регистратора, иначе (как правильно замеченов ) виртуальная таблица использоваться не будет. Отбор по дате нужно делать по полю период регистра. Отбор по контрагенту нужно делать по измерению регистра.
#13
by Diabolicum 1C
Я так понял, что автор сетует на то, что по регистру у него работает медленнее, чем по документу:)
#18
by Пришел в тапках
Да брось ты эти регистры, выборкой все колбась, вижу времени у тебя много ))))))
#24
by Diabolicum 1C
Чтобы понимать, почему регистр в ДАННОМ случае медленнее, нужно знать как хранится информация в таблицах БД и как происходит трансляция запроса. Разница в количестве записей в таблице совсем не главное.
#26
by s03
Из анкеты ТС: Достижения (опыт): проф по платформе 8.0 Роль на форуме: инженер знаний ))))
#27
by Александр_Тверь
без обид. Вопрос на самом деле не совсем тривиальный. Один раз разберешься и в будущем будешь писать хорошие, быстрые запросы.
#28
by s03
если посмотришь, во что превращается твой запрос при транслировании на сервер SQL то можешь увидеть много-много левых соединений, что и замедляет твой запрос по регистру
#29
by dva1c
согласен. надо правильно параметризовать запрос к регистру. я правильно понимаю? понятно, что много левых соединений. как оптимально написать простенький запрос?
#32
by izekia
с чего бы это "РегистрНакопления.УчетМПЗ.ОстаткиИОбороты(, , Регистратор, , ) КАК УчетМПЗОстаткиИОбороты" не виртуальная?
#33
by Александр_Тверь
да не только. Регистратором для регистра может быть 100 различных документов, а сама таблица в регистре содержать 100.000 записей. А документов возврата быть 20 штук. Даже при прочих равных выборка по документам будет быстрее т.к. их физически меньше.
#36
by hhhh
ты вообще не параметризовал этот запрос. Делаешь выборку к регистру по всем контрагентам за все времена начиная от рождества христова. И потом удивляешься, почему медленно. Приколист.
#39
by Diabolicum 1C
Вот как только ты ответишь на этот вобщем-то нетривиальный запрос, так сразу и поймешь, почему в данном случае "ОстаткиИОбороты" не будет виртальной таблицей.
#44
by Diabolicum 1C
Ну если "виртуальной" считать сгруппированную таблицу записей регистра, то да. Эта таблица будет "виртуальной". Да только вот беда, под "виртуальной" понимают в 1С совсем другое.
#48
by Diabolicum 1C
Туда же. Учи мат часть. Регистр накопления делится минимум на две физических таблицы: таблица записей и таблица оборотов.
#52
by hhhh
РегистрНакопления.УчетМПЗ.ОстаткиИОбороты(&ДатаНач,&ДатаКон, Регистратор, , Регистратор.Контрагент = &Контрагент )
#53
by izekia
я хотел бы получить ответ на свой вопрос в а то есть какая-то "беда" а я про нее не знаю
#58
by Diabolicum 1C
Вы ощущаете разницу, между выборкой из физической таблицы уже свернутых данных и доборкой из таблицы записей по неактульным периодам, и выборкой из таблицы всех записей регистра с группировкой ее по регистратору? Это одно и тоже?
#59
by dva1c
а я предположил, как в ВЫБРАТЬ УчетМПЗОстаткиИОбороты.Регистратор.Номер КАК ДокВозврНомер, УчетМПЗОстаткиИОбороты.Регистратор.Дата КАК ДокВозврДата, УчетМПЗОстаткиИОбороты.Регистратор.Дата МЕЖДУ &ДатаНач И &ДатаКон И УчетМПЗОстаткиИОбороты.Регистратор.Контрагент = &Контрагент И УчетМПЗОстаткиИОбороты.Регистратор.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя ДЛЯ ИЗМЕНЕНИЯ
#60
by izekia
не надо мне про ощущения... я конкретный вопрос задал: "Что такое виртуальная таблица в терминах 1С?"
#63
by Diabolicum 1C
Если понимать под виртуальной таблицей только sql запрос не вникая в суть выполняемых манипуляций с данными - тогда да данная таблица будет "виртуальной". И это уже было сказано в
#66
by Starhan
Простая выборка по документам быстрее. Но если тебе нужны агрегированные, расчетные данные для этого используются регистры (виртуальные таблицы).
#72
by Axel2009
а какая же виртуальная таблица "правильная"? чтобы мы все тут понимали, что не так понимает 1с
#73
by izekia
да мне нужен ответ конкретного персонажа то есть виртуальная таблица - это скл запрос?
#75
by Beduin
Он хотел сказать, что в параметрах виртуальной таблицы нельзя отбирать по регистратору.
#79
by s03
также можно поиграться со внутренним соединением с таблицей "Документ.ВозвратТоваровОтПокупателя" вместо условия "Регистратор.Ссылка ССЫЛКА Документ.ВозвратТоваровОтПокупателя" и затем получать номер и сумму из этой таблицы. Но здесь уже производительность зависит уже дополнительно от размера этих таблиц. Да и вместо "УчетМПЗОстаткиИОбороты.Регистратор.Дата" можно сразу брать "УчетМПЗОстаткиИОбороты.Период", если конечно конфигурация не допиливалась до того, что движения могут формироваться с датой, отличающейся от даты регистратора
#80
by dva1c
спасибо! пошел конструктив. вопрос-то был простой "чянтд", а в результате развернулась "битва титанов" )
#81
by Beduin
Короче для того, чтобы писать правильные запросы. Достаточно знать три вещи. 1. Какие поля проиндексированы. 2. Какие поля имеют агрегатные таблицы 3. Структуру таблиц, чтобы не лазить за какими-то данными далеко.
#84
by Axel2009
выборка из таблицы уже свернутых данных - идеальный случай. когда движения либо не указывается дата остатков, либо когда попадает на дату хранения остатков в базе. в противном случае ВСЕГДА будут присоединяться движения (физическая таблица записей регистров), даже если их нет
#85
by s03
основная разница в твоих первых запроса это то, что первый получает данные из одной таблицы, а второй при получении данных прикручивает ещё ого-го как много других и как ты его не крути одной таблицей ты в нём уже никак не обойдешься, потому как в регистре нет хотя бы того же номера документа. И самый простой способ ускорить второй запрос - это минимизировать количество присоединяемых таблиц, чего можно добиться только либо ограничением на тип документа, либо внутренним соединением с таблицей этих документов.
#86
by dva1c
т.е. к регистру прикручиваю, левым соединением, док "Возврат от покупателя". параметризую обращение к регистру и должно получится поинтересней?
#88
by s03
левое соединение у тебя и так в результате получается, если ты получаешь поля регистратора, например номер или дата (при транслировании запроса платформа всё равно сделает это за тебя), можно проверить внутреннее соединение, может и будет быстрее
#89
by Кокос
ну если у тебя в регистр пишется только из одного документа смысл в этом регистре? Регистр как раз таки делается для сбора данных с многих документов. В этом случае он будет по любому быстрее. Ну и при помощи регистра ты независишь от документа. С которым уже сможешь делать что хочешь а данные вот они. в регистре. как надо
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям
Похожие вопросы 1С
В этой группе 1С
- Белый экран смерти 1С
- БГУ: Кассовое поступление
- Полный дистрибутив ЗУП
- (Бух 2.0) Перенести новую "Роль" из одной базы в другую
- Принятие земельного участка в качестве ОС УПП 1.3
- Вывод даты оплаты в форме списка.
- План обмена и новый объект
- Мотивация системных администраторов
- Редактирование форм в 1С 8.2
- Письмо от Майкрософт
- Запуск системы выполнен без использования аппаратной лицензии
- v8: 8.2 Выгрузка Загрузка Данных XML (Управляемое приложение)
- Выгрузка из 1С в Возмещение НДС Налогоплательщик 3.0
- СКД, "Таблица". Разные ресурсы в независимых группировках.
- При печати PDF из Acrobat reader полностью виснет комп
- 8.2 Разрешить редактирование реквизитов объекта
- Заполнить документ из Внешней Обработки Управляемая форма
- БП выплата зарплаты. Учет во внешней программе
- v8: Изменить отчет "Ведомость по Товарам на складах"
- v7: Левый номер при копировании документа