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

1. AlexPilot 02.05.13 17:04 Сейчас в теме
У меня проблема: при формировании отчета выдает ошибку "индекс находится за границами массива"

Постоянно ругается,
вот кусок модуля:

// В процедуре можно доработать компоновщик перед выводом в отчет
// Изменения сохранены не будут
Процедура ДоработатьКомпоновщикПередВыводом(ВнешниеНаборыДанных) Экспорт

Если ЗначениеЗаполнено(Счет) Тогда
ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "Счет", Счет);
КонецЕсли;
Если ЗначениеЗаполнено(НачалоПериода) Тогда
ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "НачалоПериода", НачалоДня(НачалоПериода));
Иначе
ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "НачалоПериода", Дата(1, 1, 1));
КонецЕсли;
Если ЗначениеЗаполнено(КонецПериода) Тогда
ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "КонецПериода", КонецДня(КонецПериода));
Иначе
ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "КонецПериода", Дата(3999, 11, 1));
КонецЕсли;

ТиповыеОтчеты.ДобавитьОтбор(КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Отбор, "ПериодГруппировки",,ВидСравненияКомпоновкиДанных.Заполнено);
ТиповыеОтчеты.ДобавитьОтбор(КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0].Отбор, "Регистратор",,ВидСравненияКомпоновкиДанных.Заполнено);
ТиповыеОтчеты.ДобавитьОтбор(КомпоновщикНастроек.Настройки.Структура[1].Структура[0].Отбор, "Регистратор",,ВидСравненияКомпоновкиДанных.Заполнено);

ТиповыеОтчеты.УстановитьПараметрВывода(КомпоновщикНастроек.Настройки.Структура[0].Структура[0], "ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
ТиповыеОтчеты.УстановитьПараметрВывода(КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0], "ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);
ТиповыеОтчеты.УстановитьПараметрВывода(КомпоновщикНастроек.Настройки.Структура[1].Структура[0], "ВыводитьОтбор", ТипВыводаТекстаКомпоновкиДанных.НеВыводить);

Если Периодичность = 0 Тогда
КомпоновщикНастроек.Настройки.Структура[0].Использование = Ложь;
КомпоновщикНастроек.Настройки.Структура[1].Использование = Истина;
Иначе
КомпоновщикНастроек.Настройки.Структура[0].Использование = Истина;
КомпоновщикНастроек.Настройки.Структура[1].Использование = Ложь;
КонецЕсли;

ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "Периодичность", Периодичность);
ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "ПС", Символы.ПС);

Если ЗначениеЗаполнено(Подразделение) Тогда
ТиповыеОтчеты.ДобавитьОтбор(КомпоновщикНастроек, "Подразделение", Подразделение, ВидСравненияКомпоновкиДанных.ВИерархии);
КонецЕсли;

ПоказателиОтчета = ДанныеОтчета.ПоказателиОтчета;

ЛинияСплошная = Новый Линия(ТипЛинииЯчейкиТабличногоДокумента.Сплошная, 1);


ТекущийНаборПоказателей = "" + ПоказателиОтчета.БУ.Значение + ПоказателиОтчета.НУ.Значение + ПоказателиОтчета.ПР.Значение + ПоказателиОтчета.ВР.Значение + ПоказателиОтчета.ВалютнаяСумма.Значение + ПоказателиОтчета.Количество.Значение;

МассивПоказателей = Новый Массив;
МассивПоказателей.Добавить("БУ");
МассивПоказателей.Добавить("НУ");
МассивПоказателей.Добавить("ПР");
МассивПоказателей.Добавить("ВР");
МассивПоказателей.Добавить("ВалютнаяСумма");
МассивПоказателей.Добавить("Количество");

Если ТекущийНаборПоказателей <> мТекущийНаборПоказателей Тогда

МассивМакетов = Новый Массив;
МассивМакетов.Добавить("ПериодГруппировкиЗаголовок");
МассивМакетов.Добавить("ОбщиеИтогиЗаголовок");
МассивМакетов.Добавить("ОбщиеИтогиПодвал");
МассивМакетов.Добавить("ПроводкиЗаголовок");

Для Каждого ЭлементМакет Из МассивМакетов Цикл
СхемаКомпоновкиДанных.Макеты[ЭлементМакет].Макет = СтандартныеОтчеты.ПолучитьКопиюОписанияМакета(СхемаКомпоновкиДанных.Макеты[ЭлементМакет + "Образец"].Макет);
ОписаниеМакета = СхемаКомпоновкиДанных.Макеты[ЭлементМакет].Макет;

МассивСтрокДляУдаления = Новый Массив;
Индекс = 0;
Для Каждого ЭлементМассива Из МассивПоказателей Цикл
Если Не ПоказателиОтчета[ЭлементМассива].Значение Тогда
МассивСтрокДляУдаления.Добавить(ОписаниеМакета[Индекс]);
КонецЕсли;
Индекс = Индекс + 1;
КонецЦикла;

Для Каждого Строка Из МассивСтрокДляУдаления Цикл
ОписаниеМакета.Удалить(Строка);
КонецЦикла;

КоличествоСтрок = ОписаниеМакета.Количество();

// Обвести область
Если КоличествоСтрок > 0 Тогда
Для Индекс = 0 По 12 Цикл
ПоследняяСтрока = ?(ЭлементМакет = "ОбщиеИтогиПодвал" И Индекс < 4, 0, КоличествоСтрок - 1);
ПараметрГраницы = ТиповыеОтчеты.ПолучитьПараметр(ОписаниеМакета[0].Ячейки[Индекс].Оформление.Элементы, "СтильГраницы");
ТиповыеОтчеты.УстановитьПараметр(ПараметрГраницы.ЗначенияВложенныхПараметров, "СтильГраницы.Сверху", ЛинияСплошная);
ПараметрГраницы = ТиповыеОтчеты.ПолучитьПараметр(ОписаниеМакета[ПоследняяСтрока].Ячейки[Индекс].Оформление.Элементы, "СтильГраницы");
ТиповыеОтчеты.УстановитьПараметр(ПараметрГраницы.ЗначенияВложенныхПараметров, "СтильГраницы.Снизу", ЛинияСплошная);
КонецЦикла;
КонецЕсли;

Для Индекс = 1 По КоличествоСтрок - 1 Цикл
ОписаниеМакета[Индекс].Ячейки[0].Элементы.Очистить();
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[0].Оформление.Элементы, "ОбъединятьПоВертикали", Истина);
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[0].Оформление.Элементы, "Расшифровка", Неопределено, Ложь);
ОписаниеМакета[Индекс].Ячейки[1].Элементы.Очистить();
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[1].Оформление.Элементы, "ОбъединятьПоВертикали", Истина);
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[1].Оформление.Элементы, "Расшифровка", Неопределено, Ложь);
ОписаниеМакета[Индекс].Ячейки[2].Элементы.Очистить();
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[2].Оформление.Элементы, "ОбъединятьПоВертикали", Истина);
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[2].Оформление.Элементы, "Расшифровка", Неопределено, Ложь);
ОписаниеМакета[Индекс].Ячейки[3].Элементы.Очистить();
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[3].Оформление.Элементы, "ОбъединятьПоВертикали", Истина);
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[3].Оформление.Элементы, "Расшифровка", Неопределено, Ложь);
Если ЭлементМакет = "ПроводкиЗаголовок" Тогда
ОписаниеМакета[Индекс].Ячейки[5].Элементы.Очистить();
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[5].Оформление.Элементы, "ОбъединятьПоВертикали", Истина);
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[5].Оформление.Элементы, "Расшифровка", Неопределено, Ложь);
ОписаниеМакета[Индекс].Ячейки[8].Элементы.Очистить();
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[8].Оформление.Элементы, "ОбъединятьПоВертикали", Истина);
ТиповыеОтчеты.УстановитьПараметр(ОписаниеМакета[Индекс].Ячейки[8].Оформление.Элементы, "Расшифровка", Неопределено, Ложь);
КонецЕсли;
КонецЦикла;
КонецЦикла;
мТекущийНаборПоказателей = ТекущийНаборПоказателей;
КонецЕсли;

Если Не ПоказателиОтчета.БУ.Значение Тогда
ГруппаОтборов = КомпоновщикНастроек.Настройки.Отбор.Элементы.Добавить(Тип("ГруппаЭлементовОтбораКомпоновкиДанных"));
ГруппаОтборов.Использование = Истина;
ГруппаОтборов.ТипГруппы = ТипГруппыЭлементовОтбораКомпоновкиДанных.ГруппаИли;
Для Каждого ЭлементМассива Из МассивПоказателей Цикл
Если ЭлементМассива <> "БУ" И ПоказателиОтчета[ЭлементМассива].Значение Тогда
ТиповыеОтчеты.ДобавитьОтбор(ГруппаОтборов, ЭлементМассива + "Дт", 0, ВидСравненияКомпоновкиДанных.НеРавно);
ТиповыеОтчеты.ДобавитьОтбор(ГруппаОтборов, ЭлементМассива + "Кт", 0, ВидСравненияКомпоновкиДанных.НеРавно);
КонецЕсли;
КонецЦикла;
КонецЕсли;

СтандартныеОтчеты.ДобавитьОтборПоОрганизации(ЭтотОбъект);

КонецПроцедуры



Подскажите, пожалуйста, как это исправить.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
6. AnryMc 849 03.05.13 11:17 Сейчас в теме
(1) AlexPilot,

Желательно код заключать в теги "Оформление текста в виде кода" - а то "листать" тему неудобно
2. One 02.05.13 19:38 Сейчас в теме
на какую строчку ругается?
3. AlexPilot 02.05.13 21:33 Сейчас в теме
Ругается на 205 строчку

ТиповыеОтчеты.ДобавитьОтбор(КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0].Отбор, "Регистратор",,ВидСравненияКомпоновкиДанных.Заполнено);

а дальше не идет.
4. trand 02.05.13 22:32 Сейчас в теме
А в чём вопрос-то? Запускаем отладку, открываем табло и смотрим что у нас в КомпоновщикНастроек.Настройки и т.д.
5. AlexPilot 03.05.13 11:00 Сейчас в теме
КомпоновщикНастроек.Настройки выдает это:


Выражение Значение Тип
КомпоновщикНастроек.Настройки НастройкиКомпоновкиДанных НастройкиКомпоновкиДанных
Выбор Период, Номер строки, Регистратор ВыбранныеПоляКомпоновкиДанных
ДополнительныеСвойства Структура Структура
ДоступныеОбъекты ДоступныеОбъектыНастройкиКомпоновкиДанных ДоступныеОбъектыНастройкиКомпоновкиДанных
ДоступныеПоляВыбора ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
ДоступныеПоляГруппировок ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
ДоступныеПоляДополнительныхОтборов ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
ДоступныеПоляОтбора ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
ДоступныеПоляОтбораЭлементовСтруктуры ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
ДоступныеПоляПараметровДанных ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
ДоступныеПоляПорядка ДоступныеПоляКомпоновкиДанных ДоступныеПоляКомпоновкиДанных
Отбор ОтборКомпоновкиДанных
ПараметрыВывода Расположение общих итогов по вертикали, Выводить параметры, Выводить отбор ЗначенияПараметровВыводаКомпоновкиДанных
ПараметрыДанных Конец периода, Начало периода, Счет ЗначенияПараметровДанныхКомпоновкиДанных
ПользовательскиеПоля ПользовательскиеПоляКомпоновкиДанных ПользовательскиеПоляКомпоновкиДанных
Порядок Период, Регистратор, Номер строки ПорядокКомпоновкиДанных
Родитель Неопределено
Структура КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных
УсловноеОформление Установлено УсловноеОформлениеКомпоновкиДанных


Подсказали бы как исправить, может условие какое не хватает?
7. AlexPilot 03.05.13 12:02 Сейчас в теме
Кто - нибудь знает в чем проблема?
Прикрепляю файлик с отчетом.
Прикрепленные файлы:
8. PlatonStepan 38 03.05.13 16:46 Сейчас в теме
(7) AlexPilot,
в каком то из ...Структура[0].Структура[0].Структура[0]... нет элементов с индексом 0,
кстати, в вашем отчёте на строке 205 пустая строка.
зато после неё ...Структура[1].Структура[0].Структура[0]... вероятно, следует разобраться с их количеством.
9. AlexPilot 03.05.13 17:50 Сейчас в теме
(8) Jogeedae
Значит я ошибся с номером строки.
Ругается на 203 строчку.

Какая из Структура[0] лишняя не могу сказать. Не знаю.
10. AlexPilot 03.05.13 17:55 Сейчас в теме
(8)Jogeedae
Вот моя ошибка, чем её исправить?
Прикрепленные файлы:
11. juntatalor 63 04.05.13 23:16 Сейчас в теме
Ну э, хм, кхм закомментируйте ее что ли?
12. AlexPilot 05.05.13 10:08 Сейчас в теме
Э, Нет, я комментирую,
а ошибка выходит на следующей строчке. И её комментирую - ошибка появляется на 207 строке.
Если и 207-ю за комментировать - то ошибка вылазит на 208-ой строке.
А потом на 212-ой строке.
А если все эти выбранные строки за комментировать, то отчет ничего не выдает. Пусто.
13. pahich 747 05.05.13 10:13 Сейчас в теме
(12) AlexPilot, а разработчик отчета что говорит?
14. AlexPilot 05.05.13 12:11 Сейчас в теме
(13) pahich

Ничего не говорит, уехал.
А мне бы срочно. Клиенты не ждут.
15. pahich 747 05.05.13 12:27 Сейчас в теме
(14) AlexPilot, Думаю, что дело не в данной конкретной строке, а в том, что настройки компоновщика не заполнены. Отчет был вообще работоспособным?
16. AlexPilot 05.05.13 17:04 Сейчас в теме
(15) pahich
Вот это я не могу понять.
На демо базе проверяли - вроде как работает.
На рабочей базе нет.
База не настроена, релизы одинаковые.
17. pahich 747 05.05.13 19:25 Сейчас в теме
(16) AlexPilot, Для того, чтобы дать более-менее вразумительный ответ, надо иметь связку отчет+база.
А из невразумительных - сравните чем отличается рабочая база от демо и перенастройте рабочую. Ну или используйте типовой отчет. :)
18. AlexPilot 06.05.13 11:35 Сейчас в теме
Таки все получилось!

Просто пришел программер и все исправил, правда отчет не работает как стандартный, но зато отбирает доки по регистратору, выводит те данные, которые нужны. Пришлось сильно менять и макет и модуль.
Если интересно, я вложил переделанный отчет. Осталось только внедрить это дело у клиента, ну это уже "дело техники".
Прикрепленные файлы:
19. pahich 747 06.05.13 11:50 Сейчас в теме
(18) AlexPilot, лол. У вас чудо-программисты :)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот