Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Пишу свой первый прямой запрос. Помогайте:) (число прочтений - 17131 )
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Пишу свой первый прямой запрос. Помогайте:)
15. Ноября 2007 :: 06:34
Печать  
Собственно текст запроса
Запрос = СоздатьОбъект("ODBCRecordset");

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


Что надо дописать что бы запрос выполнялся в базе E:/1C_BASE/Base_Tovar?
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #1 - 15. Ноября 2007 :: 06:36
Печать  
У тебя база SQL?
Ты хочешь получить данные не из текущей базы?
  
Наверх
ICQ  
IP записан
 
ev-kov
God Member
*****
Отсутствует



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #2 - 15. Ноября 2007 :: 06:45
Печать  
[quote author=Aswed link=1195108453/0#0 date=1195108453]Что надо дописать что бы запрос выполнялся в базе E:/1C_BASE/Base_Tovar?[/quote]
Все просто:
[code]   //подключаемся к другой базе 1С
     Serv = "marketolog";
     КатИБ = "\\marketolog\c\1s-base\GazetaOld\";
     base ="BaseOld";
     baseuser = "sa";
     basepwd       = "****"; //свой напиши
     
     user1c ="Админ";
     pwd1c = "*****"; // аналогично
     ИБ=СоздатьОбъект("ODBCDataBase");
     СтрокаПодключения = ШАБЛОН("Driver={SQL Server};Server=[Serv];Database=[Base];Uid=[baseuser];Pwd=[basepwd];");
     Попытка
           ИБ.ПрисоединитьИБ(КатИБ,user1c,pwd1c,СтрокаПодключения);
     Исключение
         Сообщить(СтрокаПодключения);
           Возврат;
     КонецПопытки;      

     RS=СоздатьОбъект("ODBCRecordset");
     RS.УстБД(ИБ);
// дальше твой запрос

     
[/code]
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #3 - 15. Ноября 2007 :: 06:51
Печать  
Да база SQL. Забыл написать Смущённый
Этоподключение к ДБФ, насколько я понял.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #4 - 15. Ноября 2007 :: 06:57
Печать  
Aswed писал(а) 15. Ноября 2007 :: 06:51:
Да база SQL. Забыл написать Смущённый
Этоподключение к ДБФ, насколько я понял.

Нет это какраз подключение к SQL, так что используй его если надо подключится не к текущей базе!
  
Наверх
ICQ  
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #5 - 15. Ноября 2007 :: 07:01
Печать  
А  Serv = "marketolog"; - это имя сервера? И если да , то можно ли его прописывать, как IP адрес?
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #6 - 15. Ноября 2007 :: 07:06
Печать  
Aswed писал(а) 15. Ноября 2007 :: 07:01:
А  Serv = "marketolog"; - это имя сервера? И если да , то можно ли его прописывать, как IP адрес?

Тебе сюда:
http://www.connectionstrings.com/?carrier=sqlserver
  
Наверх
ICQ  
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #7 - 15. Ноября 2007 :: 07:08
Печать  
Всё понялУлыбка Сам протупил и не полно объяснилУлыбка
Я работаю в терминале\, где на одном и том же скюль сервере висит несколько баз 1С. И мне нужно из одной базы 1С подключится и выполнить запрос в другой базе 1С, работающей на этом же сервере. Подключаться к серверу не нужно, вход уже выполнен.
  

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



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #8 - 15. Ноября 2007 :: 07:15
Печать  
Aswed писал(а) 15. Ноября 2007 :: 07:08:
Всё понялУлыбка Сам протупил и не полно объяснилУлыбка
Я работаю в терминале\, где на одном и том же скюль сервере висит несколько баз 1С. И мне нужно из одной базы 1С подключится и выполнить запрос в другой базе 1С, работающей на этом же сервере. Подключаться к серверу не нужно, вход уже выполнен.


Тогда наверное достаточно этого:

ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ("\\server\КаталогИБ\");
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(ИБ);
Результат=рс.ВыполнитьИнструкцию(ТекстЗапроса);

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


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #9 - 15. Ноября 2007 :: 07:25
Печать  
Цитата:
Тогда наверное достаточно этого:

ИБ=СоздатьОбъект("ODBCDataBase");
ИБ.ПрисоединитьИБ("\\server\КаталогИБ\");
рс=СоздатьОбъект("ODBCRecordset");
рс.УстБД(ИБ);
Результат=рс.ВыполнитьИнструкцию(ТекстЗапроса);


Пишет общая файловая ошибка(выдаётся как предупреждение)
А в окне сообщений 1С выводится сообщение "Введенный пароль не верен"Улыбка Правильно, я же его не вводилУлыбка В чём ошибка?
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #10 - 15. Ноября 2007 :: 07:25
Печать  
Можешь использовать тот же коннект, но писать примерно так:
Код
Выбрать все
Select
    *
From
    [имясервера].[имябазы].dbo.[имя таблицы] 


Но тогда тебе придётся вручную переписать $РегистрОстаткиОбороты
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #11 - 15. Ноября 2007 :: 07:32
Печать  
Всё подключился, но теперь при выполнении запроса выдаёт странное сообщение
Meta name parser error: не указан параметр ":ДатаНачалаЗапроса"
Хотя там она точно задана. Смотрел через отладчик.
  

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


Не навижу 1С

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

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



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #13 - 16. Ноября 2007 :: 05:33
Печать  
Ты конечно извини, только мне УЖЕ не интересно вытаскивать из тебя информацию. Но все таки попробую:
В каком запросе? Почему текста запроса тут нет? Как устанавливаешь параметр? Как подключаешься к базе? Пробовал ли включить рс.Отладка(1);?
Ответь хотя бы на это.
  
Наверх
ICQ  
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

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


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


КонецПроцедуры
Сам видишь что пробовал включить, но результат такой:

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

ЗЫ Самого бесит задавть такие тупые вопросы, но учится больше негдеПечаль
  

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



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #30 - 16. Ноября 2007 :: 10:53
Печать  
Если хочешь конечный работающий вариант - дай агрегатные типы всех реквизитов:
асТовар - Справочник.Товары, а может Справочник.Номенклатура
асМОЛ - Справочник.МОЛЫ а может Справочник.ФизЛица
Производитель -
МестоХранения -
  
Наверх
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #31 - 16. Ноября 2007 :: 11:40
Печать  
Ну если уж давать так весть текст запросаУлыбка Буду ОЧЕНЬ благодарен, если поможете переделать этот запрос под прямые запросы. А то я замаялся с ними разбиратьсяУлыбка

         ТекстЗапроса = "
         |Период с '" +ДатаНачалаЗапроса+"' по '" +КонПрМесяца+ "';
     |асТовар = Регистр.ОстаткиТоваров.асТовар;
     |чАрхивный = Регистр.ОстаткиТоваров.асТовар.Архивный;
     |асГруппа = Регистр.ОстаткиТоваров.асТовар.Родитель;
     |чКодВТорговле = Регистр.ОстаткиТоваров.асТовар.чКодВТорговле;
     |асМОЛ = Регистр.ОстаткиТоваров.асТовар.МОЛ.Родитель;
     |асПроизводитель = Регистр.ОстаткиТоваров.асТовар.Производитель;
     |асСклад = Регистр.ОстаткиТоваров.асТовар.МестоХранения;
     |чОстаток = Регистр.ОстаткиТоваров.чОстаток;
     |Функция чСуммаНачОст = НачОст(чОстаток);
     |Функция чСуммаПриход = Приход(чОстаток);
     |Функция чСуммаРасход = Расход(чОстаток);
     |Функция чСуммаКонОст = КонОст(чОстаток);
     |Условие ((" +пчВариант+ " <4)и(асТовар.ОстатФ=0));
     |Условие ((асМОЛ.Код<>""190"")и(асМОЛ.Выбран()=1));
     |Условие (чАрхивный=0);
     |Группировка асМОЛ;
     |Группировка асГруппа;
     |Группировка асТовар без групп;
     |";

асТовар - Справочник.Номенклатура
асАрхивный - Справочник.Номенклатура
чКодВТорговле - Справочник.Номенклатура


АсМол, асПроизводитель, асСклад находятся в справочнике Номенклатура, но тип значения этих полей другие справочники

асМол - Справочник.Агенты
асПроизводитель - Справочник.Контрагенты
асСклад - Справочник.МестаХранения

Заранее СПАСИБО.
  

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



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


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #33 - 22. Ноября 2007 :: 12:01
Печать  
leshik писал(а) 16. Ноября 2007 :: 10:53:
Если хочешь конечный работающий вариант - дай агрегатные типы всех реквизитов:
асТовар - Справочник.Товары, а может Справочник.Номенклатура
асМОЛ - Справочник.МОЛЫ а может Справочник.ФизЛица
Производитель -
МестоХранения -

Дал полный вариант запроса, к сожалению не моего. Переделаешь его под прямой запрос?
ЗЫ Что то с этим конструктором запросов совсем запуталсяПечаль
  

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



Сообщений: 694
Зарегистрирован: 27. Декабря 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #34 - 22. Ноября 2007 :: 12:03
Печать  
Aswed писал(а) 22. Ноября 2007 :: 12:01:
с этим конструктором запросов совсем запуталсяПечаль
Ты лучше с ним разберись, это тебе окупится намного больше чем просто помощь по одному запросу ..
  

Информация - то, что снижает неопределенность в какой-либо области и очень важно не ошибиться областью в наш информационный век!
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #35 - 22. Ноября 2007 :: 12:07
Печать  
Да мне в принципе то считай что только этот один зпрос и нужен. Мы после нового года переходим на восьмёрку а там эти прямые запросы не к чему окажутся. Или и там пригодятся?
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #36 - 22. Ноября 2007 :: 12:10
Печать  
Aswed писал(а) 22. Ноября 2007 :: 12:07:
Да мне в принципе то считай что только этот один зпрос и нужен. Мы после нового года переходим на восьмёрку а там эти прямые запросы не к чему окажутся. Или и там пригодятся?

Вот как раз там тебе всё это и пригодится. Этот конструктор сделан по аналогии с конструктором из 8-ки. И в 8-ке используются уже "нормальные", SQL-обрАзные запросы.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #37 - 22. Ноября 2007 :: 12:15
Печать  
Т.е. прямые запросы это что-то типа запросов в 8-ке? Я просто всё никак не доберусь до восьмёрки, поддержание всей семёрки весит на мне, а восьмёркой занимаются другие.
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #38 - 22. Ноября 2007 :: 12:17
Печать  
Aswed писал(а) 22. Ноября 2007 :: 12:07:
Да мне в принципе то считай что только этот один зпрос и нужен. Мы после нового года переходим на восьмёрку а там эти прямые запросы не к чему окажутся. Или и там пригодятся?

sql он и Африке sql  Улыбка
а на v8 сейчас переходи в тестовой базе, а то с нового года будет поздно.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #39 - 22. Ноября 2007 :: 12:22
Печать  
Z1 писал(а) 22. Ноября 2007 :: 12:17:
Aswed писал(а) 22. Ноября 2007 :: 12:07:
Да мне в принципе то считай что только этот один зпрос и нужен. Мы после нового года переходим на восьмёрку а там эти прямые запросы не к чему окажутся. Или и там пригодятся?

sql он и Африке sql  Улыбка
а на v8 сейчас переходи в тестовой базе, а то с нового года будет поздно.

Поздно не будет. Мы разделились. Я занимаюсь поддержанием базы на семёрке. В это время двое других програмеров изучают, обкатывают и начинают внедрять восьмёрку. После нового года переводим почти всё на восьмёрку, а с февраля полностью всё. Всё это время они занимаются только восьмёркой, а я только поддержанием семёрки. Когда же полностью перелазим на восьмёрку я в свою очередь перестав поддерживать семёрку изучаю восьмёрку. Так что как видишь поздно не будетУлыбка
  

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


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #40 - 22. Ноября 2007 :: 12:54
Печать  
Построил парочку запросов с помощью этого конструктора. Выполняются в родной базе (в которой и должны выполнятся запросы) хорошо, но пытаюсь подключится к этой базе из другой и выполнить в ней эти запросы и не работает. Выдаёт что не может найти указанный в тексте запроса регистр, хотя там он точно есть. Что не правильно?

//*******************************************
Процедура Сформировать()
     Перем тз; //:ТаблицаЗначений   

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

     
     рс = СоздатьОбъект("ODBCRecordset");
     //Данный фрагмент построен конструктором.
     //При повторном использовании конструктора внесенные вручную изменения будут потеряны!!!
     ТекстЗапроса = "-- qryMaker:Отчет1.2007.11.22.15.17.11
           |SELECT $ОстаткиТоваров.асТовар [асТовар $Справочник.Номенклатура]
           |FROM $Регистр.ОстаткиТоваров AS ОстаткиТоваров
           |      INNER JOIN $Справочник.Номенклатура AS Номенклатура ON $ОстаткиТоваров.асТовар = Номенклатура.ID
           |      INNER JOIN $Справочник.Агенты AS Агенты ON $Номенклатура.МОЛ = Агенты.ID
           |WHERE ($Номенклатура.Архивный = 0)
           |GROUP BY $ОстаткиТоваров.асТовар
           |";
     тз = рс.ВыполнитьИнструкцию(ТекстЗапроса);
     тз.ВыбратьСтроку();
КонецПроцедуры
  

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


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #41 - 23. Ноября 2007 :: 05:45
Печать  
Подскажите как в прямых запросах будет выглядить такая строка запроса:
Товар = Справочник.Номенклатура.ТекущийЭлемент;
т.е. как в прямых запросах вытащить целиком элемент справочника
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #42 - 23. Ноября 2007 :: 06:06
Печать  
Ну у тебя ж уже есть:
Код
Выбрать все
$ОстаткиТоваров.асТовар [асТовар $Справочник.Номенклатура] 


если именно из справочника Номенклатура, то так:
Код
Выбрать все
$Номенклатура.ID [Товар $Справочник.Номенклатура] 


а вообще прочти Статью о прямых запросах в 1с++. Оч полезно.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

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

Процедура Сформировать()
     
     Перем ТЗ;
     
    РС = СоздатьОбъект("ODBCRecordSet");
     
    ТекстЗапроса = "  
    |SELECT  
      |$Номенклатура.ID as [Товар $Справочник.Номеклатура],
      |$Спр.Мол as [асМол $Справочник.Агенты]
      |FROM                    
      |$Справочник.Номенклатура as Спр
      |WHERE
      |$Спр.Архивный = 0 AND
      |Спр.IsMark = 0";
     

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

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

В итоге выпадает в ошибку

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

Выбрать элемент нужно из справочника Номенклатура.
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #44 - 23. Ноября 2007 :: 06:47
Печать  
Ну ясен пень, что выдаёт ошибку. Вот здесь:
Код
Выбрать все
$Справочник.Номенклатура as Спр 


ты обозвал свою таблицу, где хранятся элементы справочника именем "Спр". Вот дальше и обращайся к этой таблице по этому прозвищу. А ты пишешь: "$Номенклатура "
+ "сам объект" (а точнее его ИД) хранится в поле ID, которое потом можно типизировать конструкцией вида [Товар $Справочник.Номеклатура]
Итог: читай мануалы (что и как хранит 1С, прямые запросы в 1с++). Потом ещё раз прочитай, а уж потом, что не будет понятно - спрашивай.
  
Наверх
 
IP записан
 
Z1
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #45 - 23. Ноября 2007 :: 06:48
Печать  
Aswed писал(а) 23. Ноября 2007 :: 06:34:
но не могу там найти как вытащить целиком элемент справочника.


Код
Выбрать все
РС = СоздатьОбъект("ODBCRecordSet");  
     ТекстЗапроса = "    
     |SELECT   *
     |FROM			    
     |$Справочник.Номенклатура as Номенклатура
     |";
     ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса);  
     ТЗ.ВыбратьСтроку();    
 


Будет попадать всё, кроме периодич реквизитов справочника номенклатура.
Реквизиты будут нетипизированны.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #46 - 23. Ноября 2007 :: 06:58
Печать  
Разобрался. Спасибо за помощьУлыбка
  

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


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #47 - 23. Ноября 2007 :: 07:06
Печать  
Z1 Так я знаю как вытащить. Но таким образом он выводит все элементы справочника по колонкам, полностью раскрытым считай что. А мне нужно что бы запросом вытаскивался элемент так же как при обычном запросе.  Без разворота по этим колонкам, а целиком как цельный элемент справочника.
ЗЫ просто на этом запросе завязан очень большой отчёт и вся его структура основана на определенным образом сформированной таблице значений. Переписывать весь отчёт само собой не хочется, тем более что не мой
  

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


I Love YaBB 2!

Сообщений: 2906
Местоположение: Москва
Зарегистрирован: 26. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #48 - 23. Ноября 2007 :: 07:22
Печать  
Aswed писал(а) 23. Ноября 2007 :: 07:06:
Z. А мне нужно что бы запросом вытаскивался элемент так же как при обычном запросе.  Без разворота по этим колонкам, а целиком как цельный элемент справочника.

Прочти статью быстые справочники
http://www.1cpp.ru/forum/YaBB.pl?num=1152519272
на уровне sql нет понятия Спр.ТекущийЭлемент()
есть только поле Спр.ID однозначно определяющий строку в sql таблице.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #49 - 23. Ноября 2007 :: 08:32
Печать  
Пытаюсь групировать, так как понял из фак'а по прямым запросам

Процедура Сформировать()
     
     Перем ТЗ;   
     
     СписокИсключаемыхГрупп="67,99";
     66,67,68,69,70,71,72,73,74,75,76,77";

     
     РС = СоздатьОбъект("ODBCRecordSet");
     
     ТекстЗапроса = "   
     |SELECT
      |Спр.ID as [асТовар $Справочник.Номенклатура],
      |$Спр.Мол as [асМол $Справочник.Агенты],
      |$Спр.МестоХранения as [асСклад $Справочник.МестаХранения],
      |Спр.ParentID as [асГруппа  $Справочник.Номенклатура],
      |$Спр.чКодВТорговле as чКодВТорговле,
      |$Спр.Производитель as [асПроизводитель $Справочник.Контрагенты],
      |$Спр.ОстатФ as чСуммаРасход,
      |$Спр.ДатаПоследРасх as дДатаПоследРасх,
      |$Спр.ДатаПоследПрих as дДатаПоследПрих,
      |GROUPING ($Спр.Мол) as Группа1,
      |GROUPING ($Спр.МестоХранения) as Группа2
      |
      |FROM                     
      |$Справочник.Номенклатура as Спр
      |
      |WHERE
      |$Спр.Архивный = 0 AND
      |Спр.IsMark = 0
      |
      |GROUP BY $Спр.Мол, $Спр.МестоХранения WITH ROLLUP
      |ORDER BY $Спр.Мол, $Спр.МестоХранения, Группа1 DESC, Группа2 DESC
      |";
     

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


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

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

ТЗ = РС.ВыполнитьИнструкцию(ТекстЗапроса); 
{E:\1C\BASE_NEW\EXTFORMS\!_АНДРЕЙ\ПОДОПЫТНЫЙ ОБРАЗЕЦ.ERT(37)}: State 42000, native 8120, message [Microsoft][ODBC SQL Server Driver][SQL Server]Column 'Спр.ID' is invalid in the select list because it is not contained in either an aggregate function or the GROUP BY clause.

Что не правильно в коде?
  

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



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #50 - 23. Ноября 2007 :: 09:03
Печать  
Мля, ну почитай ты наконец документацию к ф-иям, которые ты используешь.
Из ачем вообще ты группируешь, если нет ниодной агрегирующей ф-ии??
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

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

     ТекстЗапроса = "   
     |SELECT
      |Спр.ID as [асТовар $Справочник.Номенклатура],
      |$Спр.Мол as [асМол $Справочник.Агенты],
      |$Спр.МестоХранения as [асСклад $Справочник.МестаХранения],
      |Спр.ParentID as [асГруппа  $Справочник.Номенклатура],
      |$Спр.чКодВТорговле as чКодВТорговле,
      |$Спр.Производитель as [асПроизводитель $Справочник.Контрагенты],
      |$Спр.ОстатФ as чСуммаРасход,
      |$Спр.ДатаПоследРасх as дДатаПоследРасх,
      |$Спр.ДатаПоследПрих as дДатаПоследПрих,
      |
      |FROM                     
      |$Справочник.Номенклатура as Спр
      |
      |WHERE
      |$Спр.Архивный = 0 AND
      |Спр.IsMark = 0
      |
      |";
  

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


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #52 - 26. Ноября 2007 :: 17:05
Печать  
Grouping() - With rollup
Либо Индексированная таблица
Либо еще что-нить...
А если бесят запросы - бросайнах, не нужно калечить себя...
  

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


I Love YaBB 2!

Сообщений: 53
Зарегистрирован: 29. Мая 2006
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #53 - 27. Ноября 2007 :: 21:12
Печать  
Aswed писал(а) 26. Ноября 2007 :: 08:02:
Прочитал. Но как то не доходит до меня с групировкой этой грёбаной. Самого бесят уже эти прямые запросы.
Но всё таки подскажите, как сгрупировать этот запрос по Мол?

    ТекстЗапроса = "  
    |SELECT
      |Спр.ID as [асТовар $Справочник.Номенклатура],
      |$Спр.Мол as [асМол $Справочник.Агенты],
      |$Спр.МестоХранения as [асСклад $Справочник.МестаХранения],
      |Спр.ParentID as [асГруппа  $Справочник.Номенклатура],
      |$Спр.чКодВТорговле as чКодВТорговле,
      |$Спр.Производитель as [асПроизводитель $Справочник.Контрагенты],
      |$Спр.ОстатФ as чСуммаРасход,
      |$Спр.ДатаПоследРасх as дДатаПоследРасх,
      |$Спр.ДатаПоследПрих as дДатаПоследПрих,
      |
      |FROM                    
      |$Справочник.Номенклатура as Спр
      |
      |WHERE
      |$Спр.Архивный = 0 AND
      |Спр.IsMark = 0
      |
      |";


Итак, для начала что такое группировка. Немного теории.
GROUP BY - использует одно из полей множества результата для объединения в обобщенный столбец Улыбка

Теперь на пальцах. Есть табличка Спр.Номенклатуры в которой:
| Row_ID | МОЛ                     |   ОстатФ   |
| 1           | Иванов                 |   5             |
| 2           | Петров                 |   3             |
| 3           | Иванов                 |   5             |
| 4           | Петров                 |   2             |
| 5           | Иванов                 |   5             |

Задача: Нужно сгруппировать по МОЛ и получить сумму ОстатФ
    ТекстЗапроса = "  
    |SELECT
      |$Спр.Мол as [асМол $Справочник.Агенты],
      |SUM($Спр.ОстатФ) as чСуммаРасход,
      |FROM                    
      |$Справочник.Номенклатура as Спр
      |GROUP BY $Спр.Мол
      |";

На выходе получим табличку
| асМол                   |чСуммаРасход   |
| Иванов                 |   15                   |
| Петров                 |   5                     |

Итак в  выборке должны быть только те поля , кот. присутствуют в Group by или в обобщенных функциях (COUNT, MAX, MIN, SUM, AVG), иначе будет ошибка.

Если и это для тебя сложно, то в сад Улыбка
А вообще ты страшный лентяй, давно уже прочитал мини-руководство по SQL и не парил бы людям мозг.
  
Наверх
 
IP записан
 
Aswed
Junior Member
**
Отсутствует


Не навижу 1С

Сообщений: 76
Зарегистрирован: 13. Ноября 2007
Пол: Мужской
Re: Пишу свой первый прямой запрос. Помогайте:)
Ответ #54 - 30. Ноября 2007 :: 05:41
Печать  
Спасибо всем кто терпел мои глупые вопросы и помогалУлыбка Перечитал кучу литературы и разобрался с прямыми запросами, решил поблагодарить.
ЗЫ И я конечно лентяй, как и люой програмист, но в основном дело в том что занимался прямыми запросами ТОЛЬКО когда не было другой работы. Поэтому времени на них было мало и отсюда тормозаУлыбка))) Ещё раз спасибо.
  

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