24.12.2012 00:35
MIGUR
 
Добрый вечер товарищи.
Set 5.02.80.004
Возникла следующая проблема, для выгрузки отчетов для 1С необходимо в планировщике задать время выгрузки, но для работы планировщика нужна служба sql agent которая вместе с mssql express 2005 не поставляется.

Есть ли возможность запустить эту обработку вручную ?

Пока придумал запуск этой обработки только через sqlcmd но проверить возможность будет завтра перед открытием (если получиться отпишусь), может кто еще что посоветует ?

Спрошу еще один совет, столкнулся впервые с таким, всегда работало, останавливаю sql копирую папку DATA в DATA_OLD, запускаю sql, останавливаю sql удаляю DATA, переименовываю DATA_OLD в DATA, запускаю SQL и опа база повреждена и так со всеми попытками скопировать, останавливал полностью все службы сэта, тоже самое, да и если бы что то держало базу невозможно было бы скопировать.
24.12.2012 09:55
izuware
 
я пишу коммандный файл примерно с таким содержанием и его запихиваю в стандартный планировщик.
правишь под своё окружение и задачи и вперед!

rem бакуп баз, удаление файлов старше 35 дней
rem
set DRIVE=f:
%drive%
cd \sys
SET BACKUPDIR=%drive%\sys\backup\mssql
SET SQLQUERY=%drive%\sys\backup\_SQL.SQL
set LOGFILE=%drive%\SYS\backup\mssqlBAKLOG.txt
set SQLCMD="C:\Program Files\Microsoft SQL Server\90\Tools\Binn\"
set SQLCMD="c:\Program Files\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe"
set SRV=-S AS\SQLEXPRESS

rem удаляем файло старше 35 дней
forfiles /p %BACKUPDIR% /m *.bak /d -35 -c "cmd /c del /q @path"

rem
SET BASE=MASTER
echo BACKUP DATABASE [%BASE%] TO DISK = N'%BACKUPDIR%\%BASE%_%DATE%.bak' WITH NOFORMAT, NOINIT, NAME = N'Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10 > %SQLQUERY%

%SQLCMD% %SRV% -i %SQLQUERY% >%LOGFILE%



Добавлено через 4 минуты 6 секунд
по второй части вопроса: файлы логов и данных в одном каталоге?
24.12.2012 10:27
vitamin
 
Цитата:
MIGUR Спрошу еще один совет, столкнулся впервые с таким, всегда работало, останавливаю sql копирую папку DATA в DATA_OLD, запускаю sql, останавливаю sql удаляю DATA, переименовываю DATA_OLD в DATA, запускаю SQL и опа база повреждена и так со всеми попытками скопировать, останавливал полностью все службы сэта, тоже самое, да и если бы что то держало базу невозможно было бы скопировать.
Лёша, а ты что этим хочешь добиться?
24.12.2012 11:45
MIGUR
 
izuware


Спасибо за скрипт попробую под себя подогнать !

С первым вопросом разобрался, выгрузка совершилась на час позже чем была, думаю в яве проблема с переходом летнего на зимнее время, выпускали они для этого обновление, установлю последнюю версию.

Цитата:
vitamin Лёша, а ты что этим хочешь добиться?
Здравствуй Стат :) грубое копирование бд для открытия на другом компьютере.
24.12.2012 12:27
vitamin
 
Базу надо копировать отсоединением и присоединением, штатная функция sql, sp_attach sp_detach
27.12.2012 16:48
MIGUR
 
Обработка 1C Couples которая идёт вместе с сэт загружает товары всё хорошо.

Проблемы только с выгрузкой отчета по операционному дню в XML формате, порой необходимо выгрузить отчет за вчера за позавчера или раньше чем назначенное время в планировщике, но по той системе как реализовано это в последней версии сэт тех-поддержка ответила что невозможно, предложила только перевести время на день назад и посмотреть мб и выгрузиться.

Не буду всё расписывать, напишу как решил это я:

https://storage.olegon.ru/supermag/u...еты для 1С.rar

1) Открываем SQL Server Management Studio Express или у кого что.
2) SES -> Программирование -> Хранимые процедуры
3) правой кнопкой по папке "хранимые процедуры" и "Создать хранимую процедуру"
4) В открывшемся окне стираем всё что там написано и вставляем этот код:
SQL код:
CREATE PROC [dbo].[xp_report_for_1c_new]
@operday datetime
AS
set ANSI_NULLS ON
set QUOTED_IDENTIFIER OFF
GO
ALTER procedure [dbo].[xp_report_for_1c_new]
@operday datetime = null 
as 
set nocount on 
declare  @operdaystart int 
set @operdaystart = convert(int,convert(varchar(8),@operday,112))
--берем первые 5000 строк
SELECT top 5000 
   h.id cheqid
INTO 
   #cheque 
FROM 
   chequehead h 
 WHERE
     operday = ISNULL(@operdaystart,operday)

IF EXISTS(SELECT * FROM #cheque)
BEGIN

   select '<?xml version="1.0" encoding="windows-1251"?>' XML_HEADER
   select 
      1 TAG, 
      null parent,
      'Отчет' [REPORTHEAD!1!Desc],
      convert(int, null) [DAY!2!OPERDAY],
      convert(int, null) [CASH!3!CASHNUMBER],
      convert(varchar(20), null) [GOOD!4!GOODSITEM],
      convert(decimal(19,2), null) [GOOD!4!SUMMA],
      convert(decimal(19,2), null) [GOOD!4!QUANTITY],
      convert(decimal(19,2), null) [GOOD!4!PRICE],
      convert(decimal(19,2), null) [GOOD!4!PRICEWITHOUTDISC],
      convert(decimal(19,2), null) [GOOD!4!NDS],
      convert(varchar(10), null) [GOOD!4!GOODSUNIT]
   union all
   
   select distinct 2, 1,null,
      operday,
      null,
      null,null,null,null,null,null,null--,null
    from 
      chequehead h (nolock) 
      join chequepos p (nolock) on p.chequeid=h.id 
      JOIN #cheque h1 ON h1.cheqid = h.id
   union all
   
   select distinct 3, 2,null,
      operday,
      cash_code ,
      null,null,null,null,null,null,null--,null
    from 
      chequehead h (nolock) 
      join chequepos p (nolock) on p.chequeid=h.id 
      JOIN #cheque h1 ON h1.cheqid = h.id
    
   union all
   select 4, 3,null,
      operday,
      cash_code ,
      code goodsitem,
   --   cash_code ,
      convert(decimal(19,2),sum(p.summa)) summa,
      convert(decimal(19,3),sum(quant)) quantity,  
      convert(decimal(19,2),p.Price) PRICE,
      convert(decimal(19,2),p.PriceWithoutDisc) PRICEWITHOUTDISC,
      convert(decimal(19,2), NDSx1) NSD,
      convert(varchar(10), GoodsUnit) GoodsUnit
   from 
      chequehead h (nolock) 
      join chequepos p (nolock) on p.chequeid=h.id 
      JOIN #cheque h1 ON h1.cheqid = h.id
      left JOIN goodsindepart gd (nolock) ON gd.goodscode = p.Code 
      left JOIN depart d (nolock) ON d.departnumber = GrCode AND d.id = gd.departid
   group by 
      cash_code,
      operday,
      code,
      p.Price,
      PriceWithoutDisc,
      NDSx1,
      GoodsUnit

   order BY [DAY!2!OPERDAY], [CASH!3!CASHNUMBER], [GOOD!4!GOODSITEM]
   for xml explicit
END
5) Жмем выполнить и закрываем всё.
6) Открываем программу что в архиве, предварительно настроив инишник, выбираем дату и жмем кнопку.

28.12.2012 12:24
jurah
 
Крутая стыковка от КС без возможности выгрузки за предидущие дни... жесть..
31.12.2012 00:38
MIGUR
 
Небольшая ошибка закралась в том архиве, исправил, всё работает, отчеты за прошедшии дни выгрузили. Так же исходники, мало ли кому что подправить надо.

Программа: ExportTo1C.rar

Исходник (Delphi7): ExportTo1C Source.rar
Часовой пояс GMT +3, время: 23:12.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.