Имя: Пароль:
1C
1С v8
индекс находится за границами массива
0 sale123
 
02.05.13
16:40
Подскажите как решить проблему:
У меня отчет "Карточка счета" должен сворачивать информацию по регистратору. Когда я его запускаю - пишет "индекс находится за границами массива".
Вот модуль:

Перем СохраненнаяНастройка Экспорт;
Перем Расшифровки Экспорт;  
Перем РежимРасшифровки Экспорт;
Перем СохранятьНастройкуОтчета Экспорт;

Перем мТекущийНаборПоказателей;

#Если Клиент Тогда

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

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

Процедура ЗаполнитьНачальныеНастройки() Экспорт
   
   СтандартныеОтчеты.ЗаполнитьДанныеОтчета(ЭтотОбъект);
   
КонецПроцедуры

Процедура СформироватьОтчет(Результат = Неопределено, ДанныеРасшифровки = Неопределено, ВыводВФормуОтчета = Истина, ВнешниеНаборыДанных = Неопределено, ВыводитьПолностью = Истина) Экспорт
   
   Результат.Очистить();
   
   Настройки = КомпоновщикНастроек.ПолучитьНастройки();
   ВыводЗаголовкаОтчета(ЭтотОбъект, Результат);
   Если ВыводитьПолностью Тогда
       ДоработатьКомпоновщикПередВыводом(ВнешниеНаборыДанных);
       КомпоновщикНастроек.Восстановить();
       НастройкаКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
       КомпоновщикНастроек.ЗагрузитьНастройки(Настройки);
       СтандартныеОтчеты.ВывестиОтчет(ЭтотОбъект, Результат, ДанныеРасшифровки, ВыводВФормуОтчета, ВнешниеНаборыДанных, Истина, НастройкаКомпоновкиДанных);
   КонецЕсли;
   ВыводПодписейОтчета(ЭтотОбъект, Результат);
   
   Если ВыводитьПолностью Тогда
       // Выполним дополнительную обработку Результата отчета
       ОбработкаРезультатаОтчета(Результат);
       
       // Сохраним настройки для Истории
       СтандартныеОтчеты.СохранитьНастройкуДляИстории(ЭтотОбъект);
   КонецЕсли;
   
   Результат.ПоказатьУровеньГруппировокСтрок(1);
   
КонецПроцедуры

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

Процедура ПередВыводомЭлементаРезультата(МакетКомпоновки, ДанныеРасшифровки, ЭлементРезультата, Отказ = Ложь) Экспорт
   
КонецПроцедуры

// В процедуре можно доработать компоновщик перед выводом в отчет
// Изменения сохранены не будут
Процедура ДоработатьКомпоновщикПередВыводом(ВнешниеНаборыДанных) Экспорт
   
   Если ЗначениеЗаполнено(Счет) Тогда
       ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "Счет", Счет);
   КонецЕсли;
   Если ЗначениеЗаполнено(НачалоПериода) Тогда
       ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "НачалоПериода", НачалоДня(НачалоПериода));
   Иначе
       ТиповыеОтчеты.УстановитьПараметр(КомпоновщикНастроек, "НачалоПериода", Дата(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, ВидСравненияКомпоновкиДанных.НеРавно);
           КонецЕсли;
       КонецЦикла;
   КонецЕсли;
   
   СтандартныеОтчеты.ДобавитьОтборПоОрганизации(ЭтотОбъект);
   
КонецПроцедуры

Процедура ВыводЗаголовкаОтчета(ОтчетОбъект, Результат)
   
    СтандартныеОтчеты.ВыводЗаголовкаОтчета(ОтчетОбъект, Результат);
           
КонецПроцедуры

Процедура ВыводПодписейОтчета(ОтчетОбъект, Результат)
   
   СтандартныеОтчеты.ВыводПодписейОтчета(ОтчетОбъект, Результат);
           
КонецПроцедуры

Функция ПолучитьТекстЗаголовка(ОрганизацияВНачале = Истина) Экспорт
   
   ЗаголовокОтчета = "Карточка счета " + Счет + СтандартныеОтчеты.ПолучитьПредставлениеПериода(ЭтотОбъект);

   Возврат ?(ОрганизацияВНачале, ЗаголовокОтчета, ЗаголовокОтчета + " " + СтандартныеОтчеты.ПолучитьТекстОрганизация(ЭтотОбъект));
   
КонецФункции

Процедура ПолучитьСтруктуруПоказателейОтчета() Экспорт
   
   ПоказателиОтчета = СтандартныеОтчеты.ПолучитьСтруктуруПоказателейОтчета(,,,, Ложь, Истина, Истина, Ложь);
   ДанныеОтчета.Вставить("ПоказателиОтчета", ПоказателиОтчета);

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

Процедура ОбработкаРезультатаОтчета(Результат)
   
   СтандартныеОтчеты.ОбработкаРезультатаОтчета(ЭтотОбъект, Результат);

   // Зафиксируем заголовок отчета
   ВысотаЗаголовка = Результат.Области.Заголовок.Низ;
   Результат.ФиксацияСверху = ВысотаЗаголовка + 2;
   
КонецПроцедуры

// Для настройки отчета (расшифровка и др.)
Процедура Настроить() Экспорт
   
   ЗаполнитьНачальныеНастройки();
   ОбработкаИзмененияСчета(РежимРасшифровки);
   
КонецПроцедуры

Процедура СохранитьНастройку() Экспорт
   
   Если СохранятьНастройкуОтчета Тогда    
       СтандартныеОтчеты.СохранитьНастройку(ЭтотОбъект);
   КонецЕсли;
   
КонецПроцедуры

// Процедура заполняет параметры отчета по элементу справочника из переменной СохраненнаяНастройка.
Процедура ПрименитьНастройку() Экспорт
   
   Если СохраненнаяНастройка.Пустая() Тогда
       Возврат;
   КонецЕсли;
   
   СтруктураПараметров = СохраненнаяНастройка.ХранилищеНастроек.Получить();
   Если РежимРасшифровки Тогда
       НастройкиФормы = СтруктураПараметров.НастройкиФормы;
   Иначе
       ТиповыеОтчеты.ПрименитьСтруктуруПараметровОтчета(ЭтотОбъект, СтруктураПараметров);
   КонецЕсли;
   
КонецПроцедуры

Процедура ИнициализацияОтчета() Экспорт
   
   СтандартныеОтчеты.ИнициализацияОтчета(ЭтотОбъект);
   
КонецПроцедуры

Расшифровки = Новый СписокЗначений;

НастройкаПериода = Новый НастройкаПериода;

РежимРасшифровки = Ложь;

#КонецЕсли


Помогите, пожалуйста, это исправить.
1 1Сергей
 
02.05.13
16:41
отладчиком пользоваться не умеем?
2 sale123
 
02.05.13
16:43
Отладчиком пользуемся, только не помогает.
3 zak555
 
02.05.13
16:45
много букв -- переписать
4 Wobland
 
02.05.13
16:46
(2) пользоваться, значит, умеем, а искать строку с ошибкой - нет?
5 Нуф-Нуф
 
02.05.13
16:51
обращаешься к коллекции по индексу, которые превышает размер коллекции
6 Нуф-Нуф
 
02.05.13
16:52
в отладчике - остановка по ошибке спасет отца русской демократии
7 sale123
 
02.05.13
17:31
отладчик не выдает результатов!


КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0]    {(1)}: Индекс находится за границами массива
КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Отбор    Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено И Период группировки Заполнено
ДоступныеПоляОтбора    ДоступныеПоляКомпоновкиДанных
ИдентификаторПользовательскойНастройки    ""
ПредставлениеПользовательскойНастройки    ""
РежимОтображения    Быстрый доступ
Элементы    КоллекцияЭлементовОтбораКомпоновкиДанных
8 Sammo
 
02.05.13
18:12
Значит обращаешься к элементу пустой коллеции
9 sale123
 
03.05.13
11:02
Подскажите, как это исправить?
Может условие какое поставить нужно?
10 rs_trade
 
03.05.13
11:04
(9) нужен программист, однозначно. он исправит.
11 sale123
 
03.05.13
11:08
(10) Был бы программист, я бы сюда не писал...
12 sale123
 
03.05.13
11:09
Лучше помогите, если знаете как.
13 Wobland
 
03.05.13
11:09
"Подскажите как решить проблему" -> "Кто мне исправит проблему?"
14 Sammo
 
03.05.13
11:15
(9) 1. Через отладчик отловить ситуацию
2. Проверить, в какой из коллекций нет элементов (последовательно усекая обращение с ошибкой)
3. Проверить заполнение коллекции.
15 sale123
 
03.05.13
11:48
(8) Подскажите, где искать пустую коллекцию?

Выражение    

КомпоновщикНастроек.Настройки.Структура[1].Структура[0]

Значение  {(1)}: Индекс находится за границами массива
16 1Сергей
 
03.05.13
11:58
КомпоновщикНастроек.Настройки.Структура.Количество()
КомпоновщикНастроек.Настройки.Структура[0].Количество()
КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Количество()
КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0].Количество()
17 sale123
 
