В распределенных информационных базах (РИБ) на платформе 1С 7.7 часто возникает проблема: автообмен запускается планировщиком или командным файлом в фоновом режиме, и пользователь не знает, завершился ли процесс успешно. Для неопытного пользователя отсутствие визуального подтверждения может привести к тому, что ошибки обмена будут замечены слишком поздно. Рассмотрим несколько эффективных способов, как сделать процесс обмена прозрачным и понятным.
Разберем самый надежный метод, основанный на штатных возможностях платформы. Мы можем заставить 1С записывать все события обмена в текстовый файл, который затем будет проанализирован. Для этого нам понадобится файл параметров с расширением .prm. Проанализируем содержимое такого файла:
[General]
Output = exchange_log.txt
Output = 1
Quit = 1
AutoExchange = 1
Разберем, что значат эти параметры:
Output — указывает путь к файлу, в который будет записываться протокол работы.Output = 1 — включает режим перезаписи лога (или добавления, в зависимости от настроек).Quit = 1 — заставляет Конфигуратор закрыться сразу после выполнения обмена.AutoExchange = 1 — инициирует сам процесс обмена.После завершения работы 1С мы можем программно проверить файл exchange_log.txt на наличие ключевых фраз, таких как "Загрузка данных завершена" или "Ошибок не обнаружено". Если этих строк нет, значит, произошел сбой.
Посмотрим на более простой вариант, который подходит, если пользователь готов вручную закрыть окно после проверки. Если в файле параметров или в командной строке не указывать параметр Quit = 1, то по окончании обмена Конфигуратор останется открытым. Пользователь увидит на экране протокол выполнения, где будет четко написано, прошел обмен или возникли ошибки. Это самый доступный метод для контроля «вручную».
Рассмотрим ситуацию, когда нам нужно программно понять, что именно пошло не так. 1С 7.7 записывает события обмена в Журнал регистрации. Мы можем настроить скрипт, который после завершения пакетного задания будет искать в Журнале регистрации записи с типом Обмен данными. Если последняя запись содержит информацию об ошибке, скрипт может вывести пользователю сообщение.
Для неопытного пользователя лучше всего работают всплывающие окна. Реализуем логику через VBS-скрипт, который будет запускать обмен и выводить результат. Проанализируем пример логики такого скрипта:
success.txt.1cv7s.exe.success.txt.MsgBox: «Обмен завершен успешно» или «ОШИБКА ОБМЕНА! Обратитесь к администратору».Такое окно невозможно пропустить, и оно дает однозначный ответ пользователю.
Выясним, существуют ли готовые решения, чтобы не писать скрипты самостоятельно. Одним из проверенных инструментов является УРБД Мастер. Это внешняя программа, которая берет на себя все функции управления обменом в 1С 7.7. Она позволяет:
Попробуем интегрировать проверку прямо в интерфейс программы, с которой работает пользователь. Мы можем добавить код в процедуру ПриНачалеРаботыСистемы в Глобальном модуле. При запуске 1С в обычном режиме программа будет проверять дату и время последнего созданного файла обмена или читать результат из файла лога. Если данные устарели (например, обмен не проходил более 24 часов), пользователю будет выдано предупреждение:
Процедура ПриНачалеРаботыСистемы()
// Простейшая проверка по дате файла лога
ПутьКЛогу = "C:\1C_Exchange\log.txt";
Если ФС.СуществуетФайл(ПутьКЛогу) = 1 Тогда
ФС.АтрибутыФайла(ПутьКЛогу, , , ВремяСоздания);
// Здесь можно добавить сравнение дат
Если (ТекущаяДата() - ДатаСоздания) > 1 Тогда
Предупреждение("Внимание! Обмен данными не выполнялся более суток!");
КонецЕсли;
КонецЕсли;
КонецПроцедуры
Для настройки надежного автообмена для неопытного пользователя лучше всего комбинировать методы. Во-первых, обязательно используйте файл параметров .prm для логирования. Во-вторых, используйте обертку в виде VBS-скрипта или пакетного файла, который после завершения обмена выдаст четкое визуальное уведомление. В-третьих, настройте проверку актуальности данных при входе пользователя в 1С, чтобы исключить ситуацию, когда пользователь проигнорировал ошибку в момент обмена.