Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Горячая тема (более 10 ответов) Гуру! Помогите с простым запросом! (число прочтений - 6551 )
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Гуру! Помогите с простым запросом!
01. Марта 2013 :: 11:42
Печать  
Всем доброго! Случилось так, что мне необходимо вспомнить 1С77 и 1С++(последнее я не особо и знал).
Дело в следующем. Есть документ Маршрутный лист, у которого в табличной части есть реквизит типа: "Документ.ЗаявкаПокупателя".
При подборе заявок в маршр. лист нужно проверить, а не "сидит" ли уже выбираемая заявка в каком нибудь другом, ранее созданном МЛ?
У меня ДБФ, объект-OLEDBData.
Вот запрос, работает, но заявки выводит странным образом, не все, но куча и тех, которые уже сидят в других МЛ:

Функция - передаю в нее документ заявка покупателя как объект 1С77
     
|SELECT
|  ДокС.IDDOC as [МЛ $Документ.МаршрутныйЛист],
|  ДокС.SP9187 as [Заявка $Документ.ЗаявкаПокупателя]
|FROM
|  $ДокументСтроки.МаршрутныйЛист as ДокС
|WHERE                                                                     
|   ДокС.SP9187 = :Заявка";
     
ЗапросМЛ.УстановитьТекстовыйПараметр("Заявка",Заявка);

Далее я выгружаю в табЗнач и проверяю на КоличествоСтрок() - если больше 0, значит заявка уже где то выбрана.
Что не так с запросом? Заранее спасибо!
  
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #1 - 01. Марта 2013 :: 11:44
Печать  
ДокС.IDDOC as [МЛ $Документ.МаршрутныйЛист] мне нужен, т.к. функция должна вернуть сообщение типа: "Выбираемая заявка № такая то уже есть в маршрутном листе № таком то"
  
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #2 - 01. Марта 2013 :: 12:59
Печать  
Что, никто не знает? Или запрос в корне не верен? Так я же не прошу переписать его с нуля за меня. Или с посещаемостью тут неважно? Или просто сегодня пятница? Подмигивание
  
Наверх
 
IP записан
 
antoneus
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 54
Зарегистрирован: 16. Марта 2009
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #3 - 01. Марта 2013 :: 14:06
Печать  
Непонятно, что есть "странным образом", запрос вроде ничего такой, в select'e можно даже и без ДокС.SP9187 as [Заявка $Документ.ЗаявкаПокупателя] обойтись, а что конкретно беспокоит?
  
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #4 - 01. Марта 2013 :: 15:09
Печать  
antoneus писал(а) 01. Марта 2013 :: 14:06:
Непонятно, что есть "странным образом", запрос вроде ничего такой, в select'e можно даже и без ДокС.SP9187 as [Заявка $Документ.ЗаявкаПокупателя] обойтись, а что конкретно беспокоит?

SP9187 - да! Я и так поудалял там ного лишнего перед постом сюда, а об этом поле забыл. )
Странный образ - я смотрю в отладчике содержимое ТЗМЛ(таблица значений-куда результат запроса вылился) - там содержится ЗаявкаПокупателя и МаршрутныйЛист, к которому она якобы привязана. Потом иду в общий журнал(режим Предприятие/мышь,клавиатура), нахожу эту заявку и вижу что она ни разу не привязана к этому Мл, а к другому!!! Вот в чем странно.
  
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #5 - 01. Марта 2013 :: 15:21
Печать  
Все просто. Есть конкретный документ в виде объекта-документа конкретного вида(Заявка покупателя!) в Предприятие:77.
Есть доки Маршрутный лист с реквизитом в табличной части - тип: Документ.ЗаявкаПокупателя.
Запросу я передаю эту конктерную заявку из подбора и хочу от запроса что бы он прошерстил ВСЕ доки МаршрутныйЛист, точнее все табличные части этих доков на предмет - а нету ли уже выбираемой сейчас нами заявки в каком нибудь, в какой нибудь табличной части какого нибудь другого документа Маршрутный лист, раннее созданного и заправленного этой, выбираемой нами сейчас заявкой?
Вот все что я хочу от запроса. И чую, что собака именно в нем, в запросе зарылась (
А хочу потому, что бы запрос и не выдавал уже "занятые" заявки!
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #6 - 01. Марта 2013 :: 20:07
Печать  
Перендексировать если?
Осталось таким же образом посмотреть содержимое подозрительного маршр. листа
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #7 - 02. Марта 2013 :: 04:07
Печать  
а ты с названием поля не ошибся?
может быть поручить получение имени метапарсеру и написать так: $ДокС.ИмяРеквизитаТЧСЗаявкой = :Заявка
это первое
а второе, я бы действовал через 1scrdoc - это гораздо эффективнее, там есть индекс
  

1&&2&&3
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #8 - 02. Марта 2013 :: 04:09
Печать  
Вадимко писал(а) 01. Марта 2013 :: 20:07:
Перендексировать если?

кмк, нет смысла в переиндексации т.к. по полям ТЧ нет индексов
  

1&&2&&3
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #9 - 02. Марта 2013 :: 06:38
Печать  
trad писал(а) 02. Марта 2013 :: 04:07:
а ты с названием поля не ошибся?
может быть поручить получение имени метапарсеру и написать так: $ДокС.ИмяРеквизитаТЧСЗаявкой = :Заявка
это первое
а второе, я бы действовал через 1scrdoc - это гораздо эффективнее, там есть индекс

Не, не ошибся, уж 10 раз проверил, правда SP9187 , зуп даю )
Но так тоже самое:
|SELECT
|  ДокС.IDDOC as [МЛ $Документ.МаршрутныйЛист],
|  $ДокС.ЗаявкаПокупателя as [Заявка $Документ.ЗаявкаПокупателя]
|FROM
|  $ДокументСтроки.МаршрутныйЛист as ДокС
|WHERE                                                                    
|   $ДокС.ЗаявкаПокупателя = :Заявка";
А про 1scrdoc - это интересно, спасибо попробую!
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #10 - 02. Марта 2013 :: 07:55
Печать  
Tirex писал(а) 01. Марта 2013 :: 15:09:
Странный образ - я смотрю в отладчике содержимое ТЗМЛ(таблица значений-куда результат запроса вылился) - там содержится ЗаявкаПокупателя и МаршрутныйЛист, к которому она якобы привязана. Потом иду в общий журнал(режим Предприятие/мышь,клавиатура), нахожу эту заявку и вижу что она ни разу не привязана к этому Мл, а к другому!!! Вот в чем странно.

"нахожу эту заявку"
По логике проверки нужно найти МЛ и посмотреть в его ТЧ на предмет присутствия в ней заявки. Так ведь?
  

1&&2&&3
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #11 - 02. Марта 2013 :: 08:58
Печать  
trad писал(а) 02. Марта 2013 :: 07:55:
Tirex писал(а) 01. Марта 2013 :: 15:09:
Странный образ - я смотрю в отладчике содержимое ТЗМЛ(таблица значений-куда результат запроса вылился) - там содержится ЗаявкаПокупателя и МаршрутныйЛист, к которому она якобы привязана. Потом иду в общий журнал(режим Предприятие/мышь,клавиатура), нахожу эту заявку и вижу что она ни разу не привязана к этому Мл, а к другому!!! Вот в чем странно.

"нахожу эту заявку"
По логике проверки нужно найти МЛ и посмотреть в его ТЧ на предмет присутствия в ней заявки. Так ведь?


Нету в нем её! Короче мистика. Я лишь тут узнать хотел - все ли с запросом в порядке. Может надо бегать по докам, а вложенным запросом по таб. частям? Или джоин? Может вместо WHERE HAVING? )
  
Наверх
 
IP записан
 
Tirex
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 8
Зарегистрирован: 01. Марта 2013
Re: Гуру! Помогите с простым запросом!
Ответ #12 - 02. Марта 2013 :: 09:04
Печать  
Если согласно моей задачи, которую я описал надеюсь понятно, запрос подходящий, тогда буду рыть в другом направлении.
Всем спасибо!!
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #13 - 04. Марта 2013 :: 06:33
Печать  
Пишешь запрос:
SELECT
   ДокС.lineno_ as НомерСтроки
   ,$ДокС.ЗаявкаПокупателя as [Заявка $Документ.ЗаявкаПокупателя]
FROM   $ДокументСтроки.МаршрутныйЛист as ДокС
WHERE ДокС.IDDOC = :ВыбДок
ORDER BY lineno_
и устанавливаешь Параметр "ВыбДок" тот Маршрутный лист, который выходит в твоем запросе. Далее смотришь, в какой строке и чего выдаст
  
Наверх
ICQ  
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Гуру! Помогите с простым запросом!
Ответ #14 - 04. Марта 2013 :: 07:34
Печать  
Tirex писал(а) 02. Марта 2013 :: 08:58:
trad писал(а) 02. Марта 2013 :: 07:55:
Tirex писал(а) 01. Марта 2013 :: 15:09:
Странный образ - я смотрю в отладчике содержимое ТЗМЛ(таблица значений-куда результат запроса вылился) - там содержится ЗаявкаПокупателя и МаршрутныйЛист, к которому она якобы привязана. Потом иду в общий журнал(режим Предприятие/мышь,клавиатура), нахожу эту заявку и вижу что она ни разу не привязана к этому Мл, а к другому!!! Вот в чем странно.

"нахожу эту заявку"
По логике проверки нужно найти МЛ и посмотреть в его ТЧ на предмет присутствия в ней заявки. Так ведь?


Нету в нем её! Короче мистика. Я лишь тут узнать хотел - все ли с запросом в порядке. Может надо бегать по докам, а вложенным запросом по таб. частям? Или джоин? Может вместо WHERE HAVING? )

запрос то технически правильный.
Я просто пытаюсь понять что ты ищешь в журнал (вручную) все таки Заявку или МЛ. Вроде как должен искать МЛ и смотреть его содержимое, а пишешь что ищешь заявку.
У тебя все таки в м.листах заявки или в заявках м.листы или все сразу?
« Последняя редакция: 12. Марта 2013 :: 05:11 - trad »  

1&&2&&3
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать