Форум на Kuban.ru (http://forums.kuban.ru/)
-   Территория 1С (http://forums.kuban.ru/f1040/)
-   -   Работа с Запросом (http://forums.kuban.ru/f1040/rabota_s_zaprosom-5709944.html)

Pusto 15.05.2014 12:50

Работа с Запросом
 
Как заменить выборку элементов
СписокТоваров = СоздатьОбъект("списокЗначений");
спрТов = СоздатьОбъект("Справочник.АссортиментыПодч");
спрНоменклатура = СоздатьОбъект("Справочник.Номенклатура");
СпрТов.ИспользоватьВладельца(СкидочнаяПрограмма);
СпрТов.ВыбратьЭлементы();
Пока СпрТов.ПолучитьЭлемент()=1 Цикл
Если СпрТов.Номенклатура.ЭтоГруппа()=1 Тогда
спрНоменклатура.ИспользоватьРодителя(СпрТов.Номенклатура);
спрНоменклатура.ВыбратьЭлементы();
Пока спрНоменклатура.ПолучитьЭлемент()=1 Цикл
Если спрНоменклатура.ЭтоГруппа()=1 Тогда Продолжить; КонецЕсли;
Если спрНоменклатура.ПометкаУдаления()=1 Тогда Продолжить; КонецЕсли;
СписокТоваров.ДобавитьЗначение(спрНоменклатура.ТекущийЭлемент());
КонецЦикла;
Иначе
СписокТоваров.ДобавитьЗначение(СпрТов.Номенклатура);
КонецЕсли;
КонецЦикла;

запросом.

Ткачик 15.05.2014 13:29

Сейчас общественный запрос - дворники, работа с Мусором.

user1C 15.05.2014 13:39

для чего необходимо заменять выборку запросом?

Pusto 15.05.2014 14:11

Потому что при большом документе обороте и большой табличной части такая выборка занимает более 32 минут.

Pusto 15.05.2014 14:13

Даже не большой табличной частью а количеством строк чуть больше 10

roma n 15.05.2014 14:41

3-Pusto > на приведенную в куске кода выборку никак не влияет ни документооборот, ни величины табличных частей документов. По крайней мере я такого влияния не вижу...
Может ускорять нужно не выборку как таковую, а уходить от необходимости её вызова для каждой строки(?) всех(?) документов?

user1C 15.05.2014 14:51

(3,4)
см. (5)
как сабж связан с табличными частями большого документооборота? такую выборку маловероятно ускорить запросом

USSR 15.05.2014 16:47

ИспользоватьРодителя - это как то вульгарно, во всех смычлах

USSR 15.05.2014 16:49

и в ВыбратьЭлементы() надо по моему в данном случае ВыбратьЭлементы(1)
Могу написать прямой запрос, если сильно надо )

oxo 15.05.2014 17:48

[quote=USSR;35220078]Могу написать прямой запрос[/quote]у автора скл?

USSR 15.05.2014 18:45

(9)А что надо SQL для прямых запросов? уж давно не требуется

oxo 15.05.2014 20:09

(10)1sqlite?

USSR 16.05.2014 05:06

(11)Да, либо VFPOLEDB

oxo 16.05.2014 07:38

(10,12)спасибо, нашёл :)

Sasha 16.05.2014 08:45

2(13)Интересно было бы знать, в каком месте в документе используется эта конструкция

VZ 16.05.2014 19:31

0-Pusto > Сравни Запрос с Выборкой, и удивись.

oxo 16.05.2014 21:20

(14)Чего? Совсем непонял про то, что интересует.

Sasha 17.05.2014 12:02

(16)Я так понимаю, надо для каждой строки документа выяснить: участвует ли данная номенклатура в некоей акции, регистрируемой справочником СкидочнаяПрограмма и если участвует, применить скидку?
В свое время делал это через регистр, работало шустро выборкой без всяких запросов, в том числе прямых.

Sasha 17.05.2014 12:14

(+17)Вопрос адресовался ТС:-)

USSR 17.05.2014 12:14

(17)Какой смысл толкать в регистр справочную информацию. Для этого и придуманы справочники и прекрасно из них все выбирается и обычными выборками, прямыми запросами. Только что разве не "кривыми"
Задача автора непонятна, так как если надо определить попадает ли номенклатура под акцию, то это можно сделать и другими способами, например танцуя от самой номенклатурной позиции. Можно и данные чуть по другому организовать. У него как я понимаю задаются скидки на товарные группы. Так и нафи мне для документа с одной строкой "шерстить" всю группу и отбирать из нее акционные товары

Sasha 17.05.2014 13:14

(19)Вот-вот, от автора нужны подробности:-)
А регистр, чтобы использовать фильтр по нескольким реквизитам одновременно без использования запросов

USSR 17.05.2014 16:31

(20)По реквизитам не бывает фильтров, только по измерениям ) ты как то эмулировал регистр сведений или что ?))

Sasha 18.05.2014 15:46

(21)Что-то типа того. Суть: регистр только реквизиты (без измерений и ресурсов), отбор движений обратным порядком с установкой фильтра. То есть выбирается последнее сделанное движение с нужным отбором по реквизитам. Работает быстро.
Идея, к сожалению, уже не вспомню чья.


Текущее время: 07:46. Часовой пояс GMT +3.