Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) Вернуть документ по IDDoc (число прочтений - 5700 )
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Вернуть документ по IDDoc
24. Декабря 2010 :: 12:41
Печать  
Что то туплю на ровном месте. Знаю IDDoc документа. Необходимо найти документ. Пишу для dbf:
Код
Выбрать все
|SELECT
|    Жур.IDDoc as [Док $Документ]
|FROM
|    1SJourn Жур
|WHERE
|   Жур.IDDoc = :ИДДок
|"; 


Ничего не находит.  Пробывал ИДДок до 9 символов пробелами добавлять с обрезкой Right(:ИДДок,9). Тоже не находит.
И как же мне найти документ по IDDoc?
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #1 - 24. Декабря 2010 :: 12:56
Печать  
странно, но:
Код
Выбрать все
|SELECT
|    Жур.IDDoc as [Док $Документ],
|    Жур.IDDocDef as Док_вид,
|    Жур.IDDoc as [ДокСтр $Строка]
|FROM
|    1SJourn Жур
|WHERE
|   Жур.IDDoc = Right(:ИДДок, 8)
|"; 


И именно обрезать до 8 символов, а не до 9-ти.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #2 - 24. Декабря 2010 :: 12:57
Печать  
|SELECT
|    Жур.IDDoc as [Док $Документ]
|    ,Жур.IDDocdef  as Док_вид
|FROM
|    1SJourn Жур
|WHERE
|   Жур.IDDoc = :ИДДок
|";
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #3 - 24. Декабря 2010 :: 12:59
Печать  
Ага, про Жур.IDDocdef  as Док_вид понял уже.
А вот Жур.IDDoc = :ИДДок не катиит, пока до длины в 8 символов не добъешь.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #4 - 24. Декабря 2010 :: 12:59
Печать  
filh писал(а) 24. Декабря 2010 :: 12:56:
странно, но:

И именно обрезать до 8 символов, а не до 9-ти.


Не надо ничего обрезать.

Типизация Документ работает, только если
либо указан iddocdef c Док_вид
либо так:
Жур.iddocdef+Жур.Iddoc as [Док $Документ]
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #5 - 24. Декабря 2010 :: 13:15
Печать  
Eprst писал(а) 24. Декабря 2010 :: 12:59:
Не надо ничего обрезать.


неа, не находит. Вот из отладки:
Код
Выбрать все
SELECT
    Жур.IDDoc as [Док_1c_type_Документ],
    Жур.IDDocDef as Док_вид
FROM
    1SJourn Жур
WHERE
   Жур.IDDoc = '8RCO' 


Если же делать так:
Код
Выбрать все
SELECT
    Жур.IDDoc as [Док_1c_type_Документ],
    Жур.IDDocDef as Док_вид
FROM
    1SJourn Жур
WHERE
   Жур.IDDoc = Right('1	   8RCO', 8) 


Все прекрасно находит.
Вот только мне не понятно, почему именно 8 символов? Поле имеет длину 9 символов.
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вернуть документ по IDDoc
Ответ #6 - 24. Декабря 2010 :: 13:19
Печать  
А что передаешь вообще?
судя по отладке, просто строку.
Вот тут:
Код
Выбрать все
Жур.IDDoc = '8RCO' 


разве у тебя 9 символов?
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #7 - 24. Декабря 2010 :: 13:23
Печать  
JohnyDeath писал(а) 24. Декабря 2010 :: 13:19:
А что передаешь вообще?
судя по отладке, просто строку.
Вот тут:
Код
Выбрать все
Жур.IDDoc = '8RCO' 


разве у тебя 9 символов?

Передаю естественно строку. Это для примера привел для Eprst.
А обрезал тут:
Код
Выбрать все
Жур.IDDoc = Right('1	   8RCO', 9) 


И именно 9 символов.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #8 - 24. Декабря 2010 :: 13:37
Печать  
Бредятина какая..
Как устанавливаешь
:ИДДок ???

Чем ?

Не надо ничего там обрезать нигде, тем более, до 8 знаков.
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #9 - 24. Декабря 2010 :: 13:39
Печать  
Eprst писал(а) 24. Декабря 2010 :: 13:37:
Бредятина какая..
Как устанавливаешь
:ИДДок ???

Чем ?

Не надо ничего там обрезать нигде, тем более, до 8 знаков.

Вот так:
Код
Выбрать все
ОлеДБКоманда.УстановитьТекстовыйПараметр("ИДДок", "1	   "+ИДДок); 

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #10 - 24. Декабря 2010 :: 13:45
Печать  
Ну и ?
"1         "+ИДДок - это что за бред ?

ИДДок - это что ?
Откуда взялся ?


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


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #11 - 24. Декабря 2010 :: 13:53
Печать  
Eprst писал(а) 24. Декабря 2010 :: 13:45:
Ну и ?
"1         "+ИДДок - это что за бред ?

ИДДок - это что ?
Откуда взялся ?


Я же кидал из отладки. Выше там.
Пробывал так:
Код
Выбрать все
ОлеДБКоманда.УстановитьТекстовыйПараметр("ИДДок", ИДДок); 


Запрос:
Код
Выбрать все
SELECT
    Жур.IDDoc as [Док_1c_type_Документ],
    Жур.IDDocDef as Док_вид
FROM
    1SJourn Жур
WHERE
   Жур.IDDoc = '8RCO'  


Ничего не находило.
Сделал так:
Код
Выбрать все
ОлеДБКоманда.УстановитьТекстовыйПараметр("ИДДок", "1	   "+ИДДок); 


Запрос из отладки:
Код
Выбрать все
SELECT
    Жур.IDDoc as [Док_1c_type_Документ],
    Жур.IDDocDef as Док_вид
FROM
    1SJourn Жур
WHERE
   Жур.IDDoc = Right('1	   8RCO', 8) 


Все находит. Просто больше в голову ничего не накатило, как добавить в начало пробелов.
ИДДок - это поле IDDoc из 1sjourn.dbf
Вот как то так
Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #12 - 24. Декабря 2010 :: 13:57
Печать  
Это полный ПЭ..
Почитай про id
http://www.script-coding.com/v77tables.html#1.1.1.

Цитата:
ОлеДБКоманда.УстановитьТекстовыйПараметр("ИДДок", "1         "+ИДДок);


Че за бред вот это ?
В особенности "1                        " + что-то,  ты это откуда взял ?!!!

Почему бы просто не пихать сам документ, заместо неизвестно чего ?
ОлеДБКоманда.УстановитьТекстовыйПараметр("ИДДок",Док.ТекущийДокумент());
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #13 - 24. Декабря 2010 :: 14:02
Печать  
Ну дык, мне и надо найти Док.ТекущийДокумент() зная только IDDoc.
ИДДок - это поле IDDoc из 1sjourn.dbf
Я же написал, что вариант без пробелов не работает.
Да попробуй сам уже. Открой  1sjourn.dbf и скопируй лубой IDDoc и потом попробуй его найти по своему варианту.
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #14 - 24. Декабря 2010 :: 14:25
Печать  
Eprst писал(а) 24. Декабря 2010 :: 13:57:
Это полный ПЭ..
Почитай про id
http://www.script-coding.com/v77tables.html#1.1.1.

IDDOC      ID документа в 36-ричной системе счисления. Тип - Строка(9).
Так вот строка в 9 символов. При добавлении до 9 символов, запрос пустой, при добавлении до 8 символов - в запросе нужный документ.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать