Как запустить внешнюю обработку в 1С:Бухгалтерия 2.0 без открытия формы

Программист 1С v8.3 (Обычные формы) 1C:Бухгалтерия IT и автоматизация бизнеса
← На главную

При автоматизации процессов в старых конфигурациях 1С, таких как «Бухгалтерия предприятия 2.0» на платформе 8.2 (обычные формы), часто возникает необходимость запустить логику обработки автоматически. Это может быть выгрузка данных, обмен с сайтом или очистка логов. Рассмотрим подробнее, как реализовать выполнение кода без участия пользователя и без открытия лишних окон.

Способ 1. Использование события «ПриОткрытии» формы (Быстрый старт)

Этот метод часто называют «ленивым», так как он требует наличия формы, но позволяет имитировать отсутствие интерфейса для пользователя. Разберем по шагам, как это работает. Мы создаем форму, которая при попытке своего открытия выполняет полезную работу и тут же «самоуничтожается».

Проанализируем программный код внутри модуля формы обработки:


Процедура ПриОткрытии(Отказ)
    
    // Вызываем основную логику обработки
    ВыполнитьВыгрузкуДанных();
    
    // Устанавливаем Отказ в Истина, чтобы форма не отобразилась пользователю
    Отказ = Истина;
    
КонецПроцедуры

Процедура ВыполнитьВыгрузкуДанных()
    // Здесь располагается ваш код выгрузки
    Сообщить("Выгрузка успешно завершена!");
КонецПроцедуры

Важный нюанс: использование параметра Отказ = Истина является более правильным, чем вызов ЭтаФорма.Закрыть(), так как он предотвращает само создание окна в памяти. Если же вам нужно выполнить действие и закрыть всю систему 1С (например, при запуске через планировщик Windows), используйте метод ЗавершитьРаботуСистемы(Ложь).

Способ 2. Вызов через модуль объекта (Профессиональный подход)

Для реализации полноценной автоматизации, особенно если планируется запускать обработку регламентным заданием или из другого участка кода, лучше всего вынести логику в Модуль объекта. Это позволит работать с обработкой как с объектом, не создавая её визуальное представление.

Выполним следующие действия:

  1. Перенесем основной код из модуля формы в Модуль объекта.
  2. Обязательно добавим ключевое слово Экспорт к процедуре.
  3. В месте вызова программно создадим объект обработки.

Пример кода в Модуле объекта:


Процедура ВыполнитьАвтоматическуюВыгрузку() Экспорт
    // Логика, которой не нужен интерфейс
    ПутьКФайлу = "C:\Exchange\data.xml";
    // ... код выгрузки ...
    ЗаписьЖурналаРегистрации("ВнешняяОбработка.Выгрузка",,,,"Данные выгружены в " + ПутьКФайлу);
КонецПроцедуры

Теперь рассмотрим, как программно запустить эту процедуру из любого другого места (например, из другой обработки или общего модуля):


// Путь к файлу внешней обработки
Путь = "C:\Distr\MyProcessing.epf";
// Создаем объект без открытия формы
МояОбработка = ВнешниеОбработки.Создать(Путь, Ложь);
// Вызываем экспортную процедуру
МояОбработка.ВыполнитьАвтоматическуюВыгрузку();

Способ 3. Автоматизация через командную строку и планировщик задач

Если ваша задача — запускать выгрузку по расписанию в 1С 8.2, то проще всего воспользоваться планировщиком задач Windows. Для этого мы создадим команду запуска 1С с параметрами. Выясним, какие ключи нам понадобятся:

Пример строки запуска:

"C:\Program Files\1cv82\bin\1cv8.exe" ENTERPRISE /D "C:\Bases\Accounting" /N "Robot" /P "123" /Execute "C:\Scripts\Export.epf"

Чтобы 1С закрылась после выполнения, в модуле формы обработки в процедуре ПриОткрытии следует написать:


Процедура ПриОткрытии(Отказ)
    ВыполнитьВыгрузку();
    // Закрываем приложение полностью
    ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры

Особенности работы на сервере (SQL вариант)

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

Использование параметра запуска для гибкости

Иногда одну и ту же обработку нужно использовать и вручную (с формой), и автоматически (без формы). Разберем, как это реализовать с помощью функции ПараметрЗапуска. Мы можем передать в командной строке ключ /C "Auto" и проверять его при старте.


Процедура ПриОткрытии(Отказ)
    Если ПараметрЗапуска = "Auto" Тогда
        ВыполнитьВыгрузку();
        Отказ = Истина; // Не открываем форму
    КонецЕсли;
    // Если параметр не "Auto", форма откроется в обычном режиме
КонецПроцедуры

Таким образом, мы рассмотрели все основные способы запуска логики внешней обработки в конфигурации «Бухгалтерия предприятия 2.0». Выбор метода зависит от ваших целей: для разовой автоматизации подойдет Отказ = Истина в форме, а для системных интеграций лучше использовать экспортные методы модуля объекта и планировщик задач.

← На главную