Имя: Пароль:
1C
1С v8
Запуск Java-скрипт из 1С
0 olgerd666
 
21.07.14
15:37
День добрый!
Подскажите люди добрые, что делаю не так?
Есть файлик Ява-скрипта, формирующийся из 1С и отправляющий смски через гейт.
Если сформировать файлик из 1С и запустить его самому-вручную, то файл выполнится, смс отправится абоненту.
Но если сделать запуск скрипта из 1С:
КаталогПриложение = "C:\UT\SMS\JScript\batch.js" //формируется программно
ЗапуститьПриложение(КаталогПриложение, , Ложь);
То смс не отправится, файл сделает вид что исполнился.

Вопрос: Какие либо ключи необходимо указать чтобы запустить Ява-скрипт? или есть какое-то хитрое решение, либо кто сталкивался с подобным.
1 olgerd666
 
21.07.14
15:42
Текст Ява-Скрипта:

var LogFile;
var WSHShell = WScript.CreateObject("WScript.Shell");
var fso = new ActiveXObject("Scripting.FileSystemObject");
var fname = "C:\\UT\\SMS\\Files\\";
Main();
function Main()
{
    var f = fso.GetFolder(fname);
    var fc = new Enumerator(f.Files);

    LogOpen(fname + "\\log1.txt");

    for (; !fc.atEnd(); fc.moveNext())
{
        var f1 = fc.item();
        
        if(f1.Path.indexOf(".snpp") > 0)
        {
            var file = fso.OpenTextFile(f1.Path, 1, false);
            var str = file.ReadAll();
            file.Close();
            LogWrite(str);
            WSHShell.Run(str,0,true);
            LogWrite("Execute command from file: " + f1.name + " (" + f1.DateLastModified + ")");
        
            fso.DeleteFile(f1.Path);
        
            //WSHShell.Popup(str);
        }
    }

    LogClose();
}

function LogWrite(Text)
{
    var today = new Date();  // Get today's date.

    //LogFile.WriteLine("[" + today.toLocaleString() + "] " + Text);
    LogFile.WriteLine(Text);
}

function LogClose()
{
    LogFile.Close();
    var Logfile = "";
}

function LogOpen(LogPath)
{
    LogFile = fso.OpenTextFile(LogPath, 8, true);
}
2 Garykom
 
гуру
21.07.14
15:43
(0)

КомандаСистемы (System)
Синтаксис:
КомандаСистемы(<СтрокаКоманды>, <ТекущийКаталог>)
Параметры:
<СтрокаКоманды> (обязательный)
Тип: Строка. Команда системы.
<ТекущийКаталог> (необязательный)
Тип: Строка. Устанавливает текущий каталог на время выполнения команды.
Описание:
Вызывает на исполнение команду операционной системы, как если бы она была введена в командной строке.
Доступность:
Тонкий клиент, толстый клиент.
Примечание:
После загрузки Windows-приложения управление возвращается в 1С:Предприятие и исполнение модуля продолжается.
3 Garykom
 
гуру
21.07.14
15:44
А вообще переходи с дурацких гейтов на нормальные сайты типа smspilot.ru и подобные
4 Asmody
 
21.07.14
15:48
КомандаСистемы("cscript "+КаталогПриложение);
5 olgerd666
 
21.07.14
15:55
(2)(4) Пробовал, не помогло(
вызывает cmd, запускает JS, файлы смс чистятся, но не отправляются.
(3) Настраивал данное дело не я - суть задания:
"Есть файлик, он до этого был привязан к конкретному жесткому диску типа "С:\...\exec.js", запускался по регламентному заданию, теперь все с сервера переходят на РИБ, и мало ли у кого где-эта папка будет лежать, надо чтобы по нажатию кнопки отправлялась смс (а не по запланированному заданию)"
Поэтому я сделал чтобы файл JS формировался из 1С, из 1С создавалось тело письма а вот с запуском возникли проблемы.
Отдельно "созданный программно JS" смски отправляет через snpp.exe, потом удаляет.
Запущенный из 1С смски удаляет, но не отправляет.
6 Garykom
 
гуру
21.07.14
16:15
(5) грохни этот скрипт и выполняй запуск этого "snpp.exe" из 1С-ки
7 Garykom
 
гуру
21.07.14
16:16
+(6)
скрипт у вас был потому что было задание в шедулере а раз из 1С запускаешь то и запускай все оттуда...
8 Garykom
 
гуру
21.07.14
16:18
(1) еще пример лога приведи в который скрипт скидывает команды

скорее всего проблема в путях при вызове snpp.exe там
9 olgerd666
 
21.07.14
16:25
(6) Ок. попробую.

Лог выполненного из 1С скрипта:
C:\UT\SMS\snpp.exe +ххххххххх хх-.хххх.ххх."

Execute command from file: ххххххххх -04.snpp (Mon Jul 21 15:22:29 UTC+0400 2014)
10 olgerd666
 
21.07.14
18:20
(6) Все получилось, спасибо за подсказку решения)
Теперь кода 1 строка)
КомандаСистемы("C:\UT\snpp.exe +xxxxxxxxxxx SMS");
11 Garykom
 
гуру
21.07.14
18:27
(10) А кавычки в "SMS" учел?

Т.е. в тексте смс не должно быть кавычек или сглючит, лучше всего заменить их (" двойные кавычки) на одинарные (') или на пусто.

А еще лучше нормально работать с СМС шлюзом напрямую по его API (http или что там), а не через костыль в виде консольной проги ))
12 olgerd666
 
21.07.14
18:37
да это просто пример) в тексте СМС кавычек нет.
Возьму на заметку про "А еще лучше нормально работать с СМС шлюзом напрямую по его API (http или что там), а не через костыль в виде консольной проги ))"
13 AquaKosh
 
21.07.14
18:54
Особо не вникал, вариант так, на вскидку: есть программы, которые умеют компилить скрипты и, в частности, javascript в exe. Т.е. скомпилить в exe и запускать.
14 olgerd666
 
22.07.14
10:47
(13) Спасибо за вариант уже думал об этом - вариант не подходит, но вопрос уже решился методом (6) - избавиться от скрипта и обращаться напрямую к "snpp".