Переключение на Главную Страницу Страницы: 1 ... 23 24 [25] 26 27 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245634 )
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #360 - 26. Июня 2012 :: 08:40
Печать  
Код
Выбрать все
$РегАлк.ТекущийДокумент КАК [ТекДок $Документ],
$РегАлк.ВидДокумента КАК [ТекДок_Вид $ВидДокумента], 


заменить на
Код
Выбрать все
РегАлк.ТекущийДокумент КАК [ТекДок $Документ],
РегАлк.ВидДокумента КАК [ТекДок_Вид $ВидДокумента], 

  
Наверх
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #361 - 26. Июня 2012 :: 09:05
Печать  
И еще вопрос: Как в ПоставщикеДанных (Документ) программно управлять порядком следования колонок?
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #362 - 26. Июня 2012 :: 09:20
Печать  
leshik писал(а) 26. Июня 2012 :: 08:40:
заменить на
Код
Выбрать все
РегАлк.ТекущийДокумент КАК [ТекДок $Документ],
РегАлк.ВидДокумента КАК [ТекДок_Вид $ВидДокумента], 



Пасиб! Заработало!
  
Наверх
ICQ  
IP записан
 
vandalsvq
1c++ power user
Отсутствует


Я всего лишь als-особиратель
;-)

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #363 - 26. Июня 2012 :: 10:01
Печать  
Dolly_EV писал(а) 26. Июня 2012 :: 09:05:
И еще вопрос: Как в ПоставщикеДанных (Документ) программно управлять порядком следования колонок?


После инициализации и обновления просто поменяй колонки местами через объект ТабличноеПоле.Колонки.
  

Отхожу от дел. Долго и мучительно.
Наверх
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #364 - 26. Июня 2012 :: 10:19
Печать  
vandalsvq писал(а) 26. Июня 2012 :: 10:01:
Dolly_EV писал(а) 26. Июня 2012 :: 09:05:
И еще вопрос: Как в ПоставщикеДанных (Документ) программно управлять порядком следования колонок?


После инициализации и обновления просто поменяй колонки местами через объект ТабличноеПоле.Колонки.


Угу, нашел. "Сдвинуть". Спаисбо!
  
Наверх
ICQ  
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #365 - 28. Июня 2012 :: 14:54
Печать  
Добрый день. Столкнулся с такой проблемой. Реквизит табличной части документа неопределенного вида справочника. Реквизит может принимать значения 2-х справочников (хотя это не важно). Пытаюсь запросом выудить данные:
Код
Выбрать все
|ВЫБРАТЬ
|	$ТЧ.Товар КАК [Товар $Справочник.Номенклатура]
|,	$ТЧ.СпецПредложение  КАК [СпецПредложение $Справочник]
|,	$ТЧ.СпецПредложение  КАК [СпецПредложениеСкидки $Справочник.ШтрихКодыСоСкидкой]
|,	$Ж.ДатаДокумента КАК ДатаДок
|ИЗ
|	ЖурналДокументов КАК Ж $NOLOCK
|ВНУТРЕННЕЕ СОЕДИНЕНИЕ
|	ДокументСтроки.СпецПредложение КАК ТЧ $NOLOCK ПО $Ж.ТекущийДокумент = $ТЧ.ТекущийДокумент
|ГДЕ
|	$Ж.Проведен = 1
//|И $ТЧ.СпецПредложение IN (ВЫБРАТЬ $Спр.ТекущийЭлемент КАК Ссылка ИЗ Справочник.ШтрихКодыСоСкидкой КАК Спр $NOLOCK) 


Итак, в колонке "СпецПредложение" я вижу всевозможные значения. В колонке "СпецПредложениеСкидки" я вижу пустоту (а вот эта мне колонка как раз и нужна). Т.е. если я типизирую поле, что значения не получаю. Пробовал задать условие на принадлежность ссылки элементам определенного справочника (закаменченное условие) - не прокатило. Как решить?
  
Наверх
 
IP записан
 
Kalen
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 185
Зарегистрирован: 29. Марта 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #366 - 28. Июня 2012 :: 16:17
Печать  
Отрежь лишнее от id13...
Код
Выбрать все
...
|,	Сред($ТЧ.СпецПредложение,5)  КАК [СпецПредложениеСкидки $Справочник.ШтрихКодыСоСкидкой]
... 


Когда Лево($ТЧ.СпецПредложение,4)=:ВидСправочника.ШтрихКодыСоСкидкой
  
Наверх
GTalkICQ  
IP записан
 
ReLock
Full Member
***
Отсутствует



Сообщений: 155
Местоположение: За компом
Зарегистрирован: 01. Февраля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #367 - 28. Июня 2012 :: 16:42
Печать  
Спасибо. Заработало! Вот этого Цитата:
:ВидСправочника.ШтрихКодыСоСкидкой
мне и не хватало!
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #368 - 03. Июля 2012 :: 11:46
Печать  
Имеем вот такой громоздкий запрос выборки по Документам с кучей фильтров по реквизитам Доков

Код
Выбрать все
  	Запрос = СоздатьОбъект("Запрос");
	ТекстЗапроса = "//{{ЗАПРОС(ПоДокам)
	|Период с ДатаНач по ДатаКон;
	|Без итогов;
	|РУ = Документ.ПриходнаяНакладная.Фирма,
	|	Документ.ЗаказПоставщику.Фирма,
	|	Документ.РасходнаяНакладная.Фирма,
	|	Документ.РасходнаяРозница.Фирма,
	|	Документ.ПеремещениеТоваров.Фирма,
	|	Документ.ВозвратОтПокупателя.Фирма,
	|	Документ.ВозвратПоставщику.Фирма,
	|	Документ.СписаниеТоваров.Фирма,
	|	Документ.ОприходованиеТоваров.Фирма,
	|	Документ.Пересорт.Фирма;
	|Док = Документ.ПриходнаяНакладная.ТекущийДокумент,
	|	Документ.ЗаказПоставщику.ТекущийДокумент,
	|	Документ.РасходнаяНакладная.ТекущийДокумент,
	|	Документ.РасходнаяРозница.ТекущийДокумент,
	|	Документ.ПеремещениеТоваров.ТекущийДокумент,
	|	Документ.ВозвратОтПокупателя.ТекущийДокумент,
	|	Документ.ВозвратПоставщику.ТекущийДокумент,
	|	Документ.СписаниеТоваров.ТекущийДокумент,
	|	Документ.ОприходованиеТоваров.ТекущийДокумент,
	|	Документ.Пересорт.ТекущийДокумент;
	|Склад = Документ.ПриходнаяНакладная.МестоХранения,
..............................
	|Сумм = Документ.ПриходнаяНакладная.Всего,
	|	Документ.ЗаказПоставщику.Всего,
	|	Документ.РасходнаяНакладная.Всего,
	|	Документ.РасходнаяРозница.Всего,
	|	Документ.ПеремещениеТоваров.Сумма,
	|	Документ.ВозвратОтПокупателя.Всего,
	|	Документ.ВозвратПоставщику.Всего,
	|	Документ.СписаниеТоваров.Сумма,
	|	Документ.ОприходованиеТоваров.Всего,
	|	Документ.Пересорт.Сумма;
	|Функция КоличВсегоШТ = Сумма(Кол*КоэффДок) Когда (СписТиповТовара.Принадлежит(ТоварТип)=1);
	|Функция КоличУпак = Сумма(?(КоэффОснЕд>1,Цел(Запрос.КоличВсегоШТ/КоэффОснЕд),0)) Когда (СписТиповТовара.Принадлежит(ТоварТип)=1);
.................................
	|Группировка Док;
	|Группировка СтрокаДокумента;
	|Условие(СписДокПометка.Принадлежит(Док.Вид())=1);";
	|Условие((ВыбСкладОткуда.Принадлежит(Склад)=1) ИЛИ (ВыбСкладКуда.Принадлежит(СкладКуда)=1));";

	ОбъектМФ.СформироватьУсловияЗапроса(ТекстЗапроса,Запрос,глЭтоSQL);

и т.д. ..................................
 



Пните - хотя бы в виде "каркаса" - как это описать прямым запросом, и чтобы было быстро?

З.Ы. Запрос именно по Документам (т.к. сверяется с отчетом по регистру на предмет расхождений м/у реквизитами дока и ресурсами регистра)
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #369 - 03. Июля 2012 :: 13:06
Печать  
куча селектов к табличкам DH/DT документов + union all между ними.
  
Наверх
 
IP записан
 
artamir
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 58
Зарегистрирован: 03. Мая 2011
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #370 - 03. Июля 2012 :: 19:38
Печать  
Доброго времени суток.
Столкнулся с проблемкой:
Код
Выбрать все
оПЗ = СоздатьОбъект("ПрямойЗапрос");
	оПЗ.РежимОтладки = РежимОтладки;

	//{--- Текст запроса
	лТЗ = "
	|ВЫБРАТЬ
	|	ОстаткиОборотыОсновной.Субконто1		КАК [Агент			$Субконто	]
	|,	ОстаткиОборотыОсновной.Субконто1_вид	КАК [Агент_вид		$ВидСубконто]
	|,	ОстаткиОборотыОсновной.Субконто2		КАК [ТаксаХХ		$Субконто	]
	|,	ОстаткиОборотыОсновной.Субконто2_вид	КАК [ТаксаХХ_вид	$ВидСубконто]
	|,	ОстаткиОборотыОсновной.НачалоПериода	КАК [НачалоПериода	$Дата		]

	|,	ОстаткиОборотыОсновной.СуммаНачальныйОстаток	КАК [СН_Сумма		$Число	]
	|,	ОстаткиОборотыОсновной.ВалютаНачальныйОстаток	КАК [СН_СумКорп		$Число	]
	|,	ОстаткиОборотыОсновной.СуммаОборот				КАК [Оборот_Сумма	$Число	]
	|,	ОстаткиОборотыОсновной.ВалютаОборот				КАК [Оборот_СумКорп	$Число	]
	|,	ОстаткиОборотыОсновной.СуммаКонечныйОстаток		КАК [СК_Сумма		$Число	]
	|,	ОстаткиОборотыОсновной.ВалютаКонечныйОстаток	КАК [СК_СумКорп		$Число	]
	|
	|
	|ИЗ
	|	$БИОстаткиОбороты.Основной(:ДатаНач
	|,	:ДатаКон
	|,	МЕСЯЦ ДОПОЛНЕНИЕ
	|,
	|,	#СчетаТКС
	|,	(Сотрудники, ТаксыХХ)
	|,	(Сумма, Валюта)
	|,
	|) КАК ОстаткиОборотыОсновной";
	//}

	оПЗ.Текст = лТЗ;
	оПЗ.УстановитьТекстовыйПараметр("ДатаНач", ДатаНач);
	оПЗ.УстановитьТекстовыйПараметр("ДатаКон", ДатаКон);

	спСчетовТКС = СоздатьОбъект("СписокЗначений");
	спСчетовТКС.ДобавитьЗначение(СчетПоКоду("ТКС.ХХ"));
	оПЗ.УложитьСписокЗначений(спСчетовТКС, "#СчетаТКС", "Основной");

	лИТЗ = оПЗ.Выполнить("ИндексированнаяТаблица");

 



Такой запрос закрывает 1С без каких либо предупреждений если я выбераю период больше 3-х месяцев. Если меньше или равно 3-м месяцам, то нормально.
Может кто сталкивался и подскажет куда копать.

1С++ : 3.2.3.12
1sqlite: 1.0.2.3
  
Наверх
 
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #371 - 04. Июля 2012 :: 03:47
Печать  
Eprst писал(а) 03. Июля 2012 :: 13:06:
куча селектов к табличкам DH/DT документов + union all между ними.

И без вариантов? Печаль
Ладно, тогда поделитель, кто/как фильтрует поля запроса для класса "ПрямойЗапрос", всмысле универсальности. Как например в классе МножественныйФильтр для запроса 1C++ (ОбъектМФ.СформироватьУсловияЗапроса(ТекстЗапроса,Запрос,глЭтоSQL)) ?
  
Наверх
ICQ  
IP записан
 
Dolly_EV
Full Member
***
Отсутствует


1C++ rocks!

Сообщений: 152
Местоположение: Чита
Зарегистрирован: 22. Октября 2009
Пол: Мужской
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #372 - 12. Июля 2012 :: 11:53
Печать  
Код
Выбрать все
ВЫБРАТЬ $ТекДок.ТекущийДокумент КАК [Док $Документ.ВозвратОтПокупателя]
ИЗ
	Документ.ВозвратОтПокупателя КАК ТекДок $nolock
ОБЪЕДИНИТЬ
ВЫБРАТЬ $ТекДок.ТекущийДокумент КАК [Док $Документ.ВозвратПоставщику]
ИЗ
	Документ.ВозвратПоставщику КАК ТекДок $nolock
ОБЪЕДИНИТЬ
ВЫБРАТЬ $ТекДок.ТекущийДокумент КАК [Док $Документ.ОприходованиеТоваров]
ИЗ
	Документ.ОприходованиеТоваров КАК ТекДок $nolock
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	ЖурналДокументов КАК Жур $nolock
ПО
	$ТекДок.ТекущийДокумент = $Жур.ТекущийДокумент
ГДЕ
	$Жур.ДатаДокумента >=:лДатаНач И $Жур.ДатаДокумента<=:лДатаКон~ И $Жур.Проведен = 1";
ПЗ.УстановитьТекстовыйПараметр("лДатаНач", ДатаНач);
ПЗ.УстановитьТекстовыйПараметр("лДатаКон", ДатаКон); 


Почему выдаются ВСЕ доки: без фильтра по ДатаНач/ДатаКон и проведенные/непроведенные ??  Плачущий
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #373 - 12. Июля 2012 :: 12:55
Печать  
Потому, что бред написан в части описания алиясов.
Либо все селекты для табличек документов оборачивать в подзапрос и потом уже иннер джоин с табличкой журнала + условия, либо к каждому запросу джойнить журнальчик (а не к последнему, как у тебя)
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Класс "ПрямойЗапрос" - обсуждения. Часть № 2.
Ответ #374 - 12. Июля 2012 :: 15:04
Печать  
Код
Выбрать все
ВЫБРАТЬ $ТекДок.ВидДокумента+$ТекДок.ТекущийДокумент КАК [Док $Документ]
ИЗ
	Документ.ВозвратОтПокупателя КАК ТекДок $nolock
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	ЖурналДокументов КАК Жур $nolock
ПО
	$ТекДок.ТекущийДокумент = $Жур.ТекущийДокумент
И
	$Жур.ДатаДокумента МЕЖДУ :лДатаНач И $Жур.ДатаДокумента<=:лДатаКон~ И $Жур.Проведен = 1

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ $ТекДок.ВидДокумента+$ТекДок.ТекущийДокумент
ИЗ
	Документ.ВозвратПоставщику КАК ТекДок $nolock
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	ЖурналДокументов КАК Жур $nolock
ПО
	$ТекДок.ТекущийДокумент = $Жур.ТекущийДокумент
И
	$Жур.ДатаДокумента МЕЖДУ :лДатаНач И $Жур.ДатаДокумента<=:лДатаКон~ И $Жур.Проведен = 1

ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ $ТекДок.ВидДокумента+$ТекДок.ТекущийДокумент
ИЗ
	Документ.ОприходованиеТоваров КАК ТекДок $nolock
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
	ЖурналДокументов КАК Жур $nolock
ПО
	$ТекДок.ТекущийДокумент = $Жур.ТекущийДокумент
И
	$Жур.ДатаДокумента МЕЖДУ :лДатаНач И $Жур.ДатаДокумента<=:лДатаКон~ И $Жур.Проведен = 1 



в синтаксисе не уверен, ибо этим классом не пользуюсь
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 23 24 [25] 26 27 ... 51
ОтправитьПечать