1с недостаточно фактических параметров для метода фонового задания 1с
Недостаточно фактических параметров – такая ошибка программы 1С не часто возникает при работе с типовыми конфигурациями, отчего еще больше обескураживает пользователя, так как не является заурядной проблемой. Чаще всего она появляется в результате доработки конфигурации 1С вне зависимости от того, насколько качественно конфигурация дорабатывалась. Скорее всего, эта ошибка связана с тем, что конфигурация обновилась и метод, который раньше использовался в доработке конфигурации 1С, изменился.
ЗаполнитьДокумент(Ссылка, ДанныеЗаполнения, Источник)
2. Исправление ошибки в 1С
Ссылка, ДанныеЗаполнения, Источник – это и есть фактические параметры. Соответственно, когда вызываем эту функцию в 1С 8.3, мы должны передавать эти параметры, иначе получим ошибку.
Теперь необходимо решить, почему мы передаем недостаточно фактических параметров и где взять нужные. Если мы используем типовые методы в наших доработках, то идем по следующему пути.
Выбираем вызов функции 1С, которая возвращает ошибку, и нажимаем на F12. Так мы найдем ее объявление. Прямо перед функцией сможете увидеть комментарий разработчиков, где будут перечислены необходимые параметры и их тип. Если все равно не очень понятно, каким именно параметром нужно заполнить, то есть вариант использовать отладку. Просто ставим точку остановки, и можно будет попасть сюда типовым образом. Например, если стоит вопрос о заполнении документа, то достаточно будет использовать «Заполнить на основании» в Обработчике событий формы.
Обработчик событий формы
Как только 1С покажет, что вы находитесь в отладке, то выделите реквизит, параметр которого вам необходим и нажмите Shift+F9. Вы увидите, как именно выглядит реквизит, которого вам не хватает. Остается только заполнить его в вызове функций в вашем коде.
Если же речь идет о какой-то самописной функции или методе, который возвращает такую ошибку, то можно удалить лишний параметр в том случае, если вы уверены, что в коде он не используется и его удаление не нарушит логику дальнейших действий 1С.
К сожалению, невозможно предложить универсальное решение этой ошибки программы 1С, но если понять принцип, ее исправление не должно занимать много времени и сил. В любом случае, если у вас появляются подобного рода ошибки, лучше обратитесь к фирме, которая вас обслуживает, чтобы решить проблему.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
1С:Предприятие > 8.1.8, клиент-серверная архитектура, MS SQL.
Общий неглобальный серверный модуль. Обработка с одной формой, одной кнопкой и одним табличным полем.
Нажав кнопку на форме, запустить некий долгий алгоритм расчета так, чтобы при этом форма была доступна для нажатия других кнопок, менюшек, перемещения.
По окончании расчета передать результат расчета в табличное поле и отобразить результат.
Методика:
Как показала практика, из отработавшего фонового задания вернуть штатным путем каке-либо данные невозможно. Имеется 2 способа, позволяющих это
делать:
1) фоновое задание пишет результат своей работы в БД, обработка отслеживает, что фоновое задание завершилось и считывает из БД результат. В качестве места хранения результата предлагается
использовать регистр сведений, где измерение хранит UID экземпляра фонового задания, а ресурс имеет тип ХранилищеЗначений.
2) извращенный способ – передать значение через программную генерацию исключения (оператор «ВызватьИсключение»).
Решение:
Описывать способ с регистром сведений не буду, так как это достаточно просто реализовать, а минусом является необходимость добавления в конфигурацию регистра сведений. Поэтому опишу вариант с
«ВызватьИсключение»:
Процедура общего модуля:
Модуль формы обработки:
Результат:
Жмем кнопку. 15 секунд наслаждаемся перетаскиванием формы и прочими действиями (кроме закрытия).
Потом резко (само! шайтан! :) заполнится табличное поле на форме, чего и следовало ожидать.
Нагрузочные испытания проведены на передаче таблицы значений из 2 полей с количеством строк 100 тыс.
шт. – успешно.
Надеюсь, статья будет вам полезна.
Выражаю благодарность всем, кто помог мне осуществить данную операцию.
С уважением, Алексей Шачнев.
Вместо обработки ожидания использовал отправку датаграммы из фонового задания форме посредством MS WinSock (ActiveX)
Нужно было выполнить заполнение дерева в фоне (что бы не блокировать основной интерфейс). Нашел эту статейку.
Собственно удалось выполнить фоновое задание без "ВызватьИсключение".
8.2.19.68 (Управляемое приложение)
Добавил в общий модуль процедуру выполнения фонового задания.
В само задание передаю в качестве параметра массив значений:
Проходит все без ошибок, но в ЖР вижу, что задание выполнено якобы с ошибками, много фактических параметров для метода фонового задания.
(15) ошибка была в том, что в вызываемой процедуре было мало входящих параметров.
Для этого и было сказано, чтобы увеличить их в самой процедуре.
Вот теперь сделано правильно. Но зачем-то и месте вызова поменяли.
Поймите главное. Даже в (11) привели информацию из СП.
В вызове метода Выполнить(, , , ) должно быть только 4 параметра и 2 параметр это массив, в котором каждый добавленный элемент это и есть добавленный параметр в порядке следования входящих параметров процедуры для вызова в фоновом задании.
Итого должно быть так:
Вызов фонового задания:
Вот так должно отрабатывать.
(3) а передаете в него аж 4 параметра. Каждый элемент массива ПараметрыФЗ это отдельный параметр для выполняемой процедуры в фоновом задании, в порядке следования.
(4)
и как выйти из ситуации?
мне нужно именоо четыре значения передать.
я хочу пакетно выполнять регл. задание.
и как раз данный метод задумывался, чтобы в фон.задание передавались данные по значениям, в которых первый пакет обрабтывается к примеру для поразделения1, потом все так же, только для подразделения2 и там далее.
(5) Значит нужно метод РасчетФоновоеВыполнение.Расчитать изменить на получение 4 параметров соответствующих типов, или переделать ПараметрыФЗ на добавление 1 элемента, в котором и передавать нужные данные. Тут уж сами решайте, как удобнее.
Вот из этого и исходите.
(8) ошибка вызова исчезнет. Но нужно понимать, что теперь в самой процедуре нужно переделывать на работу с этими параметрами.
(10) показывайте текущий запуск фонового задания и начало процедуры Выполнить из общего модуля РасчетФоновоеВыполнение
(9)
и вообще-то согласно СП
"Синтаксис:
Выполнить(, , , )
Параметры:
(обязательный)
(необязательный)
Тип: Массив.
Массив параметров, передаваемых в метод. Количество и типы параметров должны соответствовать параметрам метода.
Все передаваемые параметры должны поддерживать сериализацию. В противном случае будет выдано исключение и фоновое задание не будет запущено.
Если последние параметры метода имеют значения по-умолчанию, то их можно не задавать в массиве.
Если все параметры метода имеют значение по-умолчанию, то массив можно не передавать вообще.
Размер передаваемых данных ограничен 1 ГБ. Если внутреннее представление превышает указанное значение, будет вызвано исключение. Параметры большого размера рекомендуется передавать через базу данных."
не пойму в чем же правда и как надо.
в фоновом задании прописал так:
Задание = ФоновыеЗадания.Выполнить("РасчетФоновоеВыполнение.Расчитать", СписокНоменклатур, Параметры.ДатаНачала, Параметры.ДатаОкончания, Подразделение.Значение, Строка(Новый УникальныйИдентификатор()), НаименованиеЗадания);
Вот это совсем не так. Нужно было оставить как было раньше.
Вторым параметром передается массив, в котором каждый элемент это принимаемый параметр в вызываемой функции. Верните вызов фонового задания, как было раньше и вызов будет отрабатывать.
(14)
но ведь не отрабатывал.
само регламентное задание как-бы выполнялось, но фоновое всегда было с ошибкой.
(15) ошибка была в том, что в вызываемой процедуре было мало входящих параметров.
Для этого и было сказано, чтобы увеличить их в самой процедуре.
Вот теперь сделано правильно. Но зачем-то и месте вызова поменяли.
Поймите главное. Даже в (11) привели информацию из СП.
В вызове метода Выполнить(, , , ) должно быть только 4 параметра и 2 параметр это массив, в котором каждый добавленный элемент это и есть добавленный параметр в порядке следования входящих параметров процедуры для вызова в фоновом задании.
Недостаточно фактических параметров – такая ошибка программы 1С не часто возникает при работе с типовыми конфигурациями, отчего еще больше обескураживает пользователя, так как не является заурядной проблемой. Чаще всего она появляется в результате доработки конфигурации 1С вне зависимости от того, насколько качественно конфигурация дорабатывалась. Скорее всего, эта ошибка связана с тем, что конфигурация обновилась и метод, который раньше использовался в доработке конфигурации 1С, изменился.
ЗаполнитьДокумент(Ссылка, ДанныеЗаполнения, Источник)
2. Исправление ошибки в 1С
Ссылка, ДанныеЗаполнения, Источник – это и есть фактические параметры. Соответственно, когда вызываем эту функцию в 1С 8.3, мы должны передавать эти параметры, иначе получим ошибку.
Теперь необходимо решить, почему мы передаем недостаточно фактических параметров и где взять нужные. Если мы используем типовые методы в наших доработках, то идем по следующему пути.
Выбираем вызов функции 1С, которая возвращает ошибку, и нажимаем на F12. Так мы найдем ее объявление. Прямо перед функцией сможете увидеть комментарий разработчиков, где будут перечислены необходимые параметры и их тип. Если все равно не очень понятно, каким именно параметром нужно заполнить, то есть вариант использовать отладку. Просто ставим точку остановки, и можно будет попасть сюда типовым образом. Например, если стоит вопрос о заполнении документа, то достаточно будет использовать «Заполнить на основании» в Обработчике событий формы.
Обработчик событий формы
Как только 1С покажет, что вы находитесь в отладке, то выделите реквизит, параметр которого вам необходим и нажмите Shift+F9. Вы увидите, как именно выглядит реквизит, которого вам не хватает. Остается только заполнить его в вызове функций в вашем коде.
Если же речь идет о какой-то самописной функции или методе, который возвращает такую ошибку, то можно удалить лишний параметр в том случае, если вы уверены, что в коде он не используется и его удаление не нарушит логику дальнейших действий 1С.
К сожалению, невозможно предложить универсальное решение этой ошибки программы 1С, но если понять принцип, ее исправление не должно занимать много времени и сил. В любом случае, если у вас появляются подобного рода ошибки, лучше обратитесь к фирме, которая вас обслуживает, чтобы решить проблему.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Недостаточно фактических параметров – такая ошибка программы 1С не часто возникает при работе с типовыми конфигурациями, отчего еще больше обескураживает пользователя, так как не является заурядной проблемой. Чаще всего она появляется в результате доработки конфигурации 1С вне зависимости от того, насколько качественно конфигурация дорабатывалась. Скорее всего, эта ошибка связана с тем, что конфигурация обновилась и метод, который раньше использовался в доработке конфигурации 1С, изменился.
ЗаполнитьДокумент(Ссылка, ДанныеЗаполнения, Источник)
2. Исправление ошибки в 1С
Ссылка, ДанныеЗаполнения, Источник – это и есть фактические параметры. Соответственно, когда вызываем эту функцию в 1С 8.3, мы должны передавать эти параметры, иначе получим ошибку.
Теперь необходимо решить, почему мы передаем недостаточно фактических параметров и где взять нужные. Если мы используем типовые методы в наших доработках, то идем по следующему пути.
Выбираем вызов функции 1С, которая возвращает ошибку, и нажимаем на F12. Так мы найдем ее объявление. Прямо перед функцией сможете увидеть комментарий разработчиков, где будут перечислены необходимые параметры и их тип. Если все равно не очень понятно, каким именно параметром нужно заполнить, то есть вариант использовать отладку. Просто ставим точку остановки, и можно будет попасть сюда типовым образом. Например, если стоит вопрос о заполнении документа, то достаточно будет использовать «Заполнить на основании» в Обработчике событий формы.
Обработчик событий формы
Как только 1С покажет, что вы находитесь в отладке, то выделите реквизит, параметр которого вам необходим и нажмите Shift+F9. Вы увидите, как именно выглядит реквизит, которого вам не хватает. Остается только заполнить его в вызове функций в вашем коде.
Если же речь идет о какой-то самописной функции или методе, который возвращает такую ошибку, то можно удалить лишний параметр в том случае, если вы уверены, что в коде он не используется и его удаление не нарушит логику дальнейших действий 1С.
К сожалению, невозможно предложить универсальное решение этой ошибки программы 1С, но если понять принцип, ее исправление не должно занимать много времени и сил. В любом случае, если у вас появляются подобного рода ошибки, лучше обратитесь к фирме, которая вас обслуживает, чтобы решить проблему.
Специалист компании «Кодерлайн»
Вас могут заинтересовать следующие статьи:
Читайте также: