Привет всем.
Очень нужна помощь.

Собственно вопрос вот в чем, конфу вскрывать нельзя, сделал регламентное задание по статье которое на стороннем сайте. Собственные регламентные задания в расширении поиск по rCRM_Виды Обмена.

Создал Расширение
Создал перечисление: rCrm_ВидыОбмена со значением "ВыгрузитьОстатки"
Создал РегистрСведений rCRM_НастройкаОбменов с:
Измерение ВидОбмена - ссылка на перечисление
Ресурсы:
ИспользоватьРасписание - Булево
ИдентификаторРегламентногоЗадания - УникальныйИдентификатор
Расписание - ХранилищеЗначения

Создал ФормуЗаписи и там прописал следующий код:

```1c
    &НаСервере
    Функция РасписаниеНаСервере()

    ТекЗапись = РеквизитФормыВЗначение("Запись");
    ТекРасписание = ТекЗапись.Расписание.Получить();
    Если ТекРасписание = Неопределено тогда
    ТекРасписание = Новый РасписаниеРегламентногоЗадания;
    КонецЕсли;

    Возврат ТекРасписание;

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

    &НаКлиенте
    Процедура РасписаниеНажатие(Элемент, СтандартнаяОбработка)

    СтандартнаяОбработка = Ложь;

    ТекРасписание = РасписаниеНаСервере();
    ДиалогРедактированияРасписания = Новый ДиалогРасписанияРегламентногоЗадания(ТекРасписание);
    ОП = Новый ОписаниеОповещения("ПослеРедактированияРасписания", ЭтотОбъект);
    ДиалогРедактированияРасписания.Показать(ОП);

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

    &НаКлиенте
    Процедура ПослеРедактированияРасписания(РедРасписание, ДопПараметры) Экспорт

    РасписаниеВОбъектНаСервере(РедРасписание);
    Расписание = Строка(РедРасписание);

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

    &НаСервере
    Процедура РасписаниеВОбъектНаСервере(РедРасписание)

    ТекЗапись = РеквизитФормыВЗначение("Запись");
    ТекЗапись.Расписание = Новый ХранилищеЗначения(РедРасписание);
    ТекЗапись.Записать();
    ЗначениеВРеквизитФормы(ТекЗапись, "Запись");

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

    &НаСервере
    Процедура ПриОткрытииНаСервере()

    ТекЗапись = РеквизитФормыВЗначение("Запись");
    ТекРасписание = ТекЗапись.Расписание.Получить();
    Если ТекРасписание = Неопределено тогда
    ТекРасписание = Новый РасписаниеРегламентногоЗадания;
    КонецЕсли;

    Расписание = Строка(ТекРасписание);

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

    &НаКлиенте
    Процедура ПриОткрытии(Отказ)

    ПриОткрытииНаСервере();

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

В общих модулях создал модуль rCrm_ОбщийМодуль и в нем прописал:

```1c
    Процедура ОбменПоРасписанию(ВнешняяОбработка, ИдентификаторКоманды) Экспорт
    Если ИдентификаторКоманды = Перечисления.rCRM_ВидыОбмена.ВыгрузитьОстатки Тогда
    ВыгрузитьОстатки();

    КонецЕсли;

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

    Процедура ВыгрузитьОстатки() Экспорт

    //Тут пишем код

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

Из основной перенес общий модуль ДополнительныеОтчетыИОбработки и там прописал:

```1c
    &Вместо("ВыполнитьОбработкуПоРегламентномуЗаданию")
    Процедура rCrm_ВыполнитьОбработкуПоРегламентномуЗаданию(ВнешняяОбработка, ИдентификаторКоманды) Экспорт
    Если ТипЗнч(ИдентификаторКоманды) = Тип("ПеречислениеСсылка.rCRM_ВидыОбмена") Тогда
    Если ИдентификаторКоманды = Перечисления.rCrm_ВидыОбмена.ВыгрузитьОстатки Тогда
    //rCRM_ОбщийМодуль.ВыгрузитьОстатки();
    rCRM_ОбщийМодуль.ОбменПоРасписанию(ВнешняяОбработка, ИдентификаторКоманды);
    КонецЕсли;
    Иначе

    ПродолжитьВызов(ВнешняяОбработка, ИдентификаторКоманды);

    КонецЕсли;
    КонецПроцедуры
```

из основной перенес общий модуль ПроцедурыПодпискиСобытий и там прописал:

```1c
    &Вместо("ВыгрузкаИнтернетЗаказовВЮвС")
    Процедура rCrm_ВыгрузкаИнтернетЗаказовВЮвС() Экспорт

    rCrm_ОбщийМодуль.ВыгрузитьОстатки();
    КонецПроцедуры
```

А вот когда по расписанию выполняется или вручную из формы Обработка.РегламентныеИФоновыеЗадания то получаю ошибку: Слишком много фактических параметров для метода фонового задания

и не знаю где смотреть и куда...
Если что то нужно еще напишу
---
Вроде бы ИдентификаторКоманды должен быть строкой. Как зарегистрировано регламентное задание?
С помощью приложенной обработки, посмотрите с какими параметрами создано ваше задание.
---
Из регламентного задания) Хоть интерактивно через обработку в (10), хоть программно:
```1c
    Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
    Задание.Параметры.Очистить();
    Задание.Записать();
```
---
Включить "остановка по ошибке" не предлагать?
визуально посмотреть по коду модулей, где происходит запуск фонового задания и что там с его параметрами, тоже не предлагать?
---
Остановка при ошибке не срабатывает, не останавливает.
А где запуск фонового где искать?
---
Остановка при ошибке не срабатывает, не останавливаетКонфигуратор/Главное меню/Отладка/Подключение. В выпавшем меню нажать кнопку "Автоматическое подключение", установить галочку "Фоновые задание". Перезапустить отладку
---
останавливает на всякие модальные окна, монопольные режимы, а на фоновые задачи не останавливает
---
А метод фонового задания то какой? В смысле у регламентного задания какая процедура является обработчиком?
---
ПроцедурыПодпискиСобытий.ВыгрузкаИнтернетЗаказовВЮвС
---
Метод регламентного задания, подключенный через ЗапускДополнительныхОбработок в любом случае должен содержать 2 параметра:
ссылку на обработку и ИдентификаторКоманды. У вас по коду ВыгрузкаИнтернетЗаказовВЮвС не имеет параметров.
---
Посмотрите что происходит при интерактивном запуске задания из обработки Регламентные и фоновые задания.
В БСП 3.1.7 это тут - общий модуль РегламентныеЗаданияСлужебный и в процедуре ВыполнитьРегламентноеЗаданиеВручную.
На строке ФоновыеЗадания.Выполнить(..) посмотрите какой метод вызывается, какие параметры передаются в Задание.Параметры.
---
```1c
    НаименованиеФоновогоЗадания = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(НСтр(
    "ru = 'Запуск вручную: %1'"), ПредставлениеРегламентногоЗадания(Задание));
    ФоновоеЗадание = ФоновыеЗадания.Выполнить(Задание.Метаданные.ИмяМетода, Задание.Параметры, Строка(
    Задание.УникальныйИдентификатор), НаименованиеФоновогоЗадания);
    ПараметрыВыполнения.ИдентификаторФоновогоЗадания = Строка(ФоновоеЗадание.УникальныйИдентификатор);
    ПараметрыВыполнения.МоментЗапуска = ФоновыеЗадания.НайтиПоУникальномуИдентификатору(
    ФоновоеЗадание.УникальныйИдентификатор).Начало;
    ПараметрыВыполнения.ЗапускВыполнен = Истина;
```

Параметры которые передаются, вложил скрином
---
Сколько элементов в Задание.Параметры - столько должно быть параметров в процедуре, которая указана в имени метода Задания.
---
Вроде бы ИдентификаторКоманды должен быть строкой. Как зарегистрировано регламентное задание?
С помощью приложенной обработки, посмотрите с какими параметрами создано ваше задание.
---
там как я понимаю 2 параметра
---
Раз у вас 2 параметра, то в процедуре обработчике регламентного задания должно быть 2 параметра. У вас сейчас параметров нет. При интерактивном запуске проблема в этом.
---
Добавил параметры в метод
Процедура rCrm_ВыполнитьОбработкуПоРегламентномуЗаданию(ВнешняяОбработка, ИдентификаторКоманды) Экспорт

Получаю ошибку и отваливается расширение:

rCrm: Обычная: Ошибка применения модуля "rCrm ОбщийМодуль.ПроцедурыПодпискиСобытий.Модуль". Список параметров метода "rCrm_ВыгрузкаИнтернетЗаказовВЮвС" не соответствует методу "ВыгрузкаИнтернетЗаказовВЮвС".
---
Может вам лучше удалить параметры из регламентного задания?
Если вы все равно их не используете в процедуре, зачем они вам?

При интерактивном запуске из обработки Регламентные и фоновые задания никакие значения параметров вы задать не сможете.
---
откуда удалить? конфа закрыта.
---
А регламентное задание не в расширении?
---
нет
---
Из регламентного задания) Хоть интерактивно через обработку в (10), хоть программно:
```1c
    Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
    Задание.Параметры.Очистить();
    Задание.Записать();
```
---
Задание = РегламентныеЗадания.НайтиПоУникальномуИдентификатору(ИдентификаторЗадания);
Задание.Параметры.Очистить();
Задание.Записать();

а программно это где можно прописать?
---
В общем нашел еще код в Регистре в модуле

```1c
    Процедура ПередЗаписью(Отказ, Замещение)

    Для каждого Запись ИЗ ЭтотОбъект Цикл

    ЗаданияДляОбновления = Новый Соответствие;

    Задание = РегламентныеЗаданияСервер.Задание(Запись.ИдентификаторРегламентногоЗадания);

    Если Задание = Неопределено Тогда // Не найдено

    // Создать и зарегистрировать.
    ПараметрыЗадания = Новый Структура;
    ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ВыгрузкаИнтернетЗаказовВЮвС);
    ПараметрыЗадания.Вставить("Использование", Запись.ИспользоватьРасписание);
    ПараметрыЗадания.Вставить("Наименование", Запись.ВидОбмена);
    ПараметрыЗадания.Вставить("Ключ", Запись.ИдентификаторРегламентногоЗадания);
    //МассивПараметров = Новый Массив;
    //МассивПараметров.Добавить(Справочники.ДополнительныеВнешниеОбработки.ПустаяСсылка());
    //МассивПараметров.Добавить(Запись.ВидОбмена);
    //ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
    ПараметрыЗадания.Вставить("Расписание", Запись.Расписание.Получить());
    Задание = РегламентныеЗаданияСервер.ДобавитьЗадание(ПараметрыЗадания);

    Запись.ИдентификаторРегламентногоЗадания = Задание.УникальныйИдентификатор;

    Иначе

    ПараметрыЗадания = Новый Структура;
    ПараметрыЗадания.Вставить("Метаданные", Метаданные.РегламентныеЗадания.ВыгрузкаИнтернетЗаказовВЮвС);
    ПараметрыЗадания.Вставить("Использование", Запись.ИспользоватьРасписание);
    ПараметрыЗадания.Вставить("Наименование", Запись.ВидОбмена);
    ПараметрыЗадания.Вставить("Ключ", Запись.ИдентификаторРегламентногоЗадания);
    //МассивПараметров = Новый Массив;
    //МассивПараметров.Добавить(Справочники.ДополнительныеВнешниеОбработки.ПустаяСсылка());
    //МассивПараметров.Добавить(Запись.ВидОбмена);
    //ПараметрыЗадания.Вставить("Параметры", МассивПараметров);
    ПараметрыЗадания.Вставить("Расписание", Запись.Расписание.Получить());

    РегламентныеЗаданияСервер.ИзменитьЗадание(Запись.ИдентификаторРегламентногоЗадания, ПараметрыЗадания);

    КонецЕсли;

    ДополнительныеСвойства.Вставить("ЗаданияДляОбновления", ЗаданияДляОбновления);

    КонецЦикла;

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

Закомментировал параметры, вроде заработало)
Спасибо!
---
У вас на каждую запись регистра сведений свое задание создается, со своим расписанием.
Т.к. сейчас у вас параметров в задании нет, то нет смысла и создавать кучу заданий, хватит одного.
Иначе получается, что есть несколько заданий, каждое из которых будет делать одно и то же.
---
https://forum.infostart.ru/forum9/topic266104/
---
Это я читал, у меня не так сделано
---
ИдентификаторКоманды - строка, у вас по-ходу всегда отрабатывает ветка Иначе с продолжитьВызов и там уже косяк с ошибкой
---
А зачем тут, собственно, расширение? Почему нельзя подключить внешнюю обработку по расписанию?
---
Это Ювелирсофт)) у них закрыты регламенты во внешних обработках
---
включи замер производительности, посмотри стэк вызовов.
Ну или отладочных сообщений в лог понавтыкай везде