Как исправить ошибку «Недопустимое значение параметра»?

База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Недопустимое значение параметра»?

Просмотр 1 ветки ответов
  • Автор
    Записи
    • #38764
      Фото аватараOdineski
      Участник

        Недопустимое значение параметра (параметр номер ‘1’)
        {ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль(322)}:ЗаполнитьЗначенияСвойств(СтрокаРасшифровки, ДанныеОбъектРасчетов);
        {ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль(73)}:ЗаполнитьРасшифровкуСписания(СтрокаДокумента, ДокументОбъект, РеквизитыХозОперации, НастройкиЗагрузки, ДоступныеСтатьиДДС);
        {ОбщийМодуль.КлиентБанкСервер.Модуль(707)}:ЗаполнитьРеквизитыСписания(ДокументыКЗагрузке, СтрокаДокумента, ДокументОбъект, НастройкиЗагрузки, Префикс);
        {Обработка.КлиентБанк.МодульМенеджера(326)}:КлиентБанкСервер.СоздатьДокументы(ДокументыКЗагрузке, БанковскийСчет, ПараметрыЗагрузки);
        {(1)}:Обработки.КлиентБанк.Загрузить(Параметры[0],Параметры[1])
        {ОбщийМодуль.ОбщегоНазначения.Модуль(6584)}:Выполнить(СтрокаВызова); // АПК:487 Исполняемый код безопасен.
        {ОбщийМодуль.ДлительныеОперации.Модуль(1830)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
        {ОбщийМодуль.ДлительныеОперации.Модуль(1791)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);
        {ОбщийМодуль.ДлительныеОперации.Модуль(1804)}:ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, СтекЗапуска, ИнформацияОбОшибке);

        [ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка, ОшибкаКонфигурации]
        по причине:
        Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
        [ОшибкаВоВремяВыполненияВстроенногоЯзыка]
        по причине:
        Недопустимое значение параметра (параметр номер ‘1’)
        [ОшибкаИспользованияВстроенногоЯзыка]
        по причине:
        {ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль(322)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
        по причине:
        Недопустимое значение параметра (параметр номер ‘1’)

      • #38765
        bot_avaOdin — Одинэсник
        Участник

          Ошибка возникает именно в этой строке:

          Сообщение:

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

          Метод ожидает, что первым параметром будет, например:

          — строка табличной части;
          — строка таблицы значений;
          — структура;
          — объект с доступными для записи свойствами.

          А фактически СтрокаРасшифровки, скорее всего, равна Неопределено, содержит ссылку вместо объекта, является обычным значением или вообще не была создана.

          ## Наиболее вероятная причина

          Перед выполнением строки:

          не была добавлена строка в табличную часть РасшифровкаПлатежа.

          Должно быть примерно так:

          Если строка должна добавляться только при определенном условии:

          ## Что проверить непосредственно перед строкой 322

          В процедуре ЗаполнитьРасшифровкуСписания найдите примерно строки 300-322 и проверьте, где присваивается значение переменной:

          Должно присутствовать присваивание одного из видов:

          или:

          или:

          Если такого присваивания нет, переменная не содержит допустимую строку.

          ## Временная диагностика

          Перед проблемной строкой можно добавить проверку:

          Это даст более понятную ошибку и подтвердит, какая переменная не заполнена.

          Можно также временно записать в журнал регистрации:

          Но если СтрокаРасшифровки равна Неопределено, ТипЗнч() это покажет не всегда удобно. Надежнее проверять явно:

          ## Важный момент: первый параметр является приемником

          Правильное использование:

          Неправильные варианты:

          Ссылка на документ не является строкой табличной части, которую можно заполнять свойствами.

          ## Возможная ошибка после предыдущего исправления

          В предыдущем сообщении у вас была ошибка с переменной:

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

          Например, мог получиться такой код:

          Это неправильно. Сначала нужно создать строку, затем заполнить ее:

          ## Если строка должна переиспользоваться

          Иногда строка расшифровки создается только один раз, а затем заполняется в цикле. В этом случае нужно проверить логику:

          Однако если каждое назначение платежа должно быть отдельной строкой, правильнее добавлять новую строку на каждой итерации:

          ## Проверьте второй параметр

          В данном сообщении ошибка указывает на первый параметр, но после его исправления может обнаружиться проблема с ДанныеОбъектРасчетов.

          Перед заполнением можно проверить его тип:

          Если это структура, заполнение допустимо:

          Если это строка таблицы значений, также допустимо:

          Но если там находится, например, число, ссылка или строка текста, использовать ее в качестве второго параметра нельзя:

          ## Рекомендуемый вариант исправления

          В процедуре ЗаполнитьРасшифровкуСписания блок должен иметь общий смысл примерно такой:

          Если строка уже создается выше, тогда добавлять вторую строку не нужно. Нужно только убедиться, что присваивание выполняется до ЗаполнитьЗначенияСвойств:

          ## Отдельно о расширении

          В стеке видно два модуля:

          и:

          Это похоже на то, что используется расширение конфигурации ЗаполнениеКассовыхБанковскихДок, в котором есть собственная версия общего модуля КлиентБанкСервер.

          Поэтому нужно проверить не только основной общий модуль, но и расширение:

          Вероятные причины:

          1. Расширение рассчитано на другую версию конфигурации.
          2. В расширении изменена процедура ЗаполнитьРасшифровкуСписания.
          3. После обновления типовой конфигурации расширение осталось от старого релиза.
          4. При объединении был потерян участок, создающий СтрокаРасшифровки.
          5. В расширении используется несовместимая версия процедуры ЗаполнитьРеквизитыСписания.

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

          В первую очередь проверьте, что до строки 322 выполняется:

          Если этого присваивания нет либо оно находится после строки 322, это и есть причина текущей ошибки.

      Просмотр 1 ветки ответов
      • Для ответа в этой теме необходимо авторизоваться.
      База знаний 1С