Работа с Запросом Как заменить выборку элементов СписокТоваров = СоздатьОбъект("списокЗначений"); спрТов = СоздатьОбъект("Справочник.АссортиментыПодч"); спрНоменклатура = СоздатьОбъект("Справочник.Номенклатура"); СпрТов.ИспользоватьВладельца(СкидочнаяПрограмма); СпрТов.ВыбратьЭлементы(); Пока СпрТов.ПолучитьЭлемент()=1 Цикл Если СпрТов.Номенклатура.ЭтоГруппа()=1 Тогда спрНоменклатура.ИспользоватьРодителя(СпрТов.Номенклатура); спрНоменклатура.ВыбратьЭлементы(); Пока спрНоменклатура.ПолучитьЭлемент()=1 Цикл Если спрНоменклатура.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли; Если спрНоменклатура.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли; СписокТоваров.ДобавитьЗначение(спрНоменклатура.ТекущийЭлемент()); КонецЦикла; Иначе СписокТоваров.ДобавитьЗначение(СпрТов.Номенклатура); КонецЕсли; КонецЦикла; запросом. |
Сейчас общественный запрос - дворники, работа с Мусором. |
для чего необходимо заменять выборку запросом? |
Потому что при большом документе обороте и большой табличной части такая выборка занимает более 32 минут. |
Даже не большой табличной частью а количеством строк чуть больше 10 |
3-Pusto > на приведенную в куске кода выборку никак не влияет ни документооборот, ни величины табличных частей документов. По крайней мере я такого влияния не вижу... Может ускорять нужно не выборку как таковую, а уходить от необходимости её вызова для каждой строки(?) всех(?) документов? |
(3,4) см. (5) как сабж связан с табличными частями большого документооборота? такую выборку маловероятно ускорить запросом |
ИспользоватьРодителя - это как то вульгарно, во всех смычлах |
и в ВыбратьЭлементы() надо по моему в данном случае ВыбратьЭлементы(1) Могу написать прямой запрос, если сильно надо ) |
[quote=USSR;35220078]Могу написать прямой запрос[/quote]у автора скл? |
(9)А что надо SQL для прямых запросов? уж давно не требуется |
(10)1sqlite? |
(11)Да, либо VFPOLEDB |
(10,12)спасибо, нашёл :) |
2(13)Интересно было бы знать, в каком месте в документе используется эта конструкция |
0-Pusto > Сравни Запрос с Выборкой, и удивись. |
(14)Чего? Совсем непонял про то, что интересует. |
(16)Я так понимаю, надо для каждой строки документа выяснить: участвует ли данная номенклатура в некоей акции, регистрируемой справочником СкидочнаяПрограмма и если участвует, применить скидку? В свое время делал это через регистр, работало шустро выборкой без всяких запросов, в том числе прямых. |
(+17)Вопрос адресовался ТС:-) |
(17)Какой смысл толкать в регистр справочную информацию. Для этого и придуманы справочники и прекрасно из них все выбирается и обычными выборками, прямыми запросами. Только что разве не "кривыми" Задача автора непонятна, так как если надо определить попадает ли номенклатура под акцию, то это можно сделать и другими способами, например танцуя от самой номенклатурной позиции. Можно и данные чуть по другому организовать. У него как я понимаю задаются скидки на товарные группы. Так и нафи мне для документа с одной строкой "шерстить" всю группу и отбирать из нее акционные товары |
(19)Вот-вот, от автора нужны подробности:-) А регистр, чтобы использовать фильтр по нескольким реквизитам одновременно без использования запросов |
(20)По реквизитам не бывает фильтров, только по измерениям ) ты как то эмулировал регистр сведений или что ?)) |
(21)Что-то типа того. Суть: регистр только реквизиты (без измерений и ресурсов), отбор движений обратным порядком с установкой фильтра. То есть выбирается последнее сделанное движение с нужным отбором по реквизитам. Работает быстро. Идея, к сожалению, уже не вспомню чья. |
Текущее время: 07:46. Часовой пояс GMT +3. |