1с недостаточно фактических параметров для метода фонового задания 1с

Обновлено: 02.07.2024

Недостаточно фактических параметров – такая ошибка программы 1С не часто возникает при работе с типовыми конфигурациями, отчего еще больше обескураживает пользователя, так как не является заурядной проблемой. Чаще всего она появляется в результате доработки конфигурации 1С вне зависимости от того, насколько качественно конфигурация дорабатывалась. Скорее всего, эта ошибка связана с тем, что конфигурация обновилась и метод, который раньше использовался в доработке конфигурации 1С, изменился.

ЗаполнитьДокумент(Ссылка, ДанныеЗаполнения, Источник)

2. Исправление ошибки в 1С

Ссылка, ДанныеЗаполнения, Источник – это и есть фактические параметры. Соответственно, когда вызываем эту функцию в 1С 8.3, мы должны передавать эти параметры, иначе получим ошибку.

Теперь необходимо решить, почему мы передаем недостаточно фактических параметров и где взять нужные. Если мы используем типовые методы в наших доработках, то идем по следующему пути.

Выбираем вызов функции 1С, которая возвращает ошибку, и нажимаем на F12. Так мы найдем ее объявление. Прямо перед функцией сможете увидеть комментарий разработчиков, где будут перечислены необходимые параметры и их тип. Если все равно не очень понятно, каким именно параметром нужно заполнить, то есть вариант использовать отладку. Просто ставим точку остановки, и можно будет попасть сюда типовым образом. Например, если стоит вопрос о заполнении документа, то достаточно будет использовать «Заполнить на основании» в Обработчике событий формы.

Обработчик событий формы

Обработчик событий формы

Как только 1С покажет, что вы находитесь в отладке, то выделите реквизит, параметр которого вам необходим и нажмите Shift+F9. Вы увидите, как именно выглядит реквизит, которого вам не хватает. Остается только заполнить его в вызове функций в вашем коде.

Если же речь идет о какой-то самописной функции или методе, который возвращает такую ошибку, то можно удалить лишний параметр в том случае, если вы уверены, что в коде он не используется и его удаление не нарушит логику дальнейших действий 1С.

К сожалению, невозможно предложить универсальное решение этой ошибки программы 1С, но если понять принцип, ее исправление не должно занимать много времени и сил. В любом случае, если у вас появляются подобного рода ошибки, лучше обратитесь к фирме, которая вас обслуживает, чтобы решить проблему.

Имеем: Платформа 1С:Предприятие 8.1 (8.1.15.14) Конфигурация Альфа-Авто: Автосалон+Автосервис+Автозапчасти. Редакция 4.1 (4.1.01.04) Выполняется Регламентное задание(самописное). Вываливается с ошибкой: количество фактических параметров фонового задания не совпадает с количеством параметров метода фонового задания Вываливается, когда выполняется по расписанию. Вручную если запустить - всё прекрасно работает. Код общего модуля: Кто что скажет?

скажу, что у этого метода не может быть параметров, хотя бы потому, что фоновому заданию просто неоткуда их получить

А вот 1с с тобой не согласна. Синтаксис: Выполнить(<ИмяМетода>, <Параметры>, <Ключ>, <Наименование>)

Забыл сказать, что используется Клиент-Серверный вариант 1С. И МенеджерФоновых Заданий не используется.

Ненавижу 1С, без параметров Процедуры такая же ошибка, плюс такая ошибка при запуске вручную.

я про фоновые, стартуемые как предопределенные регламентные

Учи матчасть. Обычно так и бывает, когда параметры не заданы.

Ненавижу 1С, не понял тебя. Оно у меня забито как предопределенное. Что попробовать сделать?

Defender aka LINN, тогда почему вручную запускается, а по расписанию нет?

ну и как там передаются параметры? честно полез посмотреть, ни разу просто не приходилось делать задания с параметрами

Там параметры передаются через Массив. Параметры = Новый Массив; Параметры.Добавить(Событие); . И должно проходить всё идеально, но .

По расписанию, расписание задается из 1С Предприятие . Вот ещё, если через кнопку:

Ненавижу 1С, да, он не используется, но без него даже вручную не запускается. Разница между ручным запуском и по расписанию не вижу . мб кто подскажет? параметры передаются массивом одинаково. только при ручном всё гладко, а по расписанию ошибка .

если параметр не нужен, то может стоит его убрать, а в фоновом не передавать параметров? как сделано в консоли заданий

Ненавижу 1С, попробую сделать проверку по наименованию, и от этого уже отталкиваться передавать параметры или нет. Т.к. это только в моем регламентном задании параметры не нужны. Но есть другие предопределенные регламентные задания(стандартные), которые м.б. будут использоваться когда-нибудь . попробую и о результате отпишусь .

В общем ошибка в типовой Конфигурации. Запускается одно фоновое задание, которое уже в свою очередь выполняет другие(как я понял). Исправил правкой параметров.

Недостаточно фактических параметров – такая ошибка программы 1С не часто возникает при работе с типовыми конфигурациями, отчего еще больше обескураживает пользователя, так как не является заурядной проблемой. Чаще всего она появляется в результате доработки конфигурации 1С вне зависимости от того, насколько качественно конфигурация дорабатывалась. Скорее всего, эта ошибка связана с тем, что конфигурация обновилась и метод, который раньше использовался в доработке конфигурации 1С, изменился.

ЗаполнитьДокумент(Ссылка, ДанныеЗаполнения, Источник)

2. Исправление ошибки в 1С

Ссылка, ДанныеЗаполнения, Источник – это и есть фактические параметры. Соответственно, когда вызываем эту функцию в 1С 8.3, мы должны передавать эти параметры, иначе получим ошибку.

Теперь необходимо решить, почему мы передаем недостаточно фактических параметров и где взять нужные. Если мы используем типовые методы в наших доработках, то идем по следующему пути.

Выбираем вызов функции 1С, которая возвращает ошибку, и нажимаем на F12. Так мы найдем ее объявление. Прямо перед функцией сможете увидеть комментарий разработчиков, где будут перечислены необходимые параметры и их тип. Если все равно не очень понятно, каким именно параметром нужно заполнить, то есть вариант использовать отладку. Просто ставим точку остановки, и можно будет попасть сюда типовым образом. Например, если стоит вопрос о заполнении документа, то достаточно будет использовать «Заполнить на основании» в Обработчике событий формы.

Обработчик событий формы

Обработчик событий формы

Как только 1С покажет, что вы находитесь в отладке, то выделите реквизит, параметр которого вам необходим и нажмите Shift+F9. Вы увидите, как именно выглядит реквизит, которого вам не хватает. Остается только заполнить его в вызове функций в вашем коде.

Если же речь идет о какой-то самописной функции или методе, который возвращает такую ошибку, то можно удалить лишний параметр в том случае, если вы уверены, что в коде он не используется и его удаление не нарушит логику дальнейших действий 1С.

К сожалению, невозможно предложить универсальное решение этой ошибки программы 1С, но если понять принцип, ее исправление не должно занимать много времени и сил. В любом случае, если у вас появляются подобного рода ошибки, лучше обратитесь к фирме, которая вас обслуживает, чтобы решить проблему.

В рамках выполнения проекта столкнулся с интересной задачей ускорения загрузки данных из других информационных баз. Задача загрузки данных предполагала выполнение к внешней базе несвязанных между собой запросов, результаты которых помещаются в одну таблицу значений. Когда на оптимизацию запроса рука уже не поднималась, приступил к ускорению загрузки с помощью распараллеливания процессов. Отмечу, что элементы кода в данном посте приведены для клиент-серверного варианта и укрупнено для общего понимания подхода.


Что у нас в 1с Предприятии 8.2 имеется для распараллеливания & это фоновые задачи. Метод, который будет вызываться в фоновой задаче, должен быть прописан в серверном общем модуле и быть экспортным. Естественно нам понадобиться в фоновую задачу передавать и забирать значения.

Зачем нам в фоновую задачу передавать адрес во временном хранилище. Наша фоновая задача должна куда-то положить результат, причем так чтобы мы знали где его потом взять.

Для того чтобы запустить фоновые задачи выполняется следующий код:

Перед запуском фоновой задачи через ФоновыеЗадания.Выполнить() мы формируем массив параметров. Значения из массива параметров переходят в метод фонового задания в качестве параметров. В МассивЗапущенныхЗаданий хранятся все фоновые задачи, которые мы запустили. Теперь надо подождать их ожидания.

ФоновыеЗадания.ОжидатьЗавершения(МассивЗапущенныхЗаданий);

После того как все задачи были завершены, можем приступить к получению из них данных. Для этого мы проходим по всем адресам в хранилище, которые хранятся в массиве МассивАдресовВХранилище. После получения результата фонового задания перегоняем его в общую таблицу.

Вопрос определения оптимального количества потоков выходит за рамки данного поста. А после получения некоторых результатов на рабочих данных пока что выходит и за рамки моего сознания . Но если у вас есть идеи как посчитать нужное количество потоков, пишите в комментариях, с радостью почитаю.

Читайте также: