Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Вернуть документ по IDDoc (число прочтений - 5699 )
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 записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #15 - 24. Декабря 2010 :: 14:26
Печать  
filh писал(а) 24. Декабря 2010 :: 14:02:
Ну дык, мне и надо найти Док.ТекущийДокумент() зная только IDDoc.
ИДДок - это поле IDDoc из 1sjourn.dbf
Я же написал, что вариант без пробелов не работает.
Да попробуй сам уже. Открой  1sjourn.dbf и скопируй лубой IDDoc и потом попробуй его найти по своему варианту.


цинкуй:

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


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #16 - 24. Декабря 2010 :: 14:35
Печать  
Пробелы от куда? Перед CZ в запросе? Без них попробуй.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #17 - 24. Декабря 2010 :: 14:37
Печать  
filh писал(а) 24. Декабря 2010 :: 14:35:
Пробелы от куда? Перед CZ в запросе? Без них попробуй.


Гыы..
Что значит откуда ?
IDDoc = '    CZ   ' в табличке, если что.

Не видно разве ?

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


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #18 - 24. Декабря 2010 :: 14:46
Печать  
Так весь вопрос был в том, что у меня без пробелов все это дело.
Пробелы потерял я. Улыбка
А как ты показал, это понятно, что все найдется.
Попробуй просто CZ указать Улыбка
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Вернуть документ по IDDoc
Ответ #19 - 24. Декабря 2010 :: 14:48
Печать  
filh писал(а) 24. Декабря 2010 :: 14:46:
Так весь вопрос был в том, что у меня без пробелов все это дело.
Пробелы потерял я. Улыбка
А как ты показал, это понятно, что все найдется.
Попробуй просто CZ указать Улыбка


Ты-по ходу перегрелся или болеешь.
Зачем мне убирать лидирующие пробелы, если iddoc данного документа состоит из них спереди,  потом буковки и потом еще пробелы за буковками ?
И я это не выдумывал, а просто копи-пасте из дбф нафигатора взял.
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #20 - 24. Декабря 2010 :: 14:54
Печать  
Eprst писал(а) 24. Декабря 2010 :: 14:48:
Ты-по ходу перегрелся или болеешь.
Зачем мне убирать лидирующие пробелы, если iddoc данного документа состоит из них спереди,  потом буковки и потом еще пробелы за буковками ?
И я это не выдумывал, а просто копи-пасте из дбф нафигатора взял.

Да нет, не перегрелся Я про лидирующие пробелы и делал сначала добавил, потом обрезал до 8 символов.
У меня потерялись эти пробелы:
Код
Выбрать все
Жур.IDDoc = '8RCO' 


  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вернуть документ по IDDoc
Ответ #21 - 24. Декабря 2010 :: 14:56
Печать  
Автор, открой нам тайну: откуда берешь ИдДок? Почему у него отсечены все левые и правые пробелы? И не из другой ли базы он?
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #22 - 24. Декабря 2010 :: 15:02
Печать  
JohnyDeath,
Да все банально. ИдДок из этой базы. На распределенки она. А я вот решил велик изобрести. Потерялись часть доков и перепроводить за 2 месяца как то в лом. Сравнил два журнала, все отличия и есть ИдДок.
При сравнении прога обрезала пробелы при сохранении, но только лидирующие.
Сохранял 3 файл, с разницами...
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Вернуть документ по IDDoc
Ответ #23 - 24. Декабря 2010 :: 15:08
Печать  
ну тогда сделай так, чтоб не обрезала
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

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

угу, так и сделал уже.
  
Наверх
 
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #25 - 24. Декабря 2010 :: 15:42
Печать  
И кстати, при запросе важны только лидирующие пробелы.

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


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вернуть документ по IDDoc
Ответ #26 - 27. Декабря 2010 :: 02:30
Печать  
filh писал(а) 24. Декабря 2010 :: 14:25:
IDDOC      ID документа в 36-ричной системе счисления. Тип - Строка(9).
Так вот строка в 9 символов. При добавлении до 9 символов, запрос пустой, при добавлении до 8 символов - в запросе нужный документ.

А нафига вообще что-то добавлять? в 1sjourn это строка из 9 символов, зачем ты их сначала обрезаешь, а потом добавляешь?
По поводу 8 символов - это может работать только в твоей БД, т.к. код конфигурации у всех разный, у меня, например, он пустой, и, исходя из твоего подхода, мне было бы достаточно дополнять до 6 символов, но это же идиотизм - сначала обрезать пробелы, а потом их дополнять ...
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Вернуть документ по IDDoc
Ответ #27 - 27. Декабря 2010 :: 05:50
Печать  
Dmitry The Wing писал(а) 27. Декабря 2010 :: 02:30:
А нафига вообще что-то добавлять? в 1sjourn это строка из 9 символов, зачем ты их сначала обрезаешь, а потом добавляешь?
По поводу 8 символов - это может работать только в твоей БД, т.к. код конфигурации у всех разный, у меня, например, он пустой, и, исходя из твоего подхода, мне было бы достаточно дополнять до 6 символов, но это же идиотизм - сначала обрезать пробелы, а потом их дополнять ...

Автор же пишет, что у него сторонняя прога пробелы обрезала. При этом он ошибается, что прога обрезала только лидирующие пробелы, т.к. обрезались все пробелы.  Именно поэтому - когда автор обрезает до 8-й символов - у него цепляется нужное количество пробелов, т.к. закрывающего последнего пробела - нет. Диагноз, впрочем, правильный - не обрезать пробелы, т.к. даже в этой базе не факт - что дополнение до 8-и символов гарантирует работу со всеми документами.
  
Наверх
ICQ  
IP записан
 
filh
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 36
Зарегистрирован: 23. Августа 2010
Re: Вернуть документ по IDDoc
Ответ #28 - 27. Декабря 2010 :: 07:32
Печать  
Salimbek писал(а) 27. Декабря 2010 :: 05:50:
Автор же пишет, что у него сторонняя прога пробелы обрезала.

Так и есть.
Salimbek писал(а) 27. Декабря 2010 :: 05:50:
При этом он ошибается, что прога обрезала только лидирующие пробелы, т.к. обрезались все пробелы.  Именно поэтому - когда автор обрезает до 8-й символов - у него цепляется нужное количество пробелов, т.к. закрывающего последнего пробела - нет. Диагноз, впрочем, правильный - не обрезать пробелы, т.к. даже в этой базе не факт - что дополнение до 8-и символов гарантирует работу со всеми документами.

обрезал до 8-ми символов, чтобы добавить лидирующие пробелы. Как выяснилось, конечные пробелы не актуальны.
  
Наверх
 
IP записан
 
Dmitry The Wing
God Member
*****
Отсутствует


1C++ rocks!

Сообщений: 839
Местоположение: Где-то в Сибири
Зарегистрирован: 18. Августа 2009
Пол: Мужской
Re: Вернуть документ по IDDoc
Ответ #29 - 27. Декабря 2010 :: 07:38
Печать  
filh писал(а) 27. Декабря 2010 :: 07:32:
обрезал до 8-ми символов, чтобы добавить лидирующие пробелы. Как выяснилось, конечные пробелы не актуальны.

Еще как актуальны - они содержат код конфигурации ... последние 3 символа... потому и писал, что до 8 резать тоже глупо ... у тебя один "пробел" пустой, а у других иное число ... или вообще нет пустых...
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать