Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 51 ОтправитьПечать
Очень популярная тема (более 25 ответов) Класс "ПрямойЗапрос" - обсуждения. Часть № 2. (число прочтений - 245523 )
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #240 - 11. Января 2012 :: 12:15
Печать  
С наступившими!
Активно пользуюсь 1cpp и AccountsRecordSet под SQL. Понадобилось использовать прямые запросы к DBF базе. попробовал ПрямойЗапрос. Пока туговато перестроиться на синтаксис и структуру.
Не могу понять, почему не работает запрос:
Код
Выбрать все
запрос = "
	|select                                            
	|	ост.КоличествоОстаток Количество,
	|	ЛЕВО(ост.Субконто1, 9) [Товар $Справочник.Номенклатура],
	|	ост.Субконто1_вид Товар_вид,
	|	ост.Субконто2 [Склад $Субконто],
	|	ост.Субконто2_вид Склад_вид
	//|	ост.Субконто3 [Партия $Субконто],
	//|	ост.Субконто3_вид Партия_вид
	|from $БИОстатки.Основной(
	|	:КонДата~,
	|	#Счет,
	|	(Субконто1, Субконто2),
	|	,
	|	(Субконто1 в (
	|		select distinct
	|			$нп.Продукт
	|		from Справочник.НаборПродуктов as нп
	|		where нп.parentext in (select val from #СписокИзделий)))
	|	and (Субконто2 = :Склад)
	|	,
	|) as ост        
	|join Справочник.Номенклатура as ном on ном.id = ЛЕВО(Субконто1, 9)
	|";
	рс = СоздатьОбъект("ПрямойЗапрос");
	рс.УстановитьТекстовыйПараметр("КонДата", ДатаДок);  
	рс.УстановитьТекстовыйПараметр("Склад", Склад);
	рс.УложитьСписокОбъектов(СчетПоКоду("41.2"), "#Счет");
	рс.УложитьСписокОбъектов(СписокИзделий, "#СписокИзделий", "Номенклатура");
	тз = рс.Выполнить("ТаблицаЗначений", запрос);
 


Типизация ост.Субконто1 [Товар $Справочник.Номенклатура] не прокатывала. Почитал - сделал ост.Субконто1 [Товар $Субконто], потом ЛЕВО(ост.Субконто1, 9) [Товар $Справочник.Номенклатура] - оба варианта работает.

Почему тогда join Справочник.Номенклатура as ном on ном.id = ЛЕВО(Субконто1, 9) выдает пустой результат?

И еще: не могу получить остатки, которые бы сходились со штатными отчетами. Как бороть? с AccuntsRecordSet проблем не возникало, поэтому думаю, что чего-то не уловил в ПрямомЗапросе. Разъясните как быть.
« Последняя редакция: 12. Января 2012 :: 06:43 - vinogradoff »  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #241 - 11. Января 2012 :: 12:19
Печать  
1) Какой тип у Субконто1
2) $нп.Продукт [Товар $Справочник.Номенклатура]
вот тут убери типизацию - она не нужна
  
Наверх
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #242 - 11. Января 2012 :: 12:21
Печать  
1) Справочник.Номенклатура
2) Убрал, после опытов осталось.
Без join запрос работает, после добавления - пусто.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #243 - 11. Января 2012 :: 12:27
Печать  
На самом деле, больше печалит тот факт, что не могу получить остатки, равные остаткам из штатных запросов. Этот join делал, чтобы получить доп. данные для решения этой проблемы, а получается наткнулся на новую.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #244 - 11. Января 2012 :: 12:29
Печать  
И, кстати, типизация $нп.Продукт [Товар $Справочник.Номенклатура] не повлияла на результат (если убрать join, то получаю какие-то данные не зависимо от того, есть типизация или нет)
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #245 - 11. Января 2012 :: 12:35
Печать  
Вопрос по остаткам снят: я тупой.  Печаль
Остался по join-у
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #246 - 11. Января 2012 :: 12:46
Печать  
select ном.*,
...
left join Справочник.Номенклатура as ном on ном.id = ЛЕВО(ост.Субконто1, 9)

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



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #247 - 11. Января 2012 :: 13:01
Печать  
Anatol писал(а) 11. Января 2012 :: 12:46:
select ном.*,
...
left join Справочник.Номенклатура as ном on ном.id = ЛЕВО(ост.Субконто1, 9)



Пробовал, пусто даже с left join
  
Наверх
 
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #248 - 11. Января 2012 :: 13:11
Печать  
а в бдф точно ЛЕВО ?
  
Наверх
wwwICQ  
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #249 - 11. Января 2012 :: 13:16
Печать  
В мануале не нашел ограничений на использование ЛЕВО.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #250 - 11. Января 2012 :: 13:19
Печать  
СРЕД(Субконто1, 1, 9) не помогает
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #251 - 11. Января 2012 :: 13:19
Печать  
а для типизации ЛЕВО помогает
  
Наверх
 
IP записан
 
vandalsvq
1c++ power user
Отсутствует


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

Сообщений: 2487
Местоположение: Уфа
Зарегистрирован: 18. Июля 2007
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #252 - 11. Января 2012 :: 16:49
Печать  
Из всего запроса не понравилось:
1. $нп.Продукт [Товар $Справочник.Номенклатура] - типизация тут ни к чему совсем, да и вложенный запрос я бы сначала сделал во временную таблицу, и ее бы использовал в ВТ (так лучше будет). Кстати почему выборка из одной таблицы, типизация другой?
2. join надо на left join все таки исправить, сравнение сделать в порядке таблиц (Ост = $Ном.ТекущийЭлемент)
3. В ВТ указываешь 2 субконто, в запросе все три используешь Улыбка злой ты.

Типизация субконто1 действительно именно Справочник.Номенклатура? Потому что если нет искать надо в ней.
Попробуй без типизации значения посмотри в Субконто1.

Если что сделай РежимОтладки = 1 и в ТХТ выложи. А еще лучше результат запроса без типизации приложи, тогда можно анализ получше провести.
  

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



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #253 - 12. Января 2012 :: 05:29
Печать  
vandalsvq писал(а) 11. Января 2012 :: 16:49:
Из всего запроса не понравилось:
1. $нп.Продукт [Товар $Справочник.Номенклатура] - типизация тут ни к чему совсем
Прекрасно понимаю. Я и написал, что случайно осталось после того, как проверял запрос.

vandalsvq писал(а) 11. Января 2012 :: 16:49:
Кстати почему выборка из одной таблицы, типизация другой?
Это в каком месте?

vandalsvq писал(а) 11. Января 2012 :: 16:49:
2. join надо на left join все таки исправить
Не должно влиять. Субконто "не номенклатура" или ПустойИД меня не интересуют (если допустить, что такие могли появиться)

vandalsvq писал(а) 11. Января 2012 :: 16:49:
3. В ВТ указываешь 2 субконто, в запросе все три используешь Улыбка злой ты.
3-е закомментировано

vandalsvq писал(а) 11. Января 2012 :: 16:49:
Типизация субконто1 действительно именно Справочник.Номенклатура?
Да.
  
Наверх
 
IP записан
 
vinogradoff
Full Member
***
Отсутствует



Сообщений: 107
Зарегистрирован: 06. Февраля 2010
Пол: Мужской
Re: Класс "ПрямойЗапрос". Часть № 2.
Ответ #254 - 12. Января 2012 :: 06:44
Печать  
vandalsvq писал(а) 11. Января 2012 :: 16:49:
да и вложенный запрос я бы сначала сделал во временную таблицу, и ее бы использовал в ВТ (так лучше будет)
Согласен, но на суть не влияет.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 ... 15 16 [17] 18 19 ... 51
ОтправитьПечать