Автоматизация обмена данными в платформе 1С 7.7 является классической задачей, которая осложняется отсутствием встроенного механизма регламентных заданий, привычного пользователям восьмой версии. В условиях, когда системные администраторы накладывают строгие ограничения на использование исполняемых сценариев (бат-файлов) или прямой доступ к планировщику задач Windows, программисту приходится искать альтернативные и «дружелюбные» к системе безопасности решения. Рассмотрим подробнее доступные инструменты и методы организации автоматического обмена.
Прежде всего, разберем штатный механизм, заложенный разработчиками платформы 1С 7.7. Пакетный режим позволяет запускать конфигуратор с определенными параметрами для выполнения регламентных операций без участия пользователя. Даже если использование .bat файлов ограничено, параметры запуска можно прописать непосредственно в свойствах ярлыка или использовать в специализированных программах-стартерах.
Для запуска обмена через «Конвертацию данных» или УРБД нам понадобятся следующие ключи командной строки:
config — запуск в режиме конфигуратора;/d"ПутьКБазе" — указание пути к информационной базе;/n"ИмяПользователя" — имя пользователя с правами на обмен;/p"Пароль" — пароль пользователя;/@"ПутьКФайлуПараметров" — запуск пакетного режима с использованием внешнего текстового файла, где описаны действия.Проанализируем пример содержания файла пакетного режима для выполнения автообмена:
[General]
Output="C:\Logs\exchange.log"
Quit=1
CheckAndRepair=0
[AutoExchange]
SharedMode=1
ReadFrom=All
WriteTo=All
Этот метод считается максимально надежным, так как он поддерживается самой платформой. Однако он требует настройки прав доступа к файловой системе для записи логов.
Если администраторы готовы установить стороннее программное обеспечение с графическим интерфейсом, но против «самописных» скриптов, стоит обратить внимание на проверенные временем решения. Эти программы позволяют настроить расписание и параметры запуска в визуальном редакторе, что делает их понятными для системных инженеров.
Task Scheduler Windows кажется недостаточно функциональным.Рассмотрим ситуацию, когда внешние программы и скрипты полностью запрещены. В этом случае мы можем реализовать логику обмена внутри самой 1С 7.7. Суть метода заключается в создании специального пользователя (например, «Робот»), под которым система будет запущена постоянно.
Выясним, как это реализовать программно. В глобальном модуле или в форме специально созданной обработки мы используем встроенную функцию ОбработкаОжидания(). Эта функция позволяет вызывать процедуру обмена через строго заданный интервал времени.
Пример реализации в глобальном модуле:
Процедура ПриНачалеРаботыСистемы()
Если ИмяПользователя() = "Робот" Тогда
// Запускаем проверку обмена каждые 600 секунд (10 минут)
Форма.ОбработкаОжидания("ВыполнитьРегламентныйОбмен", 600);
КонецЕсли;
КонецПроцедуры
Процедура ВыполнитьРегламентныйОбмен()
// Здесь располагается код вызова обработки обмена данными
// Например, загрузка внешней обработки конвертации
ОткрытьФормуМодально("Отчет", , "C:\1C_Bases\ExtForms\AutoExchange.ert");
КонецПроцедуры
Основным преимуществом этого метода является то, что для администраторов это обычный сеанс работы 1С. Им нужно лишь один раз добавить ярлык запуска 1С в автозагрузку сервера или просто не закрывать сессию пользователя.
Посмотрим на ситуацию, когда запрет касается только файлов с расширением .bat. Часто системные политики безопасности более лояльны к .vbs (Visual Basic Script). Использование VBScript позволяет запускать 1С в «скрытом» режиме, что исключает появление лишних окон на рабочем столе сервера.
Разберем пример скрипта, который инициализирует запуск 1С:
Set WshShell = CreateObject("WScript.Shell")
' Запуск 1С в режиме предприятия с выполнением конкретной обработки
Command = """C:\Program Files\1Cv77\bin\1cv7.exe"" enterprise /d""C:\DB\"" /n""Robot"" /p""123"" /p""C:\Exchange.ert"""
WshShell.Run Command, 0, True
В данном примере параметр 0 означает запуск в скрытом окне, а True заставляет скрипт ждать завершения работы программы. Это гораздо более профессиональный подход, чем использование командных файлов.
Независимо от выбранного способа запуска, при автоматизации обмена в 1С 7.7 важно соблюдать несколько правил:
/m.ЗавершитьРаботуСистемы(0), чтобы сессия не «висела» в памяти сервера бесконечно.nssm (Non-Sucking Service Manager). Она позволяет превратить любой запуск 1С в полноценную службу Windows, которая будет стартовать вместе с ОС.Проанализировав все варианты, можно сделать вывод: при жестких ограничениях прав наиболее жизнеспособным решением является либо использование штатного пакетного режима через визуальный планировщик типа xStarter, либо реализация внутреннего таймера в самой конфигурации 1С.