03.05.13
12:10
Выражение
КомпоновщикНастроек.Настройки.Структура.Количество()
значение    1    Число

Выражение
КомпоновщикНастроек.Настройки.Структура[0].Количество()    
значение  {(1)}: Метод объекта не обнаружен (Количество)    

Выражение
КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Количество()    
значение  {(1)}: Метод объекта не обнаружен (Количество)    

Выражение
КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0].Количество()    
Значение  {(1)}: Индекс находится за границами массива
18 1Сергей
 
03.05.13
12:12
ок, теперь
Какой тип у КомпоновщикНастроек.Настройки.Структура[0] ?
19 sale123
 
03.05.13
12:15
Выражение КомпоновщикНастроек.Настройки.Структура[0]
Значение ГруппировкаКомпоновкиДанных  Тип ГруппировкаКомпоновкиДанных
20 sale123
 
03.05.13
12:23
КомпоновщикНастроек.Настройки.Структура[0]    ГруппировкаКомпоновкиДанных    ГруппировкаКомпоновкиДанных

Выбор        ВыбранныеПоляКомпоновкиДанных
Идентификатор    ""    Строка

ИдентификаторПользовательскойНастройки    ""    Строка
Имя    ""    Строка

Использование    Ложь    Булево

Отбор    Регистратор Заполнено И Регистратор Заполнено И Регистратор Заполнено И Регистратор Заполнено    
ОтборКомпоновкиДанных

ПараметрыВывода    Расположение итогов, Выводить отбор    ЗначенияПараметровВыводаГруппировкиКомпоновкиДанных
ПоляГруппировки    Общие итоги    

ПоляГруппировкиКомпоновкиДанных
Порядок        ПорядокКомпоновкиДанных
ПредставлениеПользовательскойНастройки    ""    Строка
РежимОтображения    Быстрый доступ    


РежимОтображенияЭлементаНастройкиКомпоновкиДанных
Родитель    НастройкиКомпоновкиДанных    НастройкиКомпоновкиДанных
Состояние    Включена    

СостояниеЭлементаНастройкиКомпоновкиДанных
Структура    

КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных    КоллекцияЭлементовСтруктурыНастроекКомпоновкиДанных
УсловноеОформление        

УсловноеОформлениеКомпоновкиДанных
21 1Сергей
 
03.05.13
12:24
назови типы

КомпоновщикНастроек.Настройки.Структура[0]
КомпоновщикНастроек.Настройки.Структура[0].Структура[0]
КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0]
22 sale123
 
03.05.13
12:29
КомпоновщикНастроек.Настройки.Структура[0]
Тип ГруппировкаКомпоновкиДанных

КомпоновщикНастроек.Настройки.Структура[0].Структура[0]
Тип ГруппировкаКомпоновкиДанных

КомпоновщикНастроек.Настройки.Структура[0].Структура[0].Структура[0]
Типа нет, ошибка:{(1)}: Индекс находится за границами массива
23 1Сергей
 
03.05.13
12:34
(22) у тебя там в СКД, в настройках группировки переделаны. Верни всё как было
24 sale123
 
03.05.13
12:40
(23) А как было? Я ж там ничего не менял?
25 craxx
 
03.05.13
12:46
(0) заплатите денег программисту, он придет и все настроит, зуб даю!
26 1Сергей
 
03.05.13
13:03
(24) в смысле оно само, да? :)

Сравни с типовой конфигурацией - всё увидишь
27 hhhh
 
03.05.13
14:38
(24) а почему у всех .Структура[0], а у тебя .Структура[1] ??
28 sale123
 
03.05.13
15:59
Все посмотрел. СКД взял из типового отчета.
Только модуль все равно не работает.
Мне не нужно стандартную "Карточку счета". Я хочу чтобы "Карточка счета" "сворачивала" данные по Регистратору.

Мне это нужно как-то дописать.
Дописал один человек, вставил в отбор "регистратор", только почему данная вещь не работает - он не знает.
Вот я и пытаюсь понять как, что, да почему.

Кстати, в типовом отчете точно такие же строчки
модуля:

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

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

И где тут пустые коллекции, не понятно.
29 sale123
 
06.05.13
11:41
(10) Таки я нашел программиста, который написал новый отчет, который теперь работает.

Если интересно, отчет я выложил здесь:

http://forum.infostart.ru/forum26/topic85542/

в самом конце обсуждения файлик называется kartochkascheta3.erf
Независимо от того, куда вы едете — это в гору и против ветра!