Данный метод удобен, когда требуется обмениваться с перефирийными базами один раз в сутки (например, ночью), и когда компьютер на ночь не выключается. Эта публикация представлена как пример, каждый может переделать данное решение под собственные нужды.
1) Потребуется батник, запускающий 1С под пользователем Obmen.
Пример батника для файловой базы: "C:\Program Files\1cv82\common\1cestart.exe" enterprise /F"D:\1C" /NObmen /Pпароль /Execute "D:\1C\ObmenRIB.epf"
Предварительно в 1С должен быть настроен автоматический обмен при запуске 1С данным пользователем (см.картинку).
В данном примере батника (в самом конце) указана обработка ObmenRIB.epf, которая запускается после выполнения обмена.
2) Создаем в конфигураторе внешнюю обработку ObmenRIB.epf.
Суть обработки заключается в следующем:
При открытии обработка проверяет, была ли изменена конфигурация. Если нет, то завершаем работу, если конфигурация была изменена, то необходимо её обновить. Для этого программно создаем ещё один батник и программно запускаем его. Данный батник будет убивать все процессы 1С (в том числе и этот), запускать конфу, обновлять её и снова запускать программу под пользователем Obmen для последнего обмена данными с вызовом второй обработки, завершающей работу сеанса 1С.
Итак, внешняя обработка ObmenRIB.epf будет содержать только одну процедуру:
Процедура ПриОткрытии()
флОбновлять = КонфигурацияИзменена();
Если флОбновлять Тогда
ПутьКБазе = """d:\1C""";
ПутьКФайлуОбработки = """d:\CloseObmen.epf""";
КаталогПрограммы = КаталогПрограммы();
КоманднаяСтрокаОбновления = "taskkill /F /IM 1cv8.exe" +
Символы.ПС +""""+ КаталогПрограммы + "1cv8.exe""" + " config /F" + ПутьКБазе + " /NObmen /Pпароль /UpdateDBCfg"+
Символы.ПС +""""+ КаталогПрограммы + "1cv8.exe""" + " ENTERPRISE /F" + ПутьКБазе + " /NObmen /Pпароль /Execute " + ПутьКФайлуОбработки;
ИмяФайлаСкрипта = КаталогВременныхФайлов() + "run.bat";
Ф = Новый ТекстовыйДокумент();
Ф.УстановитьТекст(КоманднаяСтрокаОбновления);
Ф.Записать(ИмяФайлаСкрипта, КодировкаТекста.OEM);
Попытка
ЗапуститьПриложение(ИмяФайлаСкрипта,,ложь);
Исключение
Предупреждение("Произошла ошибка запуска скрипта обновления: " + ИмяФайлаСкрипта + " Ошибка: " + ОписаниеОшибки());
КонецПопытки;
Иначе
ЗавершитьРаботуСистемы(Ложь);
КонецЕсли;
КонецПроцедуры
3) И создаем вторую обработку CloseObmen.epf
Как уже было сказано, данная обработка нужна, чтобы закрыть 1С после выполнения итогового обмена, иначе останется открытый сеанс 1С под пользователем Obmen.
Процедура ПриОткрытии()
ЗавершитьРаботуСистемы(Ложь);
КонецПроцедуры
4) Осталось только создать задание в планировщике, назначив исполнение первого нами созданного батника.
P.S. Одно маленькое примечание: было замечно, что не всегда с первого раза происходит обновление (причину пока не установили). У нас в задании установлено несколько расписаний, за ночь происходит два обмена, поэтому обновления конфигурации всё равно работают.