Для решения данного вопроса залез в интернет и понял, что единого решения нет - каждый извращается как может. Ну вот и я присоединился к этой компашке. Воевал за максимальную функциональность, поэтому при выборе решения остановился на своём.
Решения без изменения конфигурации мне найти не удалось... Уже вижу, как как в меня полетели помидоры - ведь при запуске 1с есть ключ /Execute , который позволяет после запуска 1с запустить внешнюю обработку и сделать обмен, да вот только - фик там! После загрузки 1с загружается: сначало панель интернет-соединение (отключил), а вот потом панель "Установить границу расчитанных итогов на...?" - быстро победить мне эту панельку не удалось. У-у-у-у-у, вторая порция помидоров полетела. Знаю, что есть права на регистрах - рассчитывать итоги, через которые можно избавить пользователя от этой ненужной обузы, да вот только для этого нужно создавать новую роль и тащить её через последующие релизы и для одной только цели - делать обмен. Мне это показалось не совсем универсально.
Покопавшись в интернете и ключах запуска нашел ключ /C - передача параметра в конфигурацию. 1с Бухгалтерия отрабатывает ключ /CРазрешитьРаботуПользователей, при котором работа 1с завершается, но с параметром Ложь: ЗавершитьРаботуСистемы(Ложь), при этом 1с просто подрубается, не выполняя функций завершения работы программы.
Но ведь через этот ключ можно передать, что-то типа /cВыполнить=ЗавершитьРаботуСистемы(Истина); и при запуске обрезав "/cВыполнить=" выполнять строку кода, т.е. сразу же завершать работу 1с ещё до запуска окон "интернет-соединения" и "расчета границы итогов".
Для этого в процедуру ПриНачалеРаботыСистемы() внес обработчик передаваемого параметра (текст нашел где-то в нете, может и на инфостарте):
// Процедура - обработчик события "При начале работы системы".
//
Процедура ПриНачалеРаботыСистемы()
КонтрольВерсииПлатформы.ПроверитьВерсиюПлатформы();
ПервыйЗапуск = (Константы.НомерВерсииКонфигурации.Получить()="");
ПользовательОпределен = Ложь;
ОписаниеОшибкиОпределенияПользователя = "";
Если Не ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь) Тогда
Если УправлениеПользователями.ОпределитьТекущегоПользователя(ОписаниеОшибкиОпределенияПользователя) Тогда
ПользовательОпределен = ЗначениеЗаполнено(ПараметрыСеанса.ТекущийПользователь);
КонецЕсли;
Иначе
ПользовательОпределен = Истина;
КонецЕсли;
Если Не ПользовательОпределен Тогда
Если ПустаяСтрока(ОписаниеОшибкиОпределенияПользователя) Тогда
ОписаниеОшибкиОпределенияПользователя = "Ошибка идентификации пользователя. Обратитесь к администратору";
КонецЕсли;
Предупреждение(ОписаниеОшибкиОпределенияПользователя);
ЗавершитьРаботуСистемы(Ложь);
Возврат;
Иначе
//Изменение от 03.09.2012
//обработка cВыполнить=ЗавершитьРаботуСистемы(Истина);
Ключ = "Выполнить=";
ДлКлюча = СтрДлина(Ключ);
Если Лев(ПараметрЗапуска, ДлКлюча) = Ключ Тогда
Попытка ДлПараметра = СтрДлина(ПараметрЗапуска);
СтрокаКода = Прав(ПараметрЗапуска, ДлПараметра-ДлКлюча);
Выполнить(СтрокаКода);
Исключение СтрСообщения="Не удалось выполнить код:"+Символы.ПС+СтрокаКода;
Предупреждение(СтрСообщения,3);
ЗаписьЖурналаРегистрации("Запуск кода из командной строки.", УровеньЖурналаРегистрации.Ошибка, , , СтрСообщения);
КонецПопытки;
КонецЕсли;
// конец Изменение от 03.09.2012//Заменим интерфейс УСН8
... и т.д.
(понимаю, что лучше было бы внести эти строки в обработку ключа /С: ОбщиеМодули-УправлениеСоединениями-ОбработатьПараметрыЗапуска(), но в любом случае в типовую конфигурацию надо вносить изменения).
А дальше все просто - создаем bat-файл и ставим на шедулер (Планировщик заданий), что б в обед в 13.00-14.00 была выгрузка. Текст батника у меня такой (можно скачать в приложении):
@ECHO OFF
chcp 1251
PATH "C:\Program Files (x86)\1cv82\8.2.15.319\bin";"C:\Program Files\1cv82\8.2.15.319\bin"
start 1cv8.exe ENTERPRISE /F"\\Bases\2012\База" /N"Обмен" /P"12345" /cВыполнить=ЗавершитьРаботуСистемы(Истина); &
Что б было понятно, объясню:
1 строка - переключаемся в нужную кодировку, что б понимать русский язык.
2 строка - прописываем пути, где искать запускной файл 1с для 32 и 64 битных систем. У меня пути прописаны для 15 платформы 319 релиз.
3 строка - запускаем 1с: /F - указываем путь до базы, /N - указываем пользователя, /P - указываем пароль, /c- передаем параметр, & - запускаем в фоне, что б пользователь даже не видел запуска 1с.
А зачем завершать работу, спросите вы? И как при этом происходит выгрузка?
Все просто! При настройке обменов РИБ можно определенному пользователю (в нашем случае - под кем загружаем 1с из бат-файла) назначить выполнять обмен при различных событиях. Одним из событий является "Завершение работы", где мы и ставим галочку (смотрите рисунок).
Да, пользователю, который будет делать обмен не забудьте снять в настройках (Сервис - Настройки пользователя) галочку - "Запрашивать подтверждение при завершении работы", а то нажать на Да/Нет в "Завершить работу 1с?" при закрытии 1с будет некому.
Т.е. весь процесс выглядит так:
1. Шедулер ежедневно в фоне запускает 1с под пользователем "Обмен" и с ключем, который передает строку кода: ЗавершитьРаботуСистемы(Истина).
2. При загрузке системы отрабатывает наша обработка параметра, где переданная строка кода (в п.1) выполняется - т.е. завершается работа 1с.
3. Перед завершение работы делается обмен РИБ, после чего 1с благополучно завершает работу.
Всё!!! Одним емором стало меньше!!!
И теперь при загрузке 1с можно выполнять любые команды не вторгаясь в конфигурацию, прописав их в "/cВыполнить=". )))