Вторник, 08.10.2024, 03:45
Главная Регистрация RSS
Приветствую Вас, Гость
[ Новые сообщения · Участники · Правила форума · Поиск · RSS ]
  • Страница 1 из 1
  • 1
Ошибка открытия в базе с режимом совместимости "Версия 8.1"
MaxДата: Пятница, 06.04.2018, 10:48 | Сообщение # 1
Генерал-майор
Группа: Пользователи
Сообщений: 276
Репутация: 148
Статус: Оффлайн
{ВнешняяОбработка.ирКэш(783)}: Индекс находится за границами массива

В указанной обработке видим следующий код:

Код
Если ТекущийРежимСовместимости = Метаданные.СвойстваОбъектов.РежимСовместимости.НеИспользовать Тогда
          СисИнфо = Новый СистемнаяИнформация;
          Фрагменты = ирОбщий.ПолучитьМассивИзСтрокиСРазделителемЛкс(СисИнфо.ВерсияПриложения);
   Иначе
          // Пример значения СтрокаВерсии = Версия8_3_1
          СтрокаВерсии = СтрЗаменить(ТекущийРежимСовместимости, "Версия", "");
          Фрагменты = ирОбщий.ПолучитьМассивИзСтрокиСРазделителемЛкс(СтрокаВерсии, "_");
   КонецЕсли; 
   Результат = Число(Фрагменты[0]) * 100 * 1000 + Число(Фрагменты[1]) * 1000 + Число(Фрагменты[2]);

Как видим, код "ориентирован" на то, что в режиме совместимости будет указана строка из трех чисел-фрагментов и не ориентирован на строку "Версия8_1".

Мой вариант исправления: последнюю строку (где идет присвоение переменной "Результат") заменить на


Код
Результат = Число(Фрагменты[0]) * 100 * 1000 + Число(Фрагменты[1]) * 1000;
Если Фрагменты.Количество() > 2 Тогда
          Результат = Результат + Число(Фрагменты[2]);
   КонецЕсли;
 
tormozitДата: Пятница, 06.04.2018, 22:44 | Сообщение # 2
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Спасибо. Ошибку воспроизвел.
 
tormozitДата: Воскресенье, 08.04.2018, 21:11 | Сообщение # 3
Генералиссимус
Группа: Администраторы
Сообщений: 6386
Репутация: 165
Статус: Оффлайн
Исправлено в 4.47
 
  • Страница 1 из 1
  • 1
Поиск: