Переключение на Главную Страницу Страницы: 1 2 [3] 4  ОтправитьПечать
Очень популярная тема (более 25 ответов) Пишу свой первый прямой запрос. Помогайте:) (число прочтений - 17034 )
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 записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 
ОтправитьПечать