Имя: Пароль:
1C
1С v8
количество фактических параметров фонового задания не совпадает
0 memb3r
 
04.03.14
10:58
Имеем:
Платформа 1С:Предприятие 8.1 (8.1.15.14)
Конфигурация Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.04)

Выполняется Регламентное задание(самописное). Вываливается с ошибкой:
количество фактических параметров фонового задания не совпадает с количеством параметров метода фонового задания

Вываливается, когда выполняется по расписанию. Вручную если запустить - всё прекрасно работает.

Код общего модуля:
  Процедура СозданиеДокументаОтменыРезерва(Знач СтруктураПараметров) Экспорт
    Запрос=Новый Запрос;
    Запрос.Текст="ВЫБРАТЬ
                 |    СкладАвтомобилейОстатки.Заказ
                 |ИЗ
                 |    РегистрНакопления.СкладАвтомобилей.Остатки КАК СкладАвтомобилейОстатки
                 |ГДЕ
                 |    СкладАвтомобилейОстатки.Заказ ССЫЛКА Документ.РезервНаАвтомобиль
                 |    И СкладАвтомобилейОстатки.Заказ.ДатаОкончанияРезерва <= КОНЕЦПЕРИОДА(&ТекДата, ДЕНЬ)";
    Запрос.УстановитьПараметр("ТекДата",Дата(ТекущаяДата()));
    Запрос=Запрос.Выполнить().Выбрать();
    Пока Запрос.Следующий() Цикл
            НовыйДокумент = Документы.асОтменаРезерваНаАвтомобиль.СоздатьДокумент();
            НовыйДокумент.Дата =  Дата(ТекущаяДата());
            НовыйДокумент.Автор=Справочники.Пользователи.НайтиПоНаименованию("Робот");
            НовыйДокумент.Организация=Справочники.Организации.НайтиПоКоду("00001");
            НовыйДокумент.ПодразделениеКомпании =  Справочники.ПодразделенияКомпании.НайтиПоКоду("ЦБ000001");
            НовыйДокумент.ХозОперация = Справочники.ХозОперации.НайтиПоКоду("000001");
            НовыйДокумент.ДокументОснование = Запрос.Заказ;
            НовыйДокумент.Заказчик = Запрос.Заказ.Заказчик;
            НовыйДокумент.Автомобиль = Запрос.Заказ.Автомобиль;
            НовыйДокумент.Модель = Запрос.Заказ.Модель;
            НовыйДокумент.ВариантКомплектации = Запрос.Заказ.ВариантКомплектации ;
            НовыйДокумент.Цвет  = Запрос.Заказ.Цвет;
            НовыйДокумент.Записать(РежимЗаписиДокумента.Проведение);    
    КонецЦикла;
  КонецПроцедуры  

Кто что скажет?
1 Ненавижу 1С
 
гуру
04.03.14
11:00
скажу, что у этого метода не может быть параметров, хотя бы потому, что фоновому заданию просто неоткуда их получить
2 ДенисЧ
 
04.03.14
11:02
(1) А вот 1с с тобой не согласна....

МенеджерФоновыхЗаданий (BackgroundJobsManager)
Выполнить (Execute)
Синтаксис:

Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)
3 memb3r
 
04.03.14
11:03
Забыл сказать, что используется Клиент-Серверный вариант 1С. И МенеджерФоновых Заданий не используется.
4 memb3r
 
04.03.14
11:04
Ненавижу 1С, без параметров Процедуры такая же ошибка, плюс такая ошибка при запуске вручную.
5 Ненавижу 1С
 
гуру
04.03.14
11:04
(2) я про фоновые, стартуемые как предопределенные регламентные
6 Defender aka LINN
 
04.03.14
11:06
(5) Учи матчасть.
(0) Обычно так и бывает, когда параметры не заданы.
7 memb3r
 
04.03.14
11:06
Ненавижу 1С, не понял тебя. Оно у меня забито как предопределенное. Что попробовать сделать?
8 memb3r
 
04.03.14
11:10
Defender aka LINN, тогда почему вручную запускается, а по расписанию нет?
9 Ненавижу 1С
 
гуру
04.03.14
11:20
(6) ну и как там передаются параметры?
честно полез посмотреть, ни разу просто не приходилось делать задания с параметрами
10 memb3r
 
04.03.14
11:23
Там параметры передаются через Массив.

Параметры = Новый Массив;
Параметры.Добавить(ИсточникНаСервер);
Параметры.Добавить(Событие);
...
ФоновыеЗадания.Выполнить(Событие(Тут_изменил_т.к._копирайт), Параметры,, "ЗначимоеСобытие");

И должно проходить всё идеально, но ...
11 Ненавижу 1С
 
гуру
04.03.14
11:26
(10) так все таки программно, а не по расписанию
12 memb3r
 
04.03.14
11:27
По расписанию, расписание задается из 1С Предприятие ...

Вот ещё, если через кнопку:
Процедура КоманднаяПанельРегламентныеЗаданияВыполнить(Кнопка)
    ТекРегламентноеЗадание = ЭлементыФормы.СписокРегламентныхЗаданий.ТекущиеДанные;
    РегламентноеЗадание    = РегламентныеЗаданияСоответствие.Получить(ТекРегламентноеЗадание.Идентификатор);
    
    Параметры = РегламентноеЗадание.Параметры;
    Если Параметры.Количество()=0 Тогда
        Если РегламентноеЗадание.Предопределенное Тогда
            СтруктураПараметров = Новый Структура;    
            Параметры.Добавить(СтруктураПараметров);
        КонецЕсли;
    КонецЕсли;
    
    Попытка
        ФоновоеЗадание = ФоновыеЗадания.Выполнить(РегламентноеЗадание.Метаданные.ИмяМетода, Параметры, ТекРегламентноеЗадание.Ключ, ТекРегламентноеЗадание.Наименование);
                
        Модифицированность = Ложь;        
    Исключение           
    КонецПопытки;
КонецПроцедуры
13 Ненавижу 1С
 
гуру
04.03.14
11:31
и в (0) параметр все равно не используется
14 memb3r
 
04.03.14
11:33
Ненавижу 1С, да, он не используется, но без него даже вручную не запускается. Разница между ручным запуском и по расписанию не вижу ... мб кто подскажет? параметры передаются массивом одинаково. только при ручном всё гладко, а по расписанию ошибка ...
15 Ненавижу 1С
 
гуру
04.03.14
11:37
если параметр не нужен, то может стоит его убрать, а в фоновом не передавать параметров?
как сделано в консоли заданий
16 memb3r
 
04.03.14
11:43
Ненавижу 1С, попробую сделать проверку по наименованию, и от этого уже отталкиваться передавать параметры или нет. Т.к. это только в моем регламентном задании параметры не нужны. Но есть другие предопределенные регламентные задания(стандартные), которые м.б. будут использоваться когда-нибудь ... попробую и о результате отпишусь ...
17 memb3r
 
04.03.14
12:29
В общем ошибка в типовой Конфигурации. Запускается одно фоновое задание, которое уже в свою очередь выполняет другие(как я понял). Исправил правкой параметров.
AdBlock убивает бесплатный контент. 1Сергей