Автор Тема: Как заставить Consultant+ автообновляться и отсылать файл  (Прочитано 9075 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Fray

  • Администратор
  • Олдфаг
  • *****
  • Сообщений: 6668
  • Рейтинг: 58
  • Пол: Мужской
    • Просмотр профиля
    • IT-Бложек
  • Откуда: Петербург
cons.exe /adm /receive_inet /base* /yes /defbrowser /noproxy
MCSE: Messaging, MCSE: Communication, MCSE: Productivity, MCSA: Office 365, MCPS
my blog - http://it-blojek.ru

Оффлайн shs

  • Модератор
  • Ветеран
  • *****
  • Сообщений: 4401
  • Рейтинг: 89
    • Просмотр профиля
    • ShS's blog
  • Откуда: Default city
всё равно не отсылает и не обновляет.. видимо надо статью на твоем бложеке обновить. Тестировал давно свое решение?
Да оно работает уже много лет.

Оффлайн ravencrow

  • Новичок
  • *
  • Сообщений: 1
  • Рейтинг: 0
  • Пол: Мужской
    • Просмотр профиля
  • Откуда: Россия
Рабочий и проверенный вариант.

1. Открываем блокнот и вставляем следующий текст:
////////////////////////////////////////////////////////////////////////////
// JScript 20220217 shs
// Формирование и отправка на e-mail отчета "Консультатн+"
//
///////////////////////////////////////////////////////////////////////////

strPath2RootCons = "D:\\Consultant"; //Указываем свой абсолютный путь к корневой папке, в которую был установлен "Консультант+"

strPathFromRootCons = "RECEIVE"; //Относительный путь (относительно папки strPath2RootCons) к папке,
//в которой "Консультант+" создает файл cons*.USR

strFileMask = "^cons.+"; //Регулярное выражение для поиска файла,
//подлежащего отправке по электронной почте

mailaddrTo = "test@mail.ru"; //e-mail, на который будем отправлять письмо

//Проверяем существование в заданной папке файла,
//соответствующего шаблону, хранящемуся в strFileMask
strFileName=GetFileName(strPath2RootCons+"\\"+strPathFromRootCons,strFileMask);
if (strFileName=="") {
//если файл не существует, то его надо создать
//путем запуска CONS.EXE /usr /base*
WshShell = WScript.CreateObject("WScript.Shell");
WshShell.Run(strPath2RootCons+"\\cons.exe /usr /base*", 1, true);
}
//Снова проверяем наличие нужного нам файла (создался ли?)
strFileName=GetFileName(strPath2RootCons+"\\"+strPathFromRootCons,strFileMask);
if (strFileName!="") {
//Если файл найден, то отправляем его адресату
//по email
objEmail = WScript.CreateObject("CDO.Message"); //создаем объект CDO.Message
objEmail.From = "user@inbox.ru"; //адрес отправителя
objEmail.To = mailaddrTo; //адрес получателя
objEmail.BodyPart.CharSet = "windows-1251"; //задаем кодовую страницу сообщения
objEmail.Subject = "Название вашей организации"; //тема письма
objEmail.Textbody = "Файл отчета обновления Консультант";
objEmail.AddAttachment(strFileName); //добавляем к письму вложение: файл

//Зададим значения для полей конфигурации
with (objEmail.Configuration.Fields) {
Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2; //посылать сообщения по сети, используя SMTP
Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.inbox.ru"
Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465;
Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1; // используем basic authentication
Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "user"; //имя пользователя
Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "password"; //пароль пользователя
Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1; //используем ssl
Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60; //таймаут
Update();
}
try {
objEmail.Send();
}
catch(e) {
WScript.Echo(e.number); //выводим номер ошибки
WScript.Echo(e.message); //выводим соощение об ошибке
}

//Функция, которая ищет в указанной папке файл, согласно заданной маске (маска задается в виде регулярного выражения)
//Если таковой файл находится в заданной папке, то функция вернет его полное имя, иначе — пустую строку

function GetFileName(strPath2File, strFileSpec)
{
//создаем объект FileSystemObject
var fso = new ActiveXObject("Scripting.FileSystemObject");

//создаем объект RegExp
var regexFileName= new RegExp (strFileSpec,"i");

//получаем объект — целевую папку
var objFolder = fso.GetFolder(strPath2File);

//получаем коллекцию файлов в целевой папке
var colFiles = new Enumerator (objFolder.Files);
var strFileName="";

//перебираем все файлы в коллекции
for(;!colFiles.atEnd();colFiles.moveNext()) {

//проверяем соответствие текущего файла заданному шаблону
if (regexFileName.test(colFiles.item().Name)) {
strFileName=colFiles.item();
}
}
return(strFileName);
}
}
Данные пути к папке консультант и настройки почты вводим свои.
Сохраняем файл с именем send_consultant и расширением .js.
Файл .js необходимо сохранить в кодировке windows-1251 иначе тема и текст письма будет приходить с кракозябрами вместо русских букв.
Для смены кодировки файла можно воспользоваться Notepad++.
Сохраняем send_consultant.js например на диск D.

2. Открываем блокнот и вставляем следующий текст:
D:/Consultant/cons.exe /adm /receive_inet /base* /yes /defbrowser /noproxy
D:/send_consultant.js
У себя проверьте правильность путей.
Сохраняем файл, например, с именем update_consultant и расширением .bat

3. Создаем задачу в Планировщике заданий, задаем частоту запуска и указываем путь к update_consultant.bat
« Последнее редактирование: 22 февраля 2022, 13:19:28 от ravencrow »