Добрый день. Собираюсь использовать регламентное задание в клиент-серверном варианте платформа 8.3.9, пользователей около 50. Необходимо выполнять обмен с другой базой. Обмен документами, которые создаваться могут с периодичностью в несколько минут. Вопросы такие, какой может быть минимальный интервал между выполнением регламентного задания, так чтобы не повесить базу(мне подходит где-то раз в час ), и вообще что этому может способствовать? каким образом лучше обновлять данные каждый раз за весь день( просто не целесообразно) или по промежуткам времени, учитывая что каждый раз будет создаваться соединение с другой базой.
---
В коде ниже пример-шаблон как организовать в дополнительной обработке один и тоже функционал и для вызова по расписанию и для ручного режима. По комментариям там все ясно.

```1c
    //≪✔▼ Модуль внешнего объекта ▼≫

    Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.0"); // Версия БСП

    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Наименование = "HTTP обмен ЗУП >> БУХ";
    ПараметрыРегистрации.Версия = "28.04.2017";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    ПараметрыРегистрации.Информация = "HTTP обмен ЗУП >> БУХ";

    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'HTTP обмен ЗУП >> БУХ (по одному) (по расписанию)'");
    Команда.Идентификатор = "HTTPОбменЗупБухПоОдномуПоРасписанию"; // Срока, уникальная в пределах данной обработки
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Ложь;

    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'HTTP обмен ЗУП >> БУХ (по одному) (ручной режим)'");
    Команда.Идентификатор = "HTTPОбменЗупБухПоОдномуФорма";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Истина;

    Возврат ПараметрыРегистрации;

    КонецФункции

    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

    // Реализация логики команды
    Если ИдентификаторКоманды = "HTTPОбменЗупБухПоОдномуПоРасписанию" Тогда

    ЭтоВызовПоРасписанию = Истина; // Этот параметр полезен для выполнения служебных действий. Например, сохранения лога в служебный каталог
    HTTPАдрес = "...../query"; // Реквизит обработки для хранения адреса приемнника-обмена
    HTTPОбновитьПоОдному(ЭтоВызовПоРасписанию); // Общий метод для выполнения по расписанию и в ручном режиме по кнопке в форме

    КонецЕсли;

    КонецПроцедуры

    Функция HTTPОбновитьПоОдному(ЭтоВызовПоРасписанию = Ложь) Экспорт

    ДатаНачалаМс = ТекущаяУниверсальнаяДатаВМиллисекундах();
    ТекстовыйЛог = Новый ТекстовыйДокумент;

    РезультатЗапроса = ПолучитьРезультатыЗапроса(ТекстовыйЛог);
    Если РезультатЗапроса.Пустой() Тогда
    Возврат ТекстовыйЛог;
    КонецЕсли;
    РегистрМенеджер = РегистрыСведений.ОчередьОбъектовОбмена_Доп; // Создаем менеджер регистра для удаления записей по одной
    HTTPСоединение = Неопределено; // HTTPСоединение создаем в первой интерации и в случае сбоя в следующих создаем повторно

    // Служебные счетчики
    СчетчикВОчередиБыло = 0;
    СчетчикОбновлено = 0;
    СчетчикИзОчередиУдалено = 0;

    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл

    СчетчикВОчередиБыло = СчетчикВОчередиБыло + 1;

    // Реализация логики обмена текущей записи из очереди
    //...
    //
    КонецЦикла;

    // Протокол завершения обмена
    HTTPСоединение = Неопределено;
    ДатаОкончанияМс = ТекущаяУниверсальнаяДатаВМиллисекундах();

    ТекстовыйЛог.ДобавитьСтроку(">> Всего в очереди было: " + СчетчикВОчередиБыло);
    ТекстовыйЛог.ДобавитьСтроку("<< Всего успешно обновлено: " + СчетчикОбновлено);
    ТекстовыйЛог.ДобавитьСтроку(" Всего из очереди удалено: " + СчетчикИзОчередиУдалено);
    ТекстовыйЛог.ДобавитьСтроку(" Всего в очереди осталось: " + (СчетчикВОчередиБыло - СчетчикИзОчередиУдалено));

    ТекстовыйЛог.ДобавитьСтроку("Время выполнения: " + ((ДатаОкончанияМс - ДатаНачалаМс) / 1000) + " мс.");

    Возврат ТекстовыйЛог; // На клиенте можем показать этот текстовый документ, на сервере сохранить в служебный каталог

    КонецФункции

    // ≪✔▲ Модуль внешнего объекта ▲ ≫

    //////------------------------------

    // ≪✔▼ Модуль формы объекта ▼≫

    #Область КомандыФормы

    &НаКлиенте
    Процедура HTTPОбновитьПоОдному(Команда)

    ОчиститьСообщения();

    Если НЕ ПроверитьЗаполнение() Тогда
    Возврат;
    КонецЕсли;

    ТекстовыйЛог = HTTPОбновитьПоОдномуСервер(); // ТекстовыйЛог - это текстовый документ
    ТекстовыйЛог.Показать("Лог обработки данных");

    КонецПроцедуры

    &НаСервере
    Функция HTTPОбновитьПоОдномуСервер()

    Возврат РеквизитФормыВЗначение("Объект").HTTPОбновитьПоОдному(Ложь); // ЭтоВызовПоРасписанию = Ложь;

    КонецФункции

    #КонецОбласти

    // ≪✔▲ Модуль формы объекта ▲ ≫
```
---
Обычно для подобного рода задача целесообразно создать свой регистр сведений

"ОчередьОбъектовОбмена"
     Измерения:
        ОбъектОбмена - документы, справочники и т.п.
        ИдентификаторОбмена - может быть имя обработки или идентификатор команды обмена в обработке

в модуле какой либо обработки обмена выполняется команда
которая делает выборку из регистра по ИдентификаторОбмена и отправляет документы в Приемник
если очередной документ успешно отправлен, то сокращаем очередь(удаляем запись отправленного объекта)

объекты попадают в очередь по подсписке на событие с именем метода, например, ПриПроведении_ДобавитьВОчередьОбмен1

Такой подход позволит запускать обмен как по расписанию с условно произвольным периодом (минута, 10 минут...) или просто вручную по кнопке
---
не подскажите какая доступность команды обмена должна быть (типа общей команды???). Мне ее необходимо разместить на форму списка документа для выполнения обмена вручную и обратиться к ней из обработки обмена.
---
В коде ниже пример-шаблон как организовать в дополнительной обработке один и тоже функционал и для вызова по расписанию и для ручного режима. По комментариям там все ясно.

```1c
    //≪✔▼ Модуль внешнего объекта ▼≫

    Функция СведенияОВнешнейОбработке() Экспорт

    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.0"); // Версия БСП

    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
    ПараметрыРегистрации.Наименование = "HTTP обмен ЗУП >> БУХ";
    ПараметрыРегистрации.Версия = "28.04.2017";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    ПараметрыРегистрации.Информация = "HTTP обмен ЗУП >> БУХ";

    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'HTTP обмен ЗУП >> БУХ (по одному) (по расписанию)'");
    Команда.Идентификатор = "HTTPОбменЗупБухПоОдномуПоРасписанию"; // Срока, уникальная в пределах данной обработки
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    Команда.ПоказыватьОповещение = Ложь;

    Команда = ПараметрыРегистрации.Команды.Добавить();
    Команда.Представление = НСтр("ru = 'HTTP обмен ЗУП >> БУХ (по одному) (ручной режим)'");
    Команда.Идентификатор = "HTTPОбменЗупБухПоОдномуФорма";
    Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
    Команда.ПоказыватьОповещение = Истина;

    Возврат ПараметрыРегистрации;

    КонецФункции

    Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт

    // Реализация логики команды
    Если ИдентификаторКоманды = "HTTPОбменЗупБухПоОдномуПоРасписанию" Тогда

    ЭтоВызовПоРасписанию = Истина; // Этот параметр полезен для выполнения служебных действий. Например, сохранения лога в служебный каталог
    HTTPАдрес = "...../query"; // Реквизит обработки для хранения адреса приемнника-обмена
    HTTPОбновитьПоОдному(ЭтоВызовПоРасписанию); // Общий метод для выполнения по расписанию и в ручном режиме по кнопке в форме

    КонецЕсли;

    КонецПроцедуры

    Функция HTTPОбновитьПоОдному(ЭтоВызовПоРасписанию = Ложь) Экспорт

    ДатаНачалаМс = ТекущаяУниверсальнаяДатаВМиллисекундах();
    ТекстовыйЛог = Новый ТекстовыйДокумент;

    РезультатЗапроса = ПолучитьРезультатыЗапроса(ТекстовыйЛог);
    Если РезультатЗапроса.Пустой() Тогда
    Возврат ТекстовыйЛог;
    КонецЕсли;
    РегистрМенеджер = РегистрыСведений.ОчередьОбъектовОбмена_Доп; // Создаем менеджер регистра для удаления записей по одной
    HTTPСоединение = Неопределено; // HTTPСоединение создаем в первой интерации и в случае сбоя в следующих создаем повторно

    // Служебные счетчики
    СчетчикВОчередиБыло = 0;
    СчетчикОбновлено = 0;
    СчетчикИзОчередиУдалено = 0;

    Выборка = РезультатЗапроса.Выбрать();
    Пока Выборка.Следующий() Цикл

    СчетчикВОчередиБыло = СчетчикВОчередиБыло + 1;

    // Реализация логики обмена текущей записи из очереди
    //...
    //
    КонецЦикла;

    // Протокол завершения обмена
    HTTPСоединение = Неопределено;
    ДатаОкончанияМс = ТекущаяУниверсальнаяДатаВМиллисекундах();

    ТекстовыйЛог.ДобавитьСтроку(">> Всего в очереди было: " + СчетчикВОчередиБыло);
    ТекстовыйЛог.ДобавитьСтроку("<< Всего успешно обновлено: " + СчетчикОбновлено);
    ТекстовыйЛог.ДобавитьСтроку(" Всего из очереди удалено: " + СчетчикИзОчередиУдалено);
    ТекстовыйЛог.ДобавитьСтроку(" Всего в очереди осталось: " + (СчетчикВОчередиБыло - СчетчикИзОчередиУдалено));

    ТекстовыйЛог.ДобавитьСтроку("Время выполнения: " + ((ДатаОкончанияМс - ДатаНачалаМс) / 1000) + " мс.");

    Возврат ТекстовыйЛог; // На клиенте можем показать этот текстовый документ, на сервере сохранить в служебный каталог

    КонецФункции

    // ≪✔▲ Модуль внешнего объекта ▲ ≫

    //////------------------------------

    // ≪✔▼ Модуль формы объекта ▼≫

    #Область КомандыФормы

    &НаКлиенте
    Процедура HTTPОбновитьПоОдному(Команда)

    ОчиститьСообщения();

    Если НЕ ПроверитьЗаполнение() Тогда
    Возврат;
    КонецЕсли;

    ТекстовыйЛог = HTTPОбновитьПоОдномуСервер(); // ТекстовыйЛог - это текстовый документ
    ТекстовыйЛог.Показать("Лог обработки данных");

    КонецПроцедуры

    &НаСервере
    Функция HTTPОбновитьПоОдномуСервер()

    Возврат РеквизитФормыВЗначение("Объект").HTTPОбновитьПоОдному(Ложь); // ЭтоВызовПоРасписанию = Ложь;

    КонецФункции

    #КонецОбласти

    // ≪✔▲ Модуль формы объекта ▲ ≫
```
---
Спасибо, огромное