Консультация № 143700
12.09.2008, 08:09
0.00 руб.
0 3 2
Составлял ли кто-нибудб SQL-запросы в 1с? Подскажите примеры использвания языка sql в 1С.

Обсуждение

Неизвестный
12.09.2008, 08:31
общий
это ответ
Здравствуйте, Оксана/kasy!
Если такая хорошая статья по адресу http://www.script-coding.info/Direct_queries.html
+ есть конструктор запросов http://www.script-coding.info/qryMaker.html
Неизвестный
12.09.2008, 08:35
общий
это ответ
Здравствуйте, Оксана/kasy!
Для работы с прямыми запросами SQL необходима внешняя компонента 1cpp.dll. Найти ее, а также необходимую документацию к ней можно по адресу:http://1cpp.ru/index.php/Main
По этому адресу можно почитать о загрузке внешних компонент и о 1cpp.dll в частности:http://kb.mista.ru/article.php?id=419&.
Ниже привожу рабочий запрос на SQL в отчете 1С.

Приложение:
Запрос1 = СоздатьОбъект("ODBCRecordset");
ТекстЗапроса="
|SELECT SUM(Выборка.Сумма) As ОбщСумма
|FROM (SELECT
| Жур.IDDoc as [Док $Документ],
| Жур.IDDocDef as Док_вид,
| CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок,
| $Док.СуммаСчета As Сумма
| FROM
| _1SJourn Жур
| INNER JOIN
| $Документ.Счет as Док ON Док.IDDoc = Жур.IDDoc
| WHERE
| CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) = :ДатаДоговора AND
| Жур.IDDocDef = $ВидДокумента.Счет AND
| $Док.Договор=:ТекДоговор~) AS Выборка
|";
Запрос1.УстановитьТекстовыйПараметр("ДатаДоговора",ТекЭлем.ДатаДоговора);
Запрос1.УстановитьТекстовыйПараметр("ТекДоговор",ТекЭлем);
ТабЗапроса1=Запрос1.ВыполнитьИнструкцию(ТекстЗапроса);

ТабЗапроса1.ВыбратьСтроки();
Неизвестный
21.09.2008, 17:20
общий
Вот пример чтения файла .mdb
Без всяких внешних компонент.
Операционная система Windows 2K,XP,2003
Попытка//Пытаемся узнать номер АЗС
Connection=CreateObject("ADODB.Connection");
ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source="+СокрЛП(СтрФайл);
Connection.Open(ConnectionString);
Cmd=CreateObject("ADODB.Command");
Cmd.ActiveConnection=Connection;
Исключение
Предупреждение("Не удалось установить соединение с БД");
Возврат;
КонецПопытки;
Cmd.CommandText="SELECT b.id_azs, b.n_report, Format(b.startdate,'dd/mm/yyyy hh:nn:ss') as startdata, Format(b.enddate,'dd/mm/yyyy hh:nn:ss') as enddata, b.closedSmena
|FROM journal b";
САЗС=СоздатьОбъект("ТаблицаЗначений");
САЗС.НоваяКолонка("ИдАЗС","Число",15,0,"ИдАЗС",10);
САЗС.НоваяКолонка("НомерОтчета","Число",15,0,"Номер Zотчета",20);
САЗС.НоваяКолонка("НачДата","Дата",,,"ДатаНачалаСмены",20);
САЗС.НоваяКолонка("НачВремя","Число",5,0,"ВремяНачалаСмены",0);
САЗС.НоваяКолонка("КонДата","Дата",,,"ДатаКонцаСмены",20);

Rs = CreateObject("ADODB.RecordSet");
Rs = Cmd.Execute;
Попытка
Rs.MoveFirst();
Пока Rs.EOF() = 0 do
Если Rs.Fields("closedSmena").Value=1 Тогда
САЗС.НоваяСтрока();
САЗС.ИдАЗС=Rs.Fields("id_azs").Value;
САЗС.НомерОтчета=Rs.Fields("n_report").Value;
САЗС.НачДата=Дата(Лев(Rs.Fields("startdata").Value,10));
САЗС.НачВремя=Число(Сред(Rs.Fields("startdata").Value,12,2));
САЗС.КонДата=Дата(Лев(Rs.Fields("enddata").Value,10));
САЗС.НомерОтчета=Rs.Fields("n_report").Value;
КонецЕсли;
Rs.MoveNext();
КонецЦикла;
Исключение
Склад="";
СтрФайл="";
Connection.Close();
Предупреждение("Ошибка чтения данных. Вероятно, данный отчет совсем пустой");
Возврат;
КонецПопытки;
Форма ответа