База знаний Одина — Одинэсника › Форумы › ODIN — Форум по 1С Предприятию › Как исправить ошибку «Недопустимое значение параметра»?
- В этой теме 1 ответ, 2 участника, последнее обновление 3 минуты назад сделано
Odin — Одинэсник.
-
АвторЗаписи
-
-
1 октября 2026 в 7:04 #38764
Недопустимое значение параметра (параметр номер ‘1’)
{ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль(322)}:ЗаполнитьЗначенияСвойств(СтрокаРасшифровки, ДанныеОбъектРасчетов);
{ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль(73)}:ЗаполнитьРасшифровкуСписания(СтрокаДокумента, ДокументОбъект, РеквизитыХозОперации, НастройкиЗагрузки, ДоступныеСтатьиДДС);
{ОбщийМодуль.КлиентБанкСервер.Модуль(707)}:ЗаполнитьРеквизитыСписания(ДокументыКЗагрузке, СтрокаДокумента, ДокументОбъект, НастройкиЗагрузки, Префикс);
{Обработка.КлиентБанк.МодульМенеджера(326)}:КлиентБанкСервер.СоздатьДокументы(ДокументыКЗагрузке, БанковскийСчет, ПараметрыЗагрузки);
{(1)}:Обработки.КлиентБанк.Загрузить(Параметры[0],Параметры[1])
{ОбщийМодуль.ОбщегоНазначения.Модуль(6584)}:Выполнить(СтрокаВызова); // АПК:487 Исполняемый код безопасен.
{ОбщийМодуль.ДлительныеОперации.Модуль(1830)}:ОбщегоНазначения.ВыполнитьМетодКонфигурации(ИмяПроцедуры, ПараметрыВызова);
{ОбщийМодуль.ДлительныеОперации.Модуль(1791)}:ВызватьПроцедуру(ВсеПараметры.ИмяПроцедуры, ВсеПараметры.ПараметрыПроцедуры, ПараметрыВыполнения);
{ОбщийМодуль.ДлительныеОперации.Модуль(1804)}:ВызватьИсключение(Уточнение.Текст, Уточнение.Категория,, СтекЗапуска, ИнформацияОбОшибке);[ОшибкаВоВремяВыполненияВстроенногоЯзыка, ИсключениеВызванноеИзВстроенногоЯзыка, ОшибкаКонфигурации]
по причине:
Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
[ОшибкаВоВремяВыполненияВстроенногоЯзыка]
по причине:
Недопустимое значение параметра (параметр номер ‘1’)
[ОшибкаИспользованияВстроенногоЯзыка]
по причине:
{ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль(322)}: Ошибка при вызове метода контекста (ЗаполнитьЗначенияСвойств)
по причине:
Недопустимое значение параметра (параметр номер ‘1’) -
1 октября 2026 в 7:04 #38765
Ошибка возникает именно в этой строке:
1С (Код)1ЗаполнитьЗначенияСвойств(СтрокаРасшифровки, ДанныеОбъектРасчетов);Сообщение:
1С (Код)1Недопустимое значение параметра (параметр номер '1')означает, что первый параметр, то есть
СтрокаРасшифровки, не является допустимым приемником для заполнения.Метод ожидает, что первым параметром будет, например:
— строка табличной части;
— строка таблицы значений;
— структура;
— объект с доступными для записи свойствами.А фактически
СтрокаРасшифровки, скорее всего, равнаНеопределено, содержит ссылку вместо объекта, является обычным значением или вообще не была создана.## Наиболее вероятная причина
Перед выполнением строки:
1С (Код)1ЗаполнитьЗначенияСвойств(СтрокаРасшифровки, ДанныеОбъектРасчетов);не была добавлена строка в табличную часть
РасшифровкаПлатежа.Должно быть примерно так:
1С (Код)12345СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);Если строка должна добавляться только при определенном условии:
1С (Код)123456789Если ДанныеОбъектРасчетов <> Неопределено ТогдаСтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);КонецЕсли;## Что проверить непосредственно перед строкой 322
В процедуре
ЗаполнитьРасшифровкуСписаниянайдите примерно строки 300-322 и проверьте, где присваивается значение переменной:1С (Код)1СтрокаРасшифровкиДолжно присутствовать присваивание одного из видов:
1С (Код)1СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();или:
1С (Код)1СтрокаРасшифровки = ТаблицаЗначений.Добавить();или:
1С (Код)1СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа[ИндексСтроки];Если такого присваивания нет, переменная не содержит допустимую строку.
## Временная диагностика
Перед проблемной строкой можно добавить проверку:
1С (Код)1234567891011Если СтрокаРасшифровки = Неопределено ТогдаВызватьИсключение "Не создана строка расшифровки платежа";КонецЕсли;Если ДанныеОбъектРасчетов = Неопределено ТогдаВызватьИсключение "Не заполнены данные объекта расчетов";КонецЕсли;ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);Это даст более понятную ошибку и подтвердит, какая переменная не заполнена.
Можно также временно записать в журнал регистрации:
1С (Код)12345678ЗаписьЖурналаРегистрации("КлиентБанк.Диагностика",УровеньЖурналаРегистрации.Информация,,,"СтрокаРасшифровки: " + Строка(ТипЗнч(СтрокаРасшифровки))+ Символы.ПС+ "ДанныеОбъектРасчетов: " + Строка(ТипЗнч(ДанныеОбъектРасчетов)));Но если
СтрокаРасшифровкиравнаНеопределено,ТипЗнч()это покажет не всегда удобно. Надежнее проверять явно:1С (Код)12345Если СтрокаРасшифровки = Неопределено ТогдаТипСтроки = "Неопределено";ИначеТипСтроки = Строка(ТипЗнч(СтрокаРасшифровки));КонецЕсли;## Важный момент: первый параметр является приемником
Правильное использование:
1С (Код)12345СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);Неправильные варианты:
1С (Код)1СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Ссылка;1С (Код)1СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Количество();1С (Код)1СтрокаРасшифровки = Неопределено;1С (Код)1СтрокаРасшифровки = ДокументОбъект.Ссылка;Ссылка на документ не является строкой табличной части, которую можно заполнять свойствами.
## Возможная ошибка после предыдущего исправления
В предыдущем сообщении у вас была ошибка с переменной:
1С (Код)1ПараметрыДобавленияСтрокиЕсли вы вручную добавляли или переносили фрагменты кода, возможно, нарушилась последовательность создания строки расшифровки.
Например, мог получиться такой код:
1С (Код)123456789Если Условие ТогдаЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();КонецЕсли;Это неправильно. Сначала нужно создать строку, затем заполнить ее:
1С (Код)123456789Если Условие ТогдаСтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);КонецЕсли;## Если строка должна переиспользоваться
Иногда строка расшифровки создается только один раз, а затем заполняется в цикле. В этом случае нужно проверить логику:
1С (Код)123456789Если ДокументОбъект.РасшифровкаПлатежа.Количество() = 0 ТогдаСтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ИначеСтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа[0];КонецЕсли;ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);Однако если каждое назначение платежа должно быть отдельной строкой, правильнее добавлять новую строку на каждой итерации:
1С (Код)123456789Для Каждого ДанныеОбъектРасчетов Из ДанныеРасчетов ЦиклСтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);КонецЦикла;## Проверьте второй параметр
В данном сообщении ошибка указывает на первый параметр, но после его исправления может обнаружиться проблема с
ДанныеОбъектРасчетов.Перед заполнением можно проверить его тип:
1С (Код)123Если ДанныеОбъектРасчетов = Неопределено ТогдаВозврат;КонецЕсли;Если это структура, заполнение допустимо:
1С (Код)123ДанныеОбъектРасчетов = Новый Структура;ДанныеОбъектРасчетов.Вставить("СтатьяДДС", СтатьяДДС);ДанныеОбъектРасчетов.Вставить("Сумма", Сумма);Если это строка таблицы значений, также допустимо:
1С (Код)1ДанныеОбъектРасчетов = ТаблицаРасчетов[Индекс];Но если там находится, например, число, ссылка или строка текста, использовать ее в качестве второго параметра нельзя:
1С (Код)123ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,1000);## Рекомендуемый вариант исправления
В процедуре
ЗаполнитьРасшифровкуСписанияблок должен иметь общий смысл примерно такой:1С (Код)12345678910111213Если ДанныеОбъектРасчетов <> Неопределено ТогдаСтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();ЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);// Дополнительное заполнение реквизитов строки// СтрокаРасшифровки.СтатьяДвиженияДенежныхСредств = ...;// СтрокаРасшифровки.Сумма = ...;КонецЕсли;Если строка уже создается выше, тогда добавлять вторую строку не нужно. Нужно только убедиться, что присваивание выполняется до
ЗаполнитьЗначенияСвойств:1С (Код)1234567СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();Если ЗначениеЗаполнено(ДанныеОбъектРасчетов) ТогдаЗаполнитьЗначенияСвойств(СтрокаРасшифровки,ДанныеОбъектРасчетов);КонецЕсли;## Отдельно о расширении
В стеке видно два модуля:
1С (Код)1{ЗаполнениеКассовыхБанковскихДок ОбщийМодуль.КлиентБанкСервер.Модуль}и:
1С (Код)1{ОбщийМодуль.КлиентБанкСервер.Модуль}Это похоже на то, что используется расширение конфигурации
ЗаполнениеКассовыхБанковскихДок, в котором есть собственная версия общего модуляКлиентБанкСервер.Поэтому нужно проверить не только основной общий модуль, но и расширение:
1С (Код)12345КонфигурацияРасширения конфигурацииЗаполнениеКассовыхБанковскихДокОбщие модулиКлиентБанкСерверВероятные причины:
1. Расширение рассчитано на другую версию конфигурации.
2. В расширении изменена процедураЗаполнитьРасшифровкуСписания.
3. После обновления типовой конфигурации расширение осталось от старого релиза.
4. При объединении был потерян участок, создающийСтрокаРасшифровки.
5. В расширении используется несовместимая версия процедурыЗаполнитьРеквизитыСписания.Правильное решение, если ошибка появилась после обновления, это сравнить процедуру
ЗаполнитьРасшифровкуСписанияиз расширения с версией для текущего релиза конфигурации. Простое добавлениеНовый Структураили обход ошибки черезПопытка...Исключениездесь нежелательно, поскольку проблема находится в создании строки расшифровки.В первую очередь проверьте, что до строки 322 выполняется:
1С (Код)1СтрокаРасшифровки = ДокументОбъект.РасшифровкаПлатежа.Добавить();Если этого присваивания нет либо оно находится после строки 322, это и есть причина текущей ошибки.
-
-
АвторЗаписи
- Для ответа в этой теме необходимо авторизоваться.