Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Помогите с метапарсером 1С++ (число прочтений - 6083 )
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Помогите с метапарсером 1С++
19. Сентября 2006 :: 15:59
Печать  
Есть такой запрос
Код
Выбрать все
   ТекстЗапроса = "
      
      |SELECT
      |  Жур.IDDoc [Док $Документ],
      |  Жур.IDDocDef Док_вид
      |FROM
      |  _1SJourn Жур
      |INNER JOIN
      |  _1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
      |                    Отбор. MDID = 0 AND  
      |                    Отбор.ParentVal = :ВыбДок* AND
      |                Жур.Closed & 1 = 1 AND
      |                Жур.IDDocDef = 1176";
 



Как мне определить Жур.IDDocDef = $....?
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #1 - 19. Сентября 2006 :: 16:32
Печать  
Цитата:
идентификатор вида документа, зависит от формата ИБ: SQL - литерал типа int; DBF - литерал типа char(4):

${ВидДокумента|DocumentKind}.<Документ> = {XXXX | 'ZZZZ'}
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #2 - 20. Сентября 2006 :: 06:27
Печать  
berezdetsky писал(а) 19. Сентября 2006 :: 16:32:
Цитата:
идентификатор вида документа, зависит от формата ИБ: SQL - литерал типа int; DBF - литерал типа char(4):

${ВидДокумента|DocumentKind}.<Документ> = {XXXX | 'ZZZZ'}



Спасибо!

Поехали дальше  Улыбка

Код
Выбрать все
SELECT
  Жур.IDDoc as [Док_1c_type_Документ],
  Жур.IDDocDef Док_вид
FROM
  1SJourn Жур
INNER JOIN
  1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
                    Отбор. MDID = 0 AND  
                    Отбор.ParentVal = 'O1 2CN   JTMSTO        ' AND
                ((Жур.Closed & 1) = 1) AND
                Жур.IDDocDef = ' 2FU'
ТЗРезультата=ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапроса);
{Глобальный модуль(13124)}: FAILED! ICommandText::Execute(): Function name is missing ). 



Какой функции не хватает?...
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #3 - 20. Сентября 2006 :: 06:36
Печать  
может:
Жур.IDDoc as [Док_1c_type_Документ $Документ]
?
чисто так, предположение...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #4 - 20. Сентября 2006 :: 07:07
Печать  
Ошибка здесь: Жур.Closed & 1 = 1
  
Наверх
ICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #5 - 20. Сентября 2006 :: 14:01
Печать  
spock писал(а) 20. Сентября 2006 :: 07:07:
Ошибка здесь: Жур.Closed & 1 = 1


А я думал где я это видел...

Цитата:
Глава 3: Работа с документами

...в таблице _1SJourn есть поле Closed первый бит которого отвечает за проведенность документа.



Код
Выбрать все
ТекстЗапроса = "
|SELECT
|  Жур.IDDoc as [Док $Документ],
|  Жур.IDDocDef as Док_вид,
|  CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок
|FROM
|  _1SJourn Жур
|WHERE
|  Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
|  Жур.IDDocDef = $ВидДокумента.Реализация AND
|  Жур.Closed & 1 = 1"; 




так что вроде Жур.Closed & 1 = 1  должно работать
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #6 - 20. Сентября 2006 :: 14:04
Печать  
Цитата:
Пример: Для данного документа выберем подчиненные за период
ТекстЗапроса = "
|SELECT
|  Жур.IDDoc [Док $Документ],
|  Жур.IDDocDef Док_вид
|FROM
|  _1SJourn
|INNER JOIN
|  _1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
|                    Отбор. MDID = 0 AND
|                    Отбор.ParentVal = :ВыбДок* AND
|                    Отбор.Child_Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~";  


Вот мой запрос

Код
Выбрать все
SELECT
  Жур.IDDoc [Док_1c_type_Документ],
  Жур.IDDocDef Док_вид
FROM
  1SJourn
INNER JOIN
  1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
                    Отбор. MDID = 0 AND
                    Отбор.ParentVal = 'O1 2CN   JTMSTO        '
AND
                    Отбор.Child_Date_Time_IDDoc BETWEEN '19800101' AND '20060920Z'
ТЗРезультата=ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапроса);
{Глобальный модуль(13124)}: FAILED! ICommandText::Execute(): SQL: Column '     ' is not found. 



А не работает.
Может это потому что у меня DBF?
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #7 - 20. Сентября 2006 :: 14:19
Печать  
ты немного не правильно прочел описание...
вот тебе пример рабочих наработок:
Код
Выбрать все
	Иначе
		// база SQL
		Проведен="and (Журнал.CLOSED%2=1)";
		Непроведен="and (Журнал.CLOSED%2=0 and Журнал.ISMARK=0)";
		ПомеченНаУдаление="and (Журнал.ISMARK=1)";
		НеПомеченНаУдаление="and (Журнал.ISMARK=0)";
 

  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #8 - 20. Сентября 2006 :: 14:22
Печать  
Цитата:
ты немного не правильно прочел описание...
вот тебе пример рабочих наработок:
Код
Выбрать все
	Иначе
		// база SQL
		Проведен="and (Журнал.CLOSED%2=1)";
		Непроведен="and (Журнал.CLOSED%2=0 and Журнал.ISMARK=0)";
		ПомеченНаУдаление="and (Журнал.ISMARK=1)";
		НеПомеченНаУдаление="and (Журнал.ISMARK=0)";
 



Мне нужно на DBF. И вообще... Бог с ним с CLOSED... Я просто не могу выбрать подчиненые документы... все для начала.
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #9 - 20. Сентября 2006 :: 14:26
Печать  
не сложно догадаться как будет для ДБФ:
Код
Выбрать все
	Если Константа.БазаSQL=0 Тогда
		// база DBF
		Проведен="and (Журнал.CLOSED%2=1)";
		Непроведен="and (Журнал.CLOSED%2=0 and Журнал.ISMARK='')";
		ПомеченНаУдаление="and (Журнал.ISMARK='*')";
		НеПомеченНаУдаление="and (Журнал.ISMARK='')";
 

  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #10 - 20. Сентября 2006 :: 14:36
Печать  
Цитата:
не сложно догадаться как будет для ДБФ:


Спасибо конечно...
Но у меня вообще пример не работает
SELECT
 Жур.IDDoc [Док_1c_type_Документ],
 Жур.IDDocDef Док_вид
FROM
 1SJourn
INNER JOIN
 1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
                   Отбор. MDID = 0 AND
                   Отбор.ParentVal = 'O1 2CN   JTMSTO        '
AND
                   Отбор.Child_Date_Time_IDDoc BETWEEN '19800101' AND '20060920Z'
ТЗРезультата=ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапроса);
{Глобальный модуль(13124)}: FAILED! ICommandText::Execute(): SQL: Column '     ' is not found.



  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #11 - 20. Сентября 2006 :: 14:41
Печать  
1. Нужно прописать алиас для таблицы 1SJOURN. Ты если начал использовать алиасы, так следи за синтаксисом (хотя тут без алиасов никак).
2. В dbf версии в таблице 1SCRDOC поле MDID - char(4), отсюда выводы в условии;
3. Там же нет поля Child_Date_Time_IDDoc , а есть CHILDDATE - date И CHILDTIME - char(6);
4. С полем closed и проверкой битовой маски есть проблемы, нужно искать другой способ проверки;
Вот такая вот жизнь гавно Улыбка
  
Наверх
ICQ  
IP записан
 
Славко
Senior Member
****
Отсутствует



Сообщений: 467
Местоположение: Украина, г. Днепропетровск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #12 - 20. Сентября 2006 :: 14:43
Печать  
ты хочешь чтобы дравер телепатией занимался? ты вообще пробовал хотя бы в 1Cv7.DD посмотреть структуру таблицы к кторой ты запрос пишешь?
Код
Выбрать все
		|where dtos(Журнал.DATE) between :НачДата and :КонДата
 

а прошу прощения, не замтил что ты к журналу подчиненных документов запрос делаешь, но там тоже такого поля нет о чем тебе вполне понятно драйвер и рассказал...
  

Ламер, самый обычный ламер...    сначала мы ...   а потом мы ...
Наверх
wwwICQ  
IP записан
 
Mashinist
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 60
Зарегистрирован: 21. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #13 - 20. Сентября 2006 :: 15:09
Печать  
spock писал(а) 20. Сентября 2006 :: 14:41:
1. Нужно прописать алиас для таблицы 1SJOURN. Ты если начал использовать алиасы, так следи за синтаксисом (хотя тут без алиасов никак).
2. В dbf версии в таблице 1SCRDOC поле MDID - char(4), отсюда выводы в условии;
3. Там же нет поля Child_Date_Time_IDDoc , а есть CHILDDATE - date И CHILDTIME - char(6);
4. С полем closed и проверкой битовой маски есть проблемы, нужно искать другой способ проверки;
Вот такая вот жизнь гавно Улыбка


Да фиг с ним с closed и CHILDDATE

Я судя кидаю то что выкидывает отладка...
И все равно не работает.... MDID - char(4)

SELECT
 Жур.IDDoc [Док_1c_type_Документ],
 Жур.IDDocDef Док_вид
FROM
 1SJourn
INNER JOIN
 1SCRDOC Отбор ON Отбор.ChildID = Жур.IDDoc AND
                   Отбор. MDID = '   0' AND
                   Отбор.ParentVal = 'O1 2CN   JTMSTO        '
ТЗРезультата=ODBCRecordset.ВыполнитьИнструкцию(ТекстЗапроса);
{Глобальный модуль(13124)}: FAILED! ICommandText::Execute(): SQL: Column '     ' is not found.
  

Наш путь извилист, но перспективы светлые. Мао Цзедун
Наверх
ICQ  
IP записан
 
spock
1c++ developer
1c++ moderator
Отсутствует



Сообщений: 822
Местоположение: Новосибирск
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Помогите с метапарсером 1С++
Ответ #14 - 20. Сентября 2006 :: 15:17
Печать  
вот жеж:
SELECT
 Жур.IDDoc [Док_1c_type_Документ],  
 Жур.IDDocDef Док_вид
FROM  
 1SJourn as Жур
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать