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

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

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

    Сообщение:

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

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

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

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

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

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

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

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

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

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

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

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

    или:

    или:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    и:

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

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

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

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

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

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

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

    База знаний 1С