Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
29 мар 2024, 17:39

Индекс находится за границами массива 1с

Автор Alexsei42, 10 мар 2016, 18:10

0 Пользователей и 1 гость просматривают эту тему.

Alexsei42

Помогите, после обновления конфигурации " Бухгалтерия предприятия" на 2.0.65.14 при запуске программы практически сразу вылезает ошибка :
Индекс находится за границами массива

нажимаешь подробно там такая запись

{ОбщийМодуль.ЭлектронныеДокументыСлужебный.Модуль(4544)}: Индекс находится за границами массива
                КодОшибки = МассивПараметровОшибки[5];
 
попробовал обновиться на 2.0.65.16 проблема осталась.

при нажатии конфигуратор открывается этот код

Процедура ПолучитьРезультатПроверкиВебСервисом(ДанныеКонтрагентов, Отбор) Экспорт
   
   // Проверяем только тех контрагентов, которые соответствуют указанному отбору
   ДанныеКонтрагентовДляПроверкиСервисом = ДанныеКонтрагентов.НайтиСтроки(Отбор);
   КоличествоКонтрагентов = ДанныеКонтрагентовДляПроверкиСервисом.Количество();

   Если КоличествоКонтрагентов = 0 Тогда
      // Нет данных для проверки
      Возврат;
   КонецЕсли;
   
   РазмерПорции = 10000;
   
   // Разбиваем всю таблицу на блоки запросов
   КоличествоЗапросов = ?(КоличествоКонтрагентов % РазмерПорции = 0, КоличествоКонтрагентов / РазмерПорции, Цел(КоличествоКонтрагентов / РазмерПорции) + 1);
      
   // Выполняем несколько запросов. В каждом запросе не более 10000 строк
   Для НомерПорции = 1 По КоличествоЗапросов Цикл
      
      МинимальныйНомерКонтрагента    = Мин(РазмерПорции * (НомерПорции - 1), КоличествоКонтрагентов);
      МаксимальныйНомерКонтрагента    = Мин(РазмерПорции * НомерПорции, КоличествоКонтрагентов) - 1;
      
      ИмяВременногоФайлаЗапросаСостояний = ТекущееИмяВременногоФайла("xml");
      ЗапросСостояний = Новый ЗаписьXML;
      ЗапросСостояний.ОткрытьФайл(ИмяВременногоФайлаЗапросаСостояний, "windows-1251");
      ЗапросСостояний.ЗаписатьОбъявлениеXML();
      ЗапросСостояний.ЗаписатьНачалоЭлемента("Abonents");
         
      Для ИндексТекущегоКонтрагента = МинимальныйНомерКонтрагента По МаксимальныйНомерКонтрагента Цикл
         
         ДанныеКонтрагента = ДанныеКонтрагентовДляПроверкиСервисом[ИндексТекущегоКонтрагента];
         
         ЗапросСостояний.ЗаписатьНачалоЭлемента("Abonent");
            ЗапросСостояний.ЗаписатьНачалоЭлемента("INN");
               ЗапросСостояний.ЗаписатьТекст(ДанныеКонтрагента.ИНН);
            ЗапросСостояний.ЗаписатьКонецЭлемента();
            ЗапросСостояний.ЗаписатьНачалоЭлемента("KPP");
               ЗапросСостояний.ЗаписатьТекст(ДанныеКонтрагента.КПП);
            ЗапросСостояний.ЗаписатьКонецЭлемента();
         ЗапросСостояний.ЗаписатьКонецЭлемента();
         
      КонецЦикла;
      ЗапросСостояний.ЗаписатьКонецЭлемента();
      ЗапросСостояний.Закрыть();
      
      Соединение = ЭлектронныеДокументыВнутренний.ПолучитьСоединение(Перечисления.СпособыОбменаЭД.ЧерезСервис1СЭДО);
      АдресРесурса = "GetMassInfo";
      
      // возможно будет ответ от сервера
      ИмяФайлаРезультата = ТекущееИмяВременногоФайла("xml"); ДанныеФайла = "";
      Попытка
         Соединение.ОтправитьДляОбработки(ИмяВременногоФайлаЗапросаСостояний, АдресРесурса, ИмяФайлаРезультата);
         
         ДанныеФайла = ПрочитатьТекстИзФайла(ИмяФайлаРезультата, , Истина);
         ОбработатьОтветСервиса(ДанныеФайла, ДанныеКонтрагентовДляПроверкиСервисом);
      Исключение
         ЕстьОшибки = Истина;
         
         ФайлРезультата = Новый ТекстовыйДокумент;
         ФайлРезультата.Прочитать(ИмяФайлаРезультата, КодировкаТекста.UTF8);
         Результат = ФайлРезультата.ПолучитьТекст();
         
         ШаблонСообщения = НСтр("ru = 'При проверке состояния контрагентов на сервисе 1С-ЭДО возникла ошибка:'");
         
         Файл = Новый Файл(Файл);
         ТекстЗаголовкаСообщения = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
            ШаблонСообщения, Файл.Имя);
         Если ЗначениеЗаполнено(Результат) Тогда
            Результат = СтрЗаменить(Результат, """", "");
            Результат = СтрЗаменить(Результат, ":", ",");
            МассивПараметровОшибки = СтроковыеФункцииКлиентСервер.РазложитьСтрокуВМассивПодстрок(Результат, ",");
            
            КодОшибки = МассивПараметровОшибки[5];
            
            ШаблонОшибки = НСтр("ru = '%1: %2.'");
            ТекстОшибкиЭДО = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(ШаблонОшибки,
               МассивПараметровОшибки[7], МассивПараметровОшибки[1]);
            
            ТекстОшибки = ЭлектронныеДокументыПовтИсп.ПолучитьСообщениеОбОшибке(
               КодОшибки, ТекстОшибкиЭДО);
            
            ТекстСообщения = ТекстЗаголовкаСообщения + Символы.ПС + ТекстОшибки;
         Иначе
            ИнформацияОбОшибке = ИнформацияОбОшибке();
            Результат = ПодробноеПредставлениеОшибки(ИнформацияОбОшибке);
            ТекстСообщения = КраткоеПредставлениеОшибки(ИнформацияОбОшибке);
         КонецЕсли;
         
         ЭлектронныеДокументыСлужебныйВызовСервера.ОбработатьИсключениеПоЭДНаСервере(ТекстЗаголовкаСообщения,
            Результат, ТекстСообщения);
      КонецПопытки;
      
      УдалитьФайлы(ИмяВременногоФайлаЗапросаСостояний);
      УдалитьФайлы(ИмяФайлаРезультата);
   КонецЦикла;
   
КонецПроцедуры

Kironten

Ну а если забить на ошибку и продолжить?
Обновиться дает?

Alexsei42

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

Kironten

Если бы вы обновились без проблем, ошибок бы не было.
А то, что у вас обновилась основная конфигурация, без конфигурации базы данных, это еще не "обновление без проблем".
Ну да ладно. Это все лирика.
Короче, как по мне, то тут имеет место некорректная обработка исключительной ситуации.
В моем случае, получаю ошибку:
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
<html><head>
<title>401 Authorization Required</title>
</head><body>
<h1>Authorization Required</h1>
<p>This server could not verify that you
are authorized to access the document
requested.  Either you supplied the wrong
credentials (e.g., bad password), or your
browser doesn't understand how to supply
the credentials required.</p>
<hr>
<address>Apache/2.2.15 (CentOS) Server at 1c-edo.ru Port 80</address>
</body></html>

потом идет разложение текста ошибки на элементы массива, по разделителю "," (запятая).
В результате имеем массив с 3 элементами. Ну и естественно, при обращении к 5-му и далее к 7-му элементу массива в коде (по индексам) мы получаем ошибки.

Перевожу на русский - Это косяк 1с.

Alexsei42

Цитата: Kironten от 10 мар 2016, 19:25Перевожу на русский - Это косяк 1с.
и что мне дальше делать? завтра база должна работать.


Kironten

Цитата: Alexsei42 от 10 мар 2016, 19:28
Цитата: Kironten от 10 мар 2016, 19:25Перевожу на русский - Это косяк 1с.
и что мне дальше делать? завтра база должна работать.
Честно? А хрен его знает.
Это же я текст своей ошибки привел, а какая у Вас, я не знаю.
Если вот прям завтра должна работать - откатитесь назад на копию базы до обновления.
Возможно сервер авторизации упал, и если его поднять может быть все заработает (в принципе я думаю это не такой уж невозможный вариант, учитывая, что до Вас никто на это не жаловался, а ведь релиз 65.16 еще в феврале вышел).
А вообще, вы ведь не будете код сами править - вот и напишите в 1с.

Людмила Баулина

У меня такая  же проблема!!!!!!!!!!!!!!

Kironten

Цитата: Людмила Баулина от 10 мар 2016, 20:23
У меня такая  же проблема!!!!!!!!!!!!!!
Ну поскольку проблемка приобретает массовый характер - ждите.
Завтра либо все само заработает, либо 1с выпустит обновление с исправлением.
А скорее всего и то и то будет.

Людмила Баулина


Alexsei42

Цитата: Людмила Баулина от 10 мар 2016, 21:47
http://forum.infostart.ru/forum15/topic148012/
Отключить инет и обновиться!
Огромное спасибо Вы меня выручили. Отключил интернет обновление со скрипом, в разы дольше чем обычно, прошло.
вот что выдало:
Ошибка работы с Интернет:   Couldn't resolve host name
Выполняется обновление информационной базы с версии 2.0.65.6 на версию 2.0.65.16
Обновление информационной базы выполнено успешно.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск