Ошибка при перезаполнении переменной ФиксированныйМассив другим фиксированным массивом
После обновления плаформы до версии 8.3.20.1996 в 1С Рознице (2.3.8.22) стала выскакивать ошибка:
Я посмотрел. Вот процедура которая сломалась:
Как я понимаю процедура пытается заменить фиксированный массив другим фиксированным массивом, а так как массив менять нельзя, то программа выдает ошибку. Как быть в этой ситуации. Прошу подсказать...
У Фиксированного массива
Методы:
ВГраница (UBound)
Количество (Count)
Найти (Find)
Получить (Get)
Заменить метода нет...
Недопустимое значение
{ОбщийМодуль.ОбщегоНазначенияРТ.Модуль(1019)}:ПараметрыВыбора = Новый ФиксированныйМассив(МассивДляВнешнихОбработок);
{Справочник.СкидкиНаценки.Форма.ФормаЭлемента.Форма(117)}:ОбщегоНазначенияРТ.УдалитьПараметрыВыбораРасширений(Элементы.ВнешняяОбработка.ПараметрыВыбора);
по причине:
Недопустимое значение
{ОбщийМодуль.ОбщегоНазначенияРТ.Модуль(1019)}:ПараметрыВыбора = Новый ФиксированныйМассив(МассивДляВнешнихОбработок);
{Справочник.СкидкиНаценки.Форма.ФормаЭлемента.Форма(117)}:ОбщегоНазначенияРТ.УдалитьПараметрыВыбораРасширений(Элементы.ВнешняяОбработка.ПараметрыВыбора);
по причине:
Недопустимое значение
Я посмотрел. Вот процедура которая сломалась:
// Удаляет устаревшие параметры выбора
// Параметры:
// ПараметрыВыбора - Фиксированные массив
Процедура УдалитьПараметрыВыбораРасширений(ПараметрыВыбора) Экспорт
Если ПараметрыВыбора.Количество() > 0 Тогда
МассивДляВнешнихОбработок = Новый Массив;
СтрокаПоиска = НСтр("ru = '<Объект из отключенного расширения конфигурации>'");
Для каждого ПараметрВыбора Из ПараметрыВыбора Цикл
Если СтрНайти(ПараметрВыбора.Значение, СтрокаПоиска) = 0 Тогда
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора.Значение);
КонецЕсли;
КонецЦикла;
ПараметрыВыбора = Новый ФиксированныйМассив(МассивДляВнешнихОбработок);
КонецЕсли;
Конецпроцедуры
ПоказатьКак я понимаю процедура пытается заменить фиксированный массив другим фиксированным массивом, а так как массив менять нельзя, то программа выдает ошибку. Как быть в этой ситуации. Прошу подсказать...
У Фиксированного массива
Методы:
ВГраница (UBound)
Количество (Count)
Найти (Find)
Получить (Get)
Заменить метода нет...
Найденные решения
(1)
Да и сам подход бредовый – искать НСтр("ru = '<Объект из отключенного расширения конфигурации>'") в значении параметра отбора.
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора.Значение);
Код процедуры неправильный. В массив надо добавлять не значение из параметра выбора, весть параметр выбора.
Да и сам подход бредовый – искать НСтр("ru = '<Объект из отключенного расширения конфигурации>'") в значении параметра отбора.
(2) Да Вы правы. Сделал как Вы сказали и заработало.
Отредактировал через расширение.
Отредактировал через расширение.
&ИзменениеИКонтроль("УдалитьПараметрыВыбораРасширений")
Процедура ИСП32_УдалитьПараметрыВыбораРасширений(ПараметрыВыбора)
Если ПараметрыВыбора.Количество() > 0 Тогда
МассивДляВнешнихОбработок = Новый Массив;
СтрокаПоиска = НСтр("ru = '<Объект из отключенного расширения конфигурации>'");
Для каждого ПараметрВыбора Из ПараметрыВыбора Цикл
Если СтрНайти(ПараметрВыбора.Значение, СтрокаПоиска) = 0 Тогда
#Удаление
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора.Значение);
#КонецУдаления
#Вставка
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора);
#КонецВставки
КонецЕсли;
КонецЦикла;
ПараметрыВыбора = Новый ФиксированныйМассив(МассивДляВнешнихОбработок);
КонецЕсли;
КонецПроцедуры
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1)
Да и сам подход бредовый – искать НСтр("ru = '<Объект из отключенного расширения конфигурации>'") в значении параметра отбора.
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора.Значение);
Код процедуры неправильный. В массив надо добавлять не значение из параметра выбора, весть параметр выбора.
Да и сам подход бредовый – искать НСтр("ru = '<Объект из отключенного расширения конфигурации>'") в значении параметра отбора.
(2) Да Вы правы. Сделал как Вы сказали и заработало.
Отредактировал через расширение.
Отредактировал через расширение.
&ИзменениеИКонтроль("УдалитьПараметрыВыбораРасширений")
Процедура ИСП32_УдалитьПараметрыВыбораРасширений(ПараметрыВыбора)
Если ПараметрыВыбора.Количество() > 0 Тогда
МассивДляВнешнихОбработок = Новый Массив;
СтрокаПоиска = НСтр("ru = '<Объект из отключенного расширения конфигурации>'");
Для каждого ПараметрВыбора Из ПараметрыВыбора Цикл
Если СтрНайти(ПараметрВыбора.Значение, СтрокаПоиска) = 0 Тогда
#Удаление
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора.Значение);
#КонецУдаления
#Вставка
МассивДляВнешнихОбработок.Добавить(ПараметрВыбора);
#КонецВставки
КонецЕсли;
КонецЦикла;
ПараметрыВыбора = Новый ФиксированныйМассив(МассивДляВнешнихОбработок);
КонецЕсли;
КонецПроцедуры
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот