Переключение на Главную Страницу Страницы: 1 [2] 3 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Пишу свой первый прямой запрос. Помогайте:) (число прочтений - 17031 )
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #15 - 16. Ноября 2007 :: 06:56
Печать  
А где ты вообще устанавливаешь текстовые параметры "ДатаНачалаЗапроса" и "КонпрМесяца"??
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #16 - 16. Ноября 2007 :: 06:59
Печать  
Они задаются на форме отчёта
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #17 - 16. Ноября 2007 :: 07:03
Печать  
Ну и что? Это не Запрос1С, тут другое.
Перед выполнение запроса делай:
Код
Выбрать все
РС.УстановитьТекстовыйПареметр("ДатаНачалаЗапроса",ДатаНачалаЗапроса);
РС.УстановитьТекстовыйПареметр("КонпрМесяца",КонпрМесяца) 


Вот дока.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #18 - 16. Ноября 2007 :: 07:38
Печать  
Текст кода:                  
     РС.УстановитьТекстовыйПареметр("ДатаНачалаЗапроса",ДатаНачалаЗапроса);
     РС.УстановитьТекстовыйПареметр("КонпрМесяца",КонпрМесяца);

     ТекстЗапроса = "
       |SELECT  
       |      Рег.асТовар as [асТовар $Справочник.Номенклатура],
       |      Рег.КоличествоНачальныйОстаток as КоличествоНачОст,
       |      Рег.КоличествоПриход as КоличествоПриход,
       |      Рег.КоличествоРасход as КоличествоРасход,
       |      Рег.КоличествоКонечныйОстаток as КоличествоКонОст,
       |      Рег.СуммаПриход as СуммаПриход,
       |      Рег.СуммаРасход aa СуммаРасход,
       |      Рег.СуммаКонечныйОстаток as СуммаКонОст,
       |FROM
       |   $РегистрОстаткиОбороты.ОстаткиТоваров(:ДатаНачалаЗапроса, :КонпрМесяца~,,,
       |                                                , (товар), (Сумма, Количество)) as Рег";

       
    РС.Отладка(1);            
    ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
    ТЗ.ВыбратьСтроку();

В итоге пишет:


ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{E:\1C\BASE_NEW\EXTFORMS\!_АНДРЕЙ\ПРЯМОЙ_ЗАПРОС.ERT(2005)}: Meta name parser error: недопустимое значение параметра "$РегистрОстаткиОбороты.ОстаткиТоваров" (7)
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #19 - 16. Ноября 2007 :: 07:41
Печать  
Устанавливай после "ТекстЗапроса = ..." но ДО выполнения
И не УстановитьТекстовыйПареметр, а УстановитьТекстовыйПараметр
Короче вот так:
Код
Выбрать все
Процедура Сформировать()

     ИБ = СоздатьОбъект("ODBCDataBase");
     ИБ.ПрисоединитьИБ("E:\1C\Base_Tovar_New\");
     РС = СоздатьОбъект("ODBCRecordSet");
     РС.УстБД(ИБ);

     ТекстЗапроса = "  
     |SELECT    
     |    Рег.асТовар as [асТовар $Справочник.Номенклатура],  
     |    Рег.КоличествоНачальныйОстаток as КоличествоНачОст,  
     |    Рег.КоличествоПриход as КоличествоПриход,  
     |    Рег.КоличествоРасход as КоличествоРасход,  
     |    Рег.КоличествоКонечныйОстаток as КоличествоКонОст,  
     |    Рег.СуммаПриход as СуммаПриход,  
     |    Рег.СуммаРасход aa СуммаРасход,  
     |    Рег.СуммаКонечныйОстаток as СуммаКонОст,  
     |FROM  
     |   $РегистрОстаткиОбороты.ОстаткиТоваров(:ДатаНачалаЗапроса, :КонпрМесяца~,,,  
     |					  ,,)) as Рег";  
     РС.Отладка(1);  
     РС.УстановитьТекстовыйПараметр("ДатаНачалаЗапроса",ДатаНачалаЗапроса);
     РС.УстановитьТекстовыйПараметр("КонпрМесяца",КонпрМесяца);	    
     ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);  
     ТЗ.ВыбратьСтроку();  


КонецПроцедуры 

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #20 - 16. Ноября 2007 :: 07:48
Печать  
+1
  
Наверх
ICQ  
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #21 - 16. Ноября 2007 :: 07:49
Печать  
Да, с "е" я лоханулся, но уже сам нашёл. Поставил после и пишет в итоге:


ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{E:\1C\BASE_NEW\EXTFORMS\!_АНДРЕЙ\ПРЯМОЙ_ЗАПРОС.ERT(2005)}: Meta name parser error: недопустимое значение параметра "$РегистрОстаткиОбороты.ОстаткиТоваров" (7)

Блин, запарился я уже с этой хреньюПечаль Вот же ##па с этими запросами, а без них у меня по другому вопрос не решить.
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #22 - 16. Ноября 2007 :: 07:58
Печать  
А у тебя регистр точно "ОстаткиТоваров" называется? В родной базе этот запрос выполняется?
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #23 - 16. Ноября 2007 :: 08:16
Печать  
Точно "ОстаткиТоваров", сейчас даже специально залез посмотреть. В родной базе результат тот же на текст запроса:

     ТекстЗапроса = "
     |SELECT 
     |      Рег.асТовар as [асТовар $Справочник.Номенклатура],
     |      Рег.КоличествоНачальныйОстаток as КоличествоНачОст,
     |      Рег.КоличествоПриход as КоличествоПриход,
     |      Рег.КоличествоРасход as КоличествоРасход,
     |      Рег.КоличествоКонечныйОстаток as КоличествоКонОст,
     |      Рег.СуммаПриход as СуммаПриход,
     |      Рег.СуммаРасход as СуммаРасход,
     |      Рег.СуммаКонечныйОстаток as СуммаКонОст,
     |FROM
     |   $РегистрОстаткиОбороты.ОстаткиТоваров(:ДатаНачалаЗапроса, :КонпрМесяца~,,,
     |                                                , , )) as Рег";
     
     РС.Отладка(1);            
     
     РС.УстановитьТекстовыйПараметр("ДатаНачалаЗапроса",ДатаНачалаЗапроса);
     РС.УстановитьТекстовыйПараметр("КонпрМесяца",КонпрМесяца);
     
     ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
     ТЗ.ВыбратьСтроку();
     
Пишет зараза

ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{E:\1C\BASE_NEW\EXTFORMS\!_АНДРЕЙ\ПРЯМОЙ_ЗАПРОС.ERT(2006)}: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'FROM'.
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #24 - 16. Ноября 2007 :: 08:24
Печать  
Может знающим людям что то скажет сообщение которое выдаётся приотладке?

Подключение удачно

SELECT 
     Рег.асТовар as [асТовар $Справочник.Номенклатура],
     Рег.КоличествоНачальныйОстаток as КоличествоНачОст,
     Рег.КоличествоПриход as КоличествоПриход,
     Рег.КоличествоРасход as КоличествоРасход,
     Рег.КоличествоКонечныйОстаток as КоличествоКонОст,
     Рег.СуммаПриход as СуммаПриход,
     Рег.СуммаРасход as СуммаРасход,
     Рег.СуммаКонечныйОстаток as СуммаКонОст,
FROM
   (
select
rb61752_vt.асТовар,
sum(rb61752_vt.чОстатокОстаток) as чОстатокНачальныйОстаток,
sum(rb61752_vt.чОстатокПриход) as чОстатокПриход,
sum(rb61752_vt.чОстатокРасход) as чОстатокРасход,
sum(rb61752_vt.чОстатокОстаток) + sum(rb61752_vt.чОстатокПриход) - sum(rb61752_vt.чОстатокРасход) as чОстатокКонечныйОстаток
from (
select
ra61752_vt.sp61749 as асТовар,
case when ra61752_vt.debkred = 0 then ra61752_vt.sp61750 else 0 end as чОстатокПриход,
case when ra61752_vt.debkred = 1 then ra61752_vt.sp61750 else 0 end as чОстатокРасход,
0 as чОстатокОстаток
from ra61752 as ra61752_vt (nolock)
where ra61752_vt.date_time_iddoc > '20070101' and ra61752_vt.date_time_iddoc < '20071031Z'
union all
select
rg61752_vt.sp61749 as асТовар,
0,
0,
rg61752_vt.sp61750 as чОстатокОстаток
from rg61752 as rg61752_vt (nolock)
where rg61752_vt.period={d '2006-12-01'}
) as rb61752_vt
group by
rb61752_vt.асТовар
having
sum(rb61752_vt.чОстатокОстаток) <> 0 or
sum(rb61752_vt.чОстатокПриход) <> 0 or
sum(rb61752_vt.чОстатокРасход) <> 0 or
sum(rb61752_vt.чОстатокОстаток) + sum(rb61752_vt.чОстатокПриход) - sum(rb61752_vt.чОстатокРасход) <> 0
) as RestsTurnovers61752) as Рег
ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{E:\1C\BASE_NEW\EXTFORMS\!_АНДРЕЙ\ПРЯМОЙ_ЗАПРОС.ERT(2006)}: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'FROM'.
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #25 - 16. Ноября 2007 :: 08:29
Печать  
запятую после "Рег.СуммаКонечныйОстаток as СуммаКонОст" убери
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #26 - 16. Ноября 2007 :: 08:38
Печать  
Блин, это просто пипец какой! Взял этот запрос из руководства которое шло с компанентой, и не хрена не могу его запуститьПечаль Запятую убрал, теперь пишет

ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);
{E:\1C\BASE_NEW\EXTFORMS\!_АНДРЕЙ\ПРЯМОЙ_ЗАПРОС.ERT(2006)}: State 42S22, native 207, message [Microsoft][ODBC SQL Server Driver][SQL Server]Invalid column name 'КоличествоНачальныйОстаток'.
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #27 - 16. Ноября 2007 :: 08:58
Печать  
Ну так может у тебя ресур не Количество называется в регистре?
  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #28 - 16. Ноября 2007 :: 09:55
Печать  
Спешка помогает лишь при ловле блох...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #29 - 16. Ноября 2007 :: 10:10
Печать  
как будет выглядить текст запроса обращения к этим регистрам с использованием ВТ ОстаткиОбороты?
       |асТовар = Регистр.ОстаткиТоваров.асТовар;
       |чАрхивный = Регистр.ОстаткиТоваров.асТовар.Архивный;
       |асГруппа = Регистр.ОстаткиТоваров.асТовар.Родитель;
       |чКодВТорговле = Регистр.ОстаткиТоваров.асТовар.чКодВТорговле;
       |асМОЛ = Регистр.ОстаткиТоваров.асТовар.МОЛ.Родитель;
       |асПроизводитель = Регистр.ОстаткиТоваров.асТовар.Производитель;
       |асСклад = Регистр.ОстаткиТоваров.асТовар.МестоХранения;
       |чОстаток = Регистр.ОстаткиТоваров.чОстаток;
  

Я вообще то парень хоть куда, но туда не все девушки соглашаются...
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 3 4 
ОтправитьПечать