Форум OlegON > Программы и оборудование для автоматизации торговли > Системы автоматизации торговли > Супермаг Плюс (Супермаг 2000)

Авто изменение даты запрета редактирования документов : Супермаг Плюс (Супермаг 2000)

23.11.2024 1:29


29.10.2006 04:55
Автоматическое изменение даты запрета редактирования документов, после запуска скрипта в Административном модуле можно назначить задание "Движение даты запрета". Кому надо, поправляйте, "SYSDATE-2" количество дней от текущей даты - выставляем какое надо значение.
99- это ID списка заданий (не самих заданий), перед запуском проверить, есть ли уже с таким номером, а то заменит


Код:
declare
  I             Number(10);
  X            Number(10);
  MySQL    varchar(1000);
 
begin


  MySQL := 'begin update supermag.sssysinfo set paramvalue = TO_CHAR(SYSDATE-2,''dd.mm.yyyy'') where paramname= ''ClosedPeriod''; Commit; end;';

   select count(*) into i from supermag.sscontrolfunctions
     where ID  = 99;
  If i = 0 Then
    insert into supermag.sscontrolfunctions (FNTYPE, ID, TITLE)
    values ('SS', 99, 'Движение даты запрета');
  end if;

 select count(*) into x from supermag.saschedule
  where supermag.saschedule.ID = 99;

  if x = 0 Then
    insert into supermag.saschedule (ID, WHAT)
      values (99, MySQL);
   else
    update supermag.saschedule set WHAT=MySQL where ID=99;
  end if;

end;
30.04.2013 08:35
Добрый день, актуальна ли эта информация на данный день(СМ+1.029.2 sp4 ORACLE_11G_v11.2.0.2_R2) ?
Если да то что собственно с этим делать, пробовал записать в скрипт и выполнить через sqlplus, но ничего не вышло....
30.04.2013 08:44
Не пробовал, поскольку предпочитаю это делать внешними средствами. В Optimizer-4 (функционал) это есть.
Если квалификация позволяет только в скрипт запихнуть, то рекомендую не делать этого.
Если есть желание разобраться - опиши подробнее, что значит "ничего не вышло". Еще раз подчеркну, что дописывать ID в таблицы супермага - плохая идея. Если, конечно, есть хоть малейшая вероятность, что версия будет обновляться.
30.04.2013 08:55
Загонять всё в планировщик задач супермага - дело на любителя.
Мне хватало и в обычный виндовозный планировщик задачу добавить:

date_change.cmd
Код:
@echo off
echo ------------------------------- >> db_date.log
set nls_lang=american_america.cl8mswin1251
SET ORACLE_SID=DBCO
sqlplus.exe supermag/qqq@dbco @db_date.sql
echo Base %oracle_sid% %date% %time% >> db_date.log
db_date.sql
Код:
 
update sssysinfo set PARAMVALUE=TO_CHAR((sysdate-30),'dd.mm.yyyy') where PARAMNAME='ClosedPeriod';
commit;
exit;
07.05.2013 07:57
Поступили аналогично, только вместо батника в вызовом sqlplus свой экзешник написали :)
07.05.2013 08:18
Батник универсальнее и исходники не потеряешь :)
07.05.2013 10:54
Цитата:
OlegON Батник универсальнее и исходники не потеряешь :)
Там исходник на 20 строчек :)
Код:
using System;
using System.Data;
using System.Data.OracleClient;

namespace LC
{
    class Program
    {
        
        static void Main(string[] args)
        {
            if (args.GetLength(0) == 2)
            {
                string storeName = args[0];
                string packetName = args[1];
                string connString = string.Format("Data Source={0};User ID=supermag;Password = xxxxxx;Unicode=True", storeName);
                using (var conOra = new OracleConnection(connString))
                {
                    conOra.Open();
                    using (var cmd = new OracleCommand(packetName, conOra))
                    {
                        cmd.CommandType = CommandType.StoredProcedure;
                        try
                        {
                            cmd.ExecuteNonQuery();
                            Console.Write("Done \n");

                        }
                        catch (Exception ex)
                        {
                            Console.Write(ex.Message);
                        }
                        finally
                        {
                            conOra.Close();
                        }
                    }
                }
            }
            else
            {
                Console.Write("Wrong arguments\n");
                Console.Write("Use LC DBName OraclePacketName\n");
            }
        }
    }
}
17.05.2013 15:44
Цитата:
OlegON что значит "ничего не вышло".
Происходил переход на другую строку с ожиданием ввода команды (путь к скрипту прописан был правильно и ";" стояла...)

Думаю я тоже воспользуюсь батником, большое спасибо!
17.05.2013 17:24
Цитата:
Ринат Происходил переход на другую строку с ожиданием ввода команды (путь к скрипту прописан был правильно и ";" стояла...)
/
забыл, значит :)
17.05.2013 18:17
Цитата:
BEGIN
DBMS_SCHEDULER.CREATE_JOB (
job_name => 'J_CLOSED_PERIOD',
job_type => 'PLSQL_BLOCK',
job_action => 'update sssysinfo set PARAMVALUE=TO_CHAR((sysdate-30),'dd.mm.yyyy') where PARAMNAME='ClosedPeriod'; commit;',
repeat_interval => 'freq=daily;byhour=06;byminute=0;bysecond=0',
enabled => TRUE
);
END;
/
Я бы в job засунул.
Часовой пояс GMT +3, время: 01:29.

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