На крупных базах процесс синхронизации узлов РИБ занимает достаточно
длительное время. База в этот момент подвисает и заставляет себя ждать.
Поэтому делаем фоновое выполнение обмена с использованием планировщика
заданий Windows.
Реализуется посредством параметра запуска
\C
Нужен cmd-файл следующего содержания:
@ECHO OFF
chcp 866
"C:\Program
Files (x86)\1cv8\8.3.6.2299\bin\1cv8.exe" enterprise /F
e:\1cWorks\ДомСумок /N Администратор /P Boss21 /C"АвтоОбменУзлаРИБ"
Далее в МодулеУправлямогоПриложения, в процедуре
ПриНачалеРаботыСистемы() нужно проверять параметр запуска и в
зависимости от него выполнять функцию обмена.
Если СокрЛП(ПараметрЗапуска)="" Тогда //параметра нет ничего не делаем
ИначеЕсли ПараметрЗапуска = "АвтоОбменУзлаРИБ" тогда
Попытка
ОбщийМодуль1.ВыболнитьОбменУзлаРИБ();
Исключение
Стр="Не удалось выполнить автообмен РИБ ";
Сообщить(Стр+ОписаниеОшибки());
КонецПопытки;
ЗавершитьРаботуСистемы();
КонецЕсли;
Следует
иметь в виду, что этот модуль выполняется на клиенте. Поэтому что бы
запустить серверную процедуру, ее следует разместить в отельном общем
модуле. Поставить галочку
Сервер и
Вызов Сервера, после чего можно вызывать эту процедуру обычным способом ОбщийМодуль1.Процедура()
&НаСервере
Процедура ВыболнитьОбменУзлаРИБ()
//нужно обновить РИБ по подразделению, который не главный
// Считаем, что узлов два: главный и не главный
Выборка = ПланыОбмена.СОтборами.Выбрать();
Пока выборка.Следующий() цикл
Если не выборка.ЭтотУзел тогда
ОбменДаннымиСервер.ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы(,выборка.Ссылка,Истина,Истина);
Прервать;
КонецЕсли;
КонецЦикла;
КонецПроцедуры
К слову сказать программный обмен данными для узла осуществляется в общем модуле
ОбменДаннымиСервер в функции ВыполнитьОбменДаннымиДляУзлаИнформационнойБазы().
Далее
в планировщике заданий создаем новую задачу. Запуск осуществляется с
правами системы, тем самым запускается фоновый процесс без интерфейса!
На вкладке Триггеры задайте расписание, а на вкладке Действия укажите запуск cmd-файла
Теперь
в фоне по расписанию будет открываться 1С Предприятие, запускаться
внешняя обработка, в которой выполняться обмен данными одного узла РИБ с
главным.
Если не нужно срывать процесс, то запускайте cmd-файл с правами обычного пользователя.
В таком случае можно обойтись параметром /Execute и указать файл внешней обработки.
@ECHO OFF
chcp 866
"C:\Program
Files (x86)\1cv8\8.3.6.2299\bin\1cv8.exe" enterprise /F e:\ПутьКБазе /N
Администратор /P Пароль /Execute e:\Путь\ФайлОбработки.epf
Внешняя обработка, у которой в момент создания будет осуществляться процедура обмена.
&НаСервере
Процедура ПриОткрытии(Отказ)
ВыболнитьОбменУзлаРИБ();
КонецПроцедуры