При регулярном переносе сведений (например, данных о сотрудниках) между информационными базами «Зарплата и Кадры 7.7» и «Бухгалтерский учет 7.7» ручной запуск внешних обработок отнимает время и может приводить к ошибкам из-за человеческого фактора. Разберем по шагам, как полностью автоматизировать процесс выгрузки в файл DBF и последующей загрузки по расписанию с помощью стандартного Планировщика задач Windows, командного файла (bat/cmd) и встроенного языка 1С 7.7.
Для запуска платформы 1С:Предприятие 7.7 в пакетном режиме используется исполняемый файл 1cv7.exe (или 1cv7s.exe для сетевой/SQL-версии) со специальными ключами командной строки. Рассмотрим основные параметры:
enterprise указывает на запуск базы в режиме «1С:Предприятие»./D"ПутьКБазе" указывает каталог с файловой базой или каталогом регистрации SQL-базы./N"ИмяПользователя" и /P"Пароль" задают учетную запись, под которой выполняется сеанс. Рекомендуется создать отдельного служебного пользователя, например, Робот или AutoExchange./C"СтрокаПараметра" позволяет передать в сеанс произвольную текстовую строку, которую затем можно прочитать встроенной функцией ПараметрЗапуска().Посмотрим на пример командного файла (exchange.bat), который последовательно запускает файловую базу ЗиК для выгрузки, а затем базу Бухгалтерии на SQL для загрузки:
@echo off
rem Шаг 1: Запуск выгрузки из ЗиК 7.7 (файловая)
"C:\Program Files (x86)\1Cv77\BIN\1cv7.exe" enterprise /D"D:\1C_Bases\ZIK" /N"Робот" /P"12345" /C"ExportStaff"
rem Шаг 2: Запуск загрузки в Бухгалтерию 7.7 (SQL)
"C:\Program Files (x86)\1Cv77\BIN\1cv7s.exe" enterprise /D"D:\1C_Bases\BuhSQL" /N"Робот" /P"54321" /C"ImportStaff"
Чтобы база при входе служебного пользователя автоматически инициировала регламентное действие, проанализируем предопределенную процедуру ПриНачалеРаботыСистемы() в глобальном модуле конфигурации.
Важный нюанс: синтаксис функции открытия зависит от того, является ли обработка встроенной в конфигурацию или внешним файлом .ert:
ОткрытьФорму("Обработка.ИмяВМетаданных")..ert) в 1С 7.7 используется вызов: ОткрытьФорму("Отчет", КонтекстИлиПараметр, "ПолныйПутьКФайлу.ert"). Тип "Отчет" платформенно применяется как к отчетам, так и к внешним обработкам.Рассмотрим пример кода в процедуре ПриНачалеРаботыСистемы() глобального модуля:
Процедура ПриНачалеРаботыСистемы()
// Проверяем параметр запуска или имя пользователя
Если (ИмяПользователя() = "Робот") ИЛИ (ПараметрЗапуска() = "ExportStaff") Тогда
// Открываем внешнюю обработку выгрузки
ОткрытьФорму("Отчет", "АвтоРежим", КаталогИБ() + "ExtForms\ExportToDBF.ert");
КонецЕсли;
КонецПроцедуры
Частая ошибка — размещение команды ЗавершитьРаботуСистемы(0) сразу после вызова ОткрытьФорму() в глобальном модуле. Так как открытие формы происходит асинхронно, платформа 1С завершит работу еще до того, как обработка успеет прочитать или записать данные.
Правильный подход заключается в переносе логики выгрузки/загрузки и последующего завершения в модуль самой внешней обработки — в предопределенную процедуру ПриОткрытии():
Процедура ПриОткрытии()
// Проверяем параметр формы или глобальный параметр запуска
Если (Форма.Параметр = "АвтоРежим") ИЛИ (ПараметрЗапуска() = "ExportStaff") Тогда
// Выполняем экспорт данных в DBF
ВыполнитьЭкспорт();
// Завершаем сеанс 1С без вывода интерактивных подтверждений
ЗавершитьРаботуСистемы(0);
КонецЕсли;
КонецПроцедуры
Аналогичным образом настраивается обработка загрузки в информационной базе «1С:Бухгалтерия».
Выясним возможные сложности, с которыми можно столкнуться при регулярной автоматизации обменов в среде Windows:
Предупреждение(), Вопрос() или возникнет необработанное исключение, процесс 1С отобразит модальное окно и заблокируется в памяти. Все протоколирование должно вестись либо через вывод Сообщить(), либо записью в отдельный текстовый файл журнала (с использованием объекта Текст).Чтобы избежать запуска интерактивного интерфейса и разделения задачи на выгрузку в промежуточный DBF-файл и последующую загрузку, можно настроить прямой перенос через COM/OLE. База ЗиК может сама подключиться к SQL-базе Бухгалтерии с помощью СоздатьОбъект("V77S.Application"), найти необходимые элементы справочника «Сотрудники» и синхронизировать их в рамках единой процедуры.