Реклама на этом месте
Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
11 Дек 2017, 15:28
МультиВход
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
 
collapse

Автор Тема: sql запрос 1с 7.7  (Прочитано 5141 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн RomanKatPro

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-03-04
  • Сайт: 
  • Профессия: Программист 1С
Платформа 1с 7.7 (7.70.025) Конфигурация не типовая Логистика.
Добрый день!
Необходимо получить значения Шир.Кор, ВысКор, ГлбКор из подчиненного спр.Единицы.

ТекстЗапроса="Select СпрТов.Code as Артикул,Товар as [Товар $Справочник.Товары], СпрЕд.ВысКор as Высота, Спред.ГлбКор as Глубина, СпрЕд.ШирКор,as Ширина,
|КоличествоОстаток as Количество from $РегистрОстатки.РазмещениеТовара(:КонДата~,,Кладовая=:Кладовая,Товар,Количество) as Рег
|left join $Справочник.Товары as СпрТов on СпрТов.id=Рег.Товар
|left join $Справочник.Единицы as СпрЕд on СпрЕд.PARENTEXT=Рег.Товар
|order by code
|";


изначально запрос выглядел вот так:
ТекстЗапроса="Select СпрТов.Code as Артикул,Товар as [Товар $Справочник.Товары],
      |КоличествоОстаток as Количество from $РегистрОстатки.РазмещениеТовара(:КонДата~,,Кладовая=:Кладовая,Товар,Количество) as Рег
      |left join $Справочник.Товары as СпрТов on СпрТов.id=Рег.Товар
      |order by code
      |";
      
при вы полнении запроса выдает    
{P:\ОБРАБОТКИ\ВВОД ЯЧЕЕК ОДЕЖДЫ.ERT(208)}: State 42000, native 156, message [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near the keyword 'as'.
p.s. заранее спасибо      


Оффлайн has

  • Модератор
  • *****
  • Сообщений: 1308
  • РЕПУТАЦИЯ: 285
  • КПД: 22%
  • Регистрация: 2011-01-28
  • Сайт: 
  • Профессия: Программист 1С
Re: sql запрос 1с 7.7
« Ответ #1: 05 Мар 2015, 07:33 »
1С++?
Товар as [Товар $Справочник.Товары]
Откуда это поле должно браться? Таблицу то надо указывать как минимум.
СпрЕд.ВысКор as Высота
Не стандартные реквизиты должны быть через $, т.е.
$СпрЕд.ВысКор as Высота
Вообще почитайте литературу по 1с++.

Оффлайн RomanKatPro

  • *
  • Сообщений: 3
  • РЕПУТАЦИЯ: 0
  • Регистрация: 2015-03-04
  • Сайт: 
  • Профессия: Программист 1С
Re: sql запрос 1с 7.7
« Ответ #2: 06 Мар 2015, 11:24 »
Прочитал, обдумал и решил. Спасибо.   
ТекстЗапроса="Select СпрТов.Code as Артикул,Товар as [Товар $Справочник.Товары],
      |isnull($Единицы.ВысКор,0) Высота,
      |isnull($Единицы.ГлбКор,0) Глубина,
      |isnull($Единицы.ШИрКор,0) Ширина,
      |КоличествоОстаток as Количество from $РегистрОстатки.РазмещениеТовара(:КонДата~,,Кладовая=:Кладовая,Товар,Количество) as Рег
      |left join $Справочник.Товары as СпрТов on СпрТов.id=Рег.Товар
      |left join $Справочник.Единицы Единицы on Единицы.PARENTEXT=Рег.Товар
      |order by СпрТов.Code
      |";

Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: sql запрос 1с 7.7
« Ответ #3: 09 Мар 2015, 16:23 »
не являюсь программистом 1с.
подскажите как отправить запрос из 1с 7.7 в Оракл и потом отобразить результат.

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

понятия сильного в этом не имею. есть строка подключения ("DRIVER={Microsoft ODBC for Oracle};UID=***;PWD=***;SERVER=******")

запрос будет такого вида Select article, name from mybase where article = &article
=======================================================================
заранее спасибо за советы!

Жми спасибо, если подсказал 8)

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: sql запрос 1с 7.7
« Ответ #4: 09 Мар 2015, 22:13 »
Connection = СоздатьОбъект("ADODB.Connection");
ConnectionString = "Provider=OraOLEDB.Oracle;Data Source=MyOracleDB;User Id=myUsername;Password=myPassword;CacheType=File";
Connection.ConnectionTimeOut = Таймаут;
Connection.Open(ConnectionString); 

ADODBCommand = СоздатьОбъект("ADODB.Command");
ADODBCommand.ActiveConnection = Connection;
ADODBCommand.CommandText      = ТекстЗапроса;

Рекордсет = СоздатьОбъект("ADODB.RecordSet");
Попытка
  Состояние("Выполнение запроса...");
  Рекордсет = ADODBCommand.Execute;
Исключение
   Сообщить(ОписаниеОшибки());
   Возврат;
КонецПопытки;



Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: sql запрос 1с 7.7
« Ответ #5: 10 Мар 2015, 10:54 »
а как вывести результат ?

сообщить (????);
Жми спасибо, если подсказал 8)

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: sql запрос 1с 7.7
« Ответ #6: 10 Мар 2015, 12:37 »
Пока Рекордсет.EOF() = 0 Цикл
  Сообщить(Рекордсет.Fields("<Здесь указываешь имя колонки из селекта>").Value);
КонецЦикла;

в вашем случае:
Пока Рекордсет.EOF() = 0 Цикл
  Сообщить(Рекордсет.Fields("article").Value);
КонецЦикла;


Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: sql запрос 1с 7.7
« Ответ #7: 10 Мар 2015, 12:53 »
спасибо, все получилось! :zebzdr:
Добавлено: 10 Мар 2015, 16:31

А как передать в запрос переменную из формы, например?
Where article = :article(переменная)
 и перед выполнением запроса я ввожу артикул и запрос выполняется с этим значением. :nhsrm:
Жми спасибо, если подсказал 8)

Последний раз редактировалось: BotMan; 10 Мар 2015, 16:31. Причина: Объединение сообщений

Оффлайн Herby

  • *****
  • Сообщений: 936
  • РЕПУТАЦИЯ: 164
  • КПД: 18%
  • Регистрация: 2010-08-31
  • Сайт: 
  • Профессия: Программист 7.7
Re: sql запрос 1с 7.7
« Ответ #8: 10 Мар 2015, 22:23 »
ну если Артикул это строковая переменная, то разве не судьба сразу в текст запроса его добавлять? ну к примеру:
ТекстЗапроса = Шаблон("тра-ля-ля Where article = '[Артикул]'"); 
// где Артикул это переменная или идентификатор реквизита формы, в котором
// хранится значение артикула

А передавать в параметре конечно можно, вот приблизительный пример:

ADODBCommand.Parameters.Append(ADODBCommand.CreateParameter("@article"   ,129,,,Артикул));
// и тогда в тексте запроса надо будет добавить:
|DECLARE @article varchar(9)
|SET @article = ?
|тра-ля-ля
|WHERE article =@article
// ну суть должна быть понятна, если что-то поподробней, то читайте справку в инете


Оффлайн BotMan

  • *
  • Сообщений: 45
  • РЕПУТАЦИЯ: 1
  • КПД: 2%
  • Регистрация: 2014-06-05
  • Сайт: 
  • Профессия: Ученик 1С
Re: sql запрос 1с 7.7
« Ответ #9: 11 Мар 2015, 11:40 »
Где-то затык. в Базе артикул имеет тип Varchar2[50], выполняется с ошибкой.... :dfbsdfbsdf:
	  
Соединение=СоздатьОбъект("ADODB.Connection");
Соединение.ConnectionString = "DRIVER={Microsoft ODBC for Oracle};UID=***;PWD=***;SERVER=mybase";
Соединение.ConnectionTimeout = 15;
Соединение.CursorLocation= 3;
артикул = 00022;
ТекстЗапроса = Шаблон("select name from mytable where article = '[Артикул]'");
Попытка
    Соединение.Open(Соединение.ConnectionString);
        Сообщить("Запрос...");
    Исключение       
    Сообщить("Невозможно установить соединение-"+ОписаниеОшибки());
КонецПопытки; 
       НаборЗаписей = Соединение.Execute(ТекстЗапроса);                       
 
НаборЗаписей.MoveFirst();
 
Пока НаборЗаписей.EOF()=0  цикл       
Сообщить("Товар: " + НаборЗаписей.Fields("name").Value);
НаборЗаписей.MoveNext();       
   
КонецЦикла;

 

       НаборЗаписей.Close();
       

Соединение успешно установлено.
НаборЗаписей.MoveFirst();
{C:\*****\******\DESKTOP\blabla.ERT(30)}: ADODB.Recordset: BOF или EOF имеет значение True, либо текущая запись удалена. Для выполняемой операции требуется текущая запись.
Жми спасибо, если подсказал 8)


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Реклама

* Последние вакансии

* Топ 10 авторов за месяц

Геннадий ОбьГЭС Геннадий ОбьГЭС
162 Сообщений
ilyay ilyay
75 Сообщений
oleg-x
56 Сообщений
alex0402
46 Сообщений
andron81_81
44 Сообщений
AIFrame
35 Сообщений
MuI_I_Ika MuI_I_Ika
33 Сообщений
Golickoff Golickoff
28 Сообщений
BuhRust
27 Сообщений
Dima Dddd Dima Dddd
26 Сообщений

* Кто онлайн

  • Точка Гостей: 845
  • Точка Скрытых: 0
  • Точка Пользователей: 14
  • Точка Сейчас на форуме:

* Облако тэгов

* Форум 1С с мобильного

* Инструменты

* Дополнительно

Поиск

 
SimplePortal 2.3.5 © 2008-2012, SimplePortal