Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Горячая тема (более 10 ответов) Автоматизация запроса (число прочтений - 3993 )
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Автоматизация запроса
24. Июня 2008 :: 07:25
Печать  
Добрый день. До конца не уверен, что моя тема отностится к этому разделу - но прошу не пинать, т.к. в 1С не очень разбираюсь.
Необходимо по данным из 1С  строить график (реального времени, т.е. хотябы раз в 30 мин - 1 час обнавлять данные). Сейчас в тестовом варианте запрос я выполняю через вкладку ОТЧЕТЫ - УНИВЕРСАЛЬНЫЕ -ПОСТРОИТЕЛЬ ЗАПРОСОВ и там выбираю условия для выборки. Получается такой запрос:
Код
Выбрать все
Период с ВыбНачПериода по ВыбКонПериода;
Поле1 = Документ.ЗаявРаб.ТекущийДокумент;
Поле2 = Документ.ЗаявРаб.ТекущийДокумент.НомерДок;
Поле3 = Документ.ЗаявРаб.ДатаВып;
Поле4 = Документ.ЗаявРаб.ДатаСозд;
Поле5 = Документ.ЗаявРаб.ТехГруппаОткуда;
Поле6 = Документ.ЗаявРаб.Выполнено;
Поле7 = Документ.ЗаявРаб.ТехГруппа;
Функция Кол = Счётчик();
группировка Поле1;
условие( ((Поле7= спУсл[1] )  или (Поле7= спУсл[2] )  или (Поле7= спУсл[3] )  или (Поле7= спУсл[4] )  или (Поле7= спУсл[5] ) ) и (Поле4>=спУсл[6] ) ); 


Реально ли подобный запрос автоматизировать и выполнять без использования 1С напрямую к БД? Что бы результат просто писался в текстовый файл.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Автоматизация запроса
Ответ #1 - 24. Июня 2008 :: 07:29
Печать  
А база SQL?
  
Наверх
ICQ  
IP записан
 
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Re: Автоматизация запроса
Ответ #2 - 24. Июня 2008 :: 07:31
Печать  
Да
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Автоматизация запроса
Ответ #3 - 24. Июня 2008 :: 07:34
Печать  
Так то запрос такой написать можно.
А что у тебя за условия там? Как ты эти условия собираешся менять без 1с? Или это какие-то константы?

  
Наверх
ICQ  
IP записан
 
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Re: Автоматизация запроса
Ответ #4 - 24. Июня 2008 :: 07:39
Печать  
В данном запросе все поля постоянные, кроме даты начала выборки (да и ее можно не трогать, а выставить один раз).
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Автоматизация запроса
Ответ #5 - 24. Июня 2008 :: 07:40
Печать  
drug писал(а) 24. Июня 2008 :: 07:39:
В данном запросе все поля постоянные, кроме даты начала выборки (да и ее можно не трогать, а выставить один раз).


Тогда читай доку по прямым запросам и вперед!
  
Наверх
ICQ  
IP записан
 
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Re: Автоматизация запроса
Ответ #6 - 24. Июня 2008 :: 07:50
Печать  
Да я собственно не програмист 1С, я тока должен принять данные из 1С и обработать их с помощью perl и выдать график через php в браузер. Просто хочу понять, что мне надо сказать нашим 1С программистам, что бы хоть поверхностно понимать, о чем буду говорить.
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Автоматизация запроса
Ответ #7 - 24. Июня 2008 :: 07:58
Печать  
drug писал(а) 24. Июня 2008 :: 07:50:
Да я собственно не програмист 1С, я тока должен принять данные из 1С и обработать их с помощью perl и выдать график через php в браузер. Просто хочу понять, что мне надо сказать нашим 1С программистам, что бы хоть поверхностно понимать, о чем буду говорить.


Если знаешь SQL то можно 1с вообще не трогать. Структура базы 1с хранится в файле 1Cv7.DDS
  
Наверх
ICQ  
IP записан
 
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Re: Автоматизация запроса
Ответ #8 - 24. Июня 2008 :: 08:07
Печать  
Nick писал(а) 24. Июня 2008 :: 07:58:
Если знаешь SQL то можно 1с вообще не трогать. Структура базы 1с хранится в файле 1Cv7.DDS

Вот это приятно услышать.
Вообще 1С как то странно работает. Когда я через нее делаю выше приведенный запрос, то она у меня зависает минут на 15-20 и отъедает 45% процессорного времени, что в это время она делает??? ведь по идее запрос должен обрабатываться в SQL и выдаться результат. Откуда такая неоправданная загрузка ЦП
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Автоматизация запроса
Ответ #9 - 24. Июня 2008 :: 08:11
Печать  
drug писал(а) 24. Июня 2008 :: 08:07:
Nick писал(а) 24. Июня 2008 :: 07:58:
Если знаешь SQL то можно 1с вообще не трогать. Структура базы 1с хранится в файле 1Cv7.DDS

Вот это приятно услышать.
Вообще 1С как то странно работает. Когда я через нее делаю выше приведенный запрос, то она у меня зависает минут на 15-20 и отъедает 45% процессорного времени, что в это время она делает??? ведь по идее запрос должен обрабатываться в SQL и выдаться результат. Откуда такая неоправданная загрузка ЦП


Быть может иммено поэтому хотя и нелзя сказать наверняка и появилсь 1с++ и прямые запросы к БД Улыбка
  
Наверх
ICQ  
IP записан
 
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Re: Автоматизация запроса
Ответ #10 - 24. Июня 2008 :: 08:20
Печать  
Nick писал(а) 24. Июня 2008 :: 08:11:
Быть может иммено поэтому хотя и нелзя сказать наверняка и появилсь 1с++ и прямые запросы к БД Улыбка

Настало время включить "тормоз" Улыбка 1с++ как то отличается от нашей 1С:Предприятие 7.7 для SQL + FormEx v2.0.5.82 (это из вкладки "О программе"). А то может наша и не поддерживает прямы запросы?
  
Наверх
 
IP записан
 
Nick
God Member
*****
Отсутствует



Сообщений: 1599
Местоположение: г.Новокузнецк
Зарегистрирован: 21. Февраля 2007
Пол: Мужской
Re: Автоматизация запроса
Ответ #11 - 24. Июня 2008 :: 08:29
Печать  
1с++ это внешняя компонента для 1с
Начни отсюда http://www.1cpp.ru/index.php/Main
  
Наверх
ICQ  
IP записан
 
drug
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 7
Зарегистрирован: 24. Июня 2008
Re: Автоматизация запроса
Ответ #12 - 24. Июня 2008 :: 08:31
Печать  
Спасибо
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Автоматизация запроса
Ответ #13 - 24. Июня 2008 :: 09:21
Печать  
Вообще не понял зачем человеку 1С++.
1С не занимается и не планирует, данные на SQL...

Возьми любой способ подключения к SQL из тех программ, которыми занимаешься
и простенький SELECT.
Или уже других способов подключаться к SQL, как кроме как через 1С уже нет?

Как фактически называется таблица и поля - у ваших программистов 1С или в файле 1Cv7.DDS как уже сказали.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Автоматизация запроса
Ответ #14 - 24. Июня 2008 :: 09:44
Печать  
Думаю, что его 1С-программисты нифига не знают о запросах Скуля, а тем более о ДДС-файле Печаль
Поэтому и возникают подобные проблемы.
ИМХО раз данные от 1С, то и выводить их или хотя бы подготавливать должны 1С-программисты Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Arta
1c++ power user
Отсутствует



Сообщений: 2537
Местоположение: Нижний Новгород
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Автоматизация запроса
Ответ #15 - 24. Июня 2008 :: 11:05
Печать  
Код
Выбрать все
use Text::Iconv;
use strict;
use DBI;
use CGI;
use Math::Base36 ':all';
use DateTime;

my $query = new CGI;
my $win_to_koi=Text::Iconv->new('windows-1251', 'koi8-r');
my $koi_to_win=Text::Iconv->new('koi8-r', 'windows-1251');
my (@rez, $sum, $status, $model, $sn, $client, $nomerdoc, $problem, $brand, $vendor, $iddoc, $id, $descr, $email, $tel, $person, $event_value);

print $query->header(-type=>'text/html',-charset=>'koi8-r');

my $doc_no  = $query->param('cid');
my $access  = $query->param('access');
my $serial_no  = $query->param('sernum');
my $ip  = $query->param('ip');
my $wap = $query->param('wap');

my $login = $query->param('login');
my $passwd = $query->param('passwd');

my $parent_id  = $query->param('parent_id');
my $tree_id  = $query->param('tree_id');

my $server   = '192.168.0.35';
my $database = 'TC';
my ($sql_query, $sth, $sth1);

my $dbh = DBI->connect("dbi:Sybase:$server", 'login', 'pass');
($dbh->do("use $database") != -2) || error("The database <b>$database</b> doesn't exist");

if(!$login) {
	  $sql_query = "SELECT
				Doc.IDDOC AS iddoc,
				Doc.sp6321 AS status,
				Model.DESCR AS model,
				SN.CODE AS sn,
				CASE Doc.sp6102 WHEN '     I    ' THEN RTRIM(Doc.sp6759) ELSE RTRIM(Client.DESCR) END AS client,
				CASE Vendor.DESCR WHEN 'Siemens' THEN 'BenQ Siemens' ELSE Vendor.DESCR END AS Vendor,
				Doc.sp6615 AS Brand,
				Doc.sp6095 AS problem
		    FROM dh6091 AS Doc (NOLOCK)
		    JOIN _1SJOURN AS J (NOLOCK) ON Doc.IDDOC = J.IDDOC
		    JOIN sc33 AS Model (NOLOCK) ON Model.ID = Doc.sp6092

и так далее...

и в конце:

$sth = $dbh->prepare($sql_query);
$sth->execute;
@rez = $sth->fetchrow_array;
 

  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать