1с 7.7 тис 964 черный запрос

  • Автор темы Автор темы KiR
  • Дата начала Дата начала
Вот, надыбал в архиве нужный тебе кусочек.
 

Вложения

  • zz.rar
    zz.rar
    511 байт · Просмотры: 165
в цикле-то проще. и по коду и в принципе... одна загвоздка - на скуле эти циклы работают долго, дольше обычного черного запроса, а база работает на скуле
 
Да ладно. минуту на год - это медленно ?
А запросом я не знаю, как :ya_lamo:
 
Собрать запросами данные в ТЗ, и свернуть можно...
Лучше прямым запросом, конечно.
 
Так запросом только заявки можно вытащить, а подчиненные и их свойства все равно надо анализировать - хоть по результатам запроса, хоть прямым перебором
 
Так запросом только заявки можно вытащить, а подчиненные и их свойства все равно надо анализировать - хоть по результатам запроса, хоть прямым перебором
Полагаю, что подчиненных документов используется 1-2 вида. Например, все реализации можно получить одним запросом.
Должно быть быстрее, чем по каждому документу открывать выборку ВыбратьПодчиненныеДокументы.
 
если прет запросом тогда можно так - хотя это скрещение ежа с ужом
Функция ЕстьПодчиненные(Док)
ДокПодч = СоздатьОбъект("документ");
ДокПодч.ВыбратьПодчиненныеДокументы(,,Док);
ЕстьПодч = 0;
Пока ДокПодч.ПолучитьДокумент() = 1 Цикл
Если докПодч.Проведен() = 1 Тогда
ЕстьПодч = 1;
Прервать;
КонецЕсли;
КонецЦикла;
Возврат Естьподч;
КонецФункции



Процедура Запросик()

блаблабла

ТекстЗапроса = "Период с выбнач по выбкон;
|Обрабатывать все;
|ОбрабатыватьДокументы проведенные;
|Заявка = Документ.заявкаПокупателя.ТекущийДокумент;
|группировка Заявка;
|Условие (ЕстьПодчиненные(Заявка) = 0);";

бла
КонецПРоцедуры

Фича семерки - возможность вставки в запрос функции из модуля - как это работает - хз. Кстати - я функции в условия не вставлял, но как суммовое поле катило. Плюс надо в функцию защиту от рекурсии добавить.
 
Фича семерки - возможность вставки в запрос функции из модуля - как это работает - хз.
Мне кажется, что сначала выполняется запрос без функций, а потом функции платформа выполняет вне запроса:ya_lamo: Но это только предположение.
Плюс надо в функцию защиту от рекурсии добавить.
Как там может рекурсия получиться?
 
Как там может рекурсия получиться?

лягко - два документа, у обоих в шапке ссылка на соседа. При выборке подчиненного для 2 выбирается 1, потом 2 ( так как в 2 есть ссылка на 1) , потом опять 1,потом опять 2 и понеслась - пока память не кончится ;-)

Ой блин - это я для стандартного механизма написал, типа вывод дерева подчиненных. Ну хорошо - для такого алгоритму покатит ссылка в шапке документа на самого себя. А может и не покатит.... запутался. :ya_lamo:
 
1. Я аналогичную задачу решал лет 8 назад (определение незакрытых заявок), когда еще практически не владел механизмом запросов.
И если внешняя обработка работает СЕКУНДЫ даже за большой период, зачем огород городить ?

2. Похожая ситуация сейчас. В самописной конфигурации надо собрать документы (похожие на оказание услуг) и определить неоплаченные и просроченные.
Оплата определяется по сложной схеме, так что все равно внутри запроса надо обрабатывать каждый документ.
Запрос и перебор документов работают практически с одинаковой скоростью (тут уже 2-3 минуты для периода год).
Перебор в цикле люблю больше, ибо легче косяки ловить
 
vbs, а база на чем живет? файловая небось...
 
Файловая. Но я и на SQL тормозов при работе цикла как-то не наблюдал
 
Выбор подчиненных - это уже перебор в переборе. Должно долго работать))
Простая выборка иногда работает дольше запроса, иногда - быстрее.
 
Экспериментально проверил. Медленную работу вешал на перебор. Сделал запрос - стало еще хуже
 
Экспериментально проверил. Медленную работу вешал на перебор. Сделал запрос - стало еще хуже
в файловой - факт! как то на бухе написал запросом толи выбор справочников толи доков, не помню уже - работало минут 10. переписал под цикл - работало секунд 30. но в скульной версии черный запрос по факту быстрее работает.
 


Но речь-то не о том. Чтоб выбрать подчиненные нужно много отдельных выборок.

Добавлено: И сколько уже можно обсуждать? Напиши уже что-нибудь, и выкладывай замер:blush:
 
unknown181538, уже че-нить написал. запросом получаю заявки, а потом таки перебор((( но пока фиг с ним - пусть так остается
 
Так и первый-то вопрос был в том, как запросом отобрать заявки с подчиненными ?
Боюсь, что в запросе это не решается
 
Прошло полтора года и теперь в этот отчет, с которым я долбался и мучил всех тут, необходимо добавить отбор по свойству товара. В прошлый раз я действительно сделал 2 отдельных запроса - один был по Регистру ПартииНаличие, а второй по справочнику СвойстваНоменклатуры.
Теперь же нужно чтобы пользователь на форме выбрал к примеру товарную группу и значение свойства (к примеру Производитель) ну и на выходе получил номенклатуру из выбранной группы, но только ту, в которой указан выбранный в форме производитель. Помогите пожалуйста с условиями запроса - не могу разобраться как составить запрос таким образом чтобы он правильно работал в случае когда выбрана и номенклатура и вид свойства. Заранее благодарю

Код:
	"//{{ЗАПРОС(Сформировать)
|Период с НачДата по КонДата;
|Без итогов;
|Номенклатура	= Регистр.ПартииНаличие.Номенклатура;
|Поставщик		= Регистр.ПартииНаличие.Партия.Поставщик;
|КодОперации	= Регистр.ПартииНаличие.КодОперации;
|Количество 	= Регистр.ПартииНаличие.Количество;
|Владелец 		= Справочник.СвойстваНоменклатуры.Владелец; 
|ВидСвойства 	= Справочник.СвойстваНоменклатуры.ВидСвойства;
|СвойствоИмя 	= Справочник.СвойстваНоменклатуры.ТекущийЭлемент;
|ЗначениеСвойства = Справочник.СвойстваНоменклатуры.ЗначениеСвойства;
|Функция НачОстК = НачОст(Количество);
|Функция ПриходК = Приход(Количество) Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы));
|Функция РасходК = Расход(Количество) Когда ((КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.Перемещение) И (КодОперации <> глКО.ПередачаВРозницу) И (КодОперации <> глКО.ВозвратИзРозницы));
|Функция КонОстК = КонОст(Количество);
|Группировка Номенклатура упорядочить по Номенклатура.Артикул без Групп;
|Условие (ВидСвойства = СпрСвойств.текущийЭлемент());
|Условие (ЗначениеСвойства = Производство);	
|Условие(Номенклатура в товар);
|Условие(Владелец в товар);"
;

Вот сейчас смотрю отчет ВедомостьПоПартиямТМЦ. В этом отчете можно выбрать товар по свойству и запрос идет вроде как только по регистру ПартииНаличие, а как осуществляется отбор - никак не пойму...
 
На группу условие |Условие(Номенклатура.Родитель в ВыбРодитель);
на свойство - |Условие (ЗначениеСвойства = Производство);

как-то так. Может еще стоит махнуть

|Условие (ВидСвойства = СпрСвойств.текущийЭлемент())

зы

наврал про родителя - сколько там уровней?

Насколько я помню - в семерке не было условия в иерархии, значит надо изгаляться.
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!