|
Индекс находится за границами масива | ☑ | ||
---|---|---|---|---|
0
andriylord
15.05.12
✎
15:49
|
Зраствуйте.
У меня есть кнопка в обработке. В модуль с таким кодом: &НаКлиенте Процедура Команда1(Команда) ОбъектыНазначения = Новый Структура; ОбъектыНазначения.Вставить("ТабличныйДокумент", Результат); ПараметрыИсточника = Новый Структура; ПараметрыИсточника.Вставить("ИдентификаторКоманды", "АнализСебестоимостиТоваровПоПоставщикам"); ПараметрыИсточника.Вставить("БезопасныйРежим", Ложь); ПараметрыИсточника.Вставить("ОбъектыНазначения", ОбъектыНазначения); ОткрытьФорму("ОбщаяФорма.ПечатьДокументов", Новый Структура("ИсточникДанных, ПараметрыИсточника", ПолучитьСсылкуОбработку(), ПараметрыИсточника)); КонецПроцедуры &НаСервереБезКонтекста Функция ПолучитьСсылкуОбработку() Возврат Справочники.ДополнительныеОтчетыИОбработки.НайтиПоНаименованию("Анализ себестоимости товаров по поставщикам"); КонецФункции Выдает ошибку: "Индекс находится за границами масива". Помогите пожалуйста. |
|||
1
DrShad
15.05.12
✎
15:50
|
этот код не может давать такую ошибку
|
|||
2
GROOVY
15.05.12
✎
15:51
|
Здравствуйте. Видимо у Вас есть массив, и элементов в нем меньше чем Вы предполагаете.
|
|||
3
GROOVY
15.05.12
✎
15:51
|
Да и код в (0) к ошибке отношения не имеет.
|
|||
4
andriylord
15.05.12
✎
15:59
|
Я вывожу табличный документ через СКД.
Также в обработке в модуле объекта следующий код: // ПЕЧАТЬ Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ПараметрыПечати, ОбъектыПечати) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АнализСебестоимостиТоваровПоПоставщикам") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АнализСебестоимостиТоваровПоПоставщикам", "Анализ себестоимости товаров по поставщикам", МассивОбъектов.ТабличныйДокумент); КонецЕсли; КонецПроцедуры // ИНФОРМАЦИЯ ОБ ОБРАБОТКЕ Функция СведенияОВнешнейОбработке() Экспорт // Объявим переменную, в которой мы сохраним и вернем "наружу" необходимые данные ПараметрыРегистрации = Новый Структура; // Объявим еще одну переменную, которая нам потребуется ниже МассивНазначений = Новый Массив; // Первый параметр, который мы должны указать - это какой вид обработки системе должна зарегистрировать. // Допустимые типы: ДополнительнаяОбработка, ДополнительныйОтчет, ЗаполнениеОбъекта, Отчет, ПечатнаяФорма, СозданиеСвязанныхОбъектов ПараметрыРегистрации.Вставить("Вид", "ДополнительныйОтчет"); ПараметрыРегистрации.Вставить("Назначение", Новый Массив); // Теперь зададим имя, под которым ВПФ будет зарегистрирована в справочнике внешних обработок ПараметрыРегистрации.Вставить("Наименование", "Анализ себестоимости товаров по поставщикам"); // Зададим право обработке на использование безопасного режима. Более подробно можно узнать в справке к платформе (метод УстановитьБезопасныйРежим) ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь); // Следующие два параметра играют больше информационную роль, т.е. это то, что будет видеть пользователь в информации к обработке ПараметрыРегистрации.Вставить("Версия", "1.0"); ПараметрыРегистрации.Вставить("Информация", "Анализ себестоимости товаров по поставщикам"); // Создадим таблицу команд (подробнее смотрим ниже) ТаблицаКоманд = Получить Таблицу Команд(); // Добавим команду в таблицу ДобавитьКоманду(ТаблицаКоманд, "Анализ себестоимости товаров по поставщикам", "АСТПП", "ОткрытиеФормы", Ложь, "АСТПП"); // Сохраним таблицу команд в параметры регистрации обработки ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд); // Теперь вернем системе наши параметры Возврат ПараметрыРегистрации; КонецФункции Функция Получить Таблицу Команд() // Создадим пустую таблицу команд и колонки в ней Команды = Новый ТаблицаЗначений; // Как будет выглядеть описание печатной формы для пользователя Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка")); // Имя нашего макета, что бы могли отличить вызванную команду в обработке печати Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка")); // Тут задается, как должна вызваться команда обработки // Возможные варианты: // - ОткрытиеФормы - в этом случае в колонке идентификатор должно быть указано имя формы, которое должна будет открыть система // - ВызовКлиентскогоМетода - вызвать клиентскую экспортную процедуру из модуля формы обработки // - ВызовСерверногоМетода - вызвать серверную экспортную процедуру из модуля объекта обработки Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка")); // Следующий параметр указывает, необходимо ли показывать оповещение при начале и завершению работы обработки. Не имеет смысла при открытии формы Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево")); // Для печатной формы должен содержать строку ПечатьMXL Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка")); Возврат Команды; КонецФункции Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "") // Добавляем команду в таблицу команд по переданному описанию. // Параметры и их значения можно посмотреть в функции Получить Таблицу Команд НоваяКоманда = ТаблицаКоманд.Добавить(); НоваяКоманда.Представление = Представление; НоваяКоманда.Идентификатор = Идентификатор; НоваяКоманда.Использование = Использование; НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение; НоваяКоманда.Модификатор = Модификатор; КонецПроцедуры |
|||
5
hhhh
15.05.12
✎
16:09
|
так у вас тут все массивы пустые.
|
|||
6
andriylord
15.05.12
✎
16:13
|
(5) Что именно не правильно?
Здесь ошибка? Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ПараметрыПечати, ОбъектыПечати) Экспорт Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "АнализСебестоимостиТоваровПоПоставщикам") Тогда УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "АнализСебестоимостиТоваровПоПоставщикам", "Анализ себестоимости товаров по поставщикам", МассивОбъектов.ТабличныйДокумент); КонецЕсли; КонецПроцедуры |
|||
7
Адинэснег
15.05.12
✎
16:14
|
(0)Выдает ошибку: "Индекс находится за границами масива".
что за мода, несуществующий текст ошибки писать, и спрашивать что случилось? написал бы тогда, что-то то тип "Ошибка программы" |
|||
8
andriylord
15.05.12
✎
16:15
|
Ошибка программы: "Индекс находится за границами масива".
|
|||
9
hhhh
15.05.12
✎
16:18
|
ну там строка ведь должна быть, в которой эта ошибка. Чего вы нас разводите?
|
|||
10
Wobland
15.05.12
✎
16:19
|
(9) это сильное колдунство, не всякий способен правильно прочитать сообщение об ошибке
|
|||
11
hhhh
15.05.12
✎
16:22
|
(10) да, тут спрашивали, какие инструменты применять при отладке запросов. Всё-таки самый главный инструмент - очки.
|
|||
12
Mort
15.05.12
✎
16:25
|
один ЦЭ на самом деле не всегда говорит номер строки с ошибкой.
|
|||
13
andriylord
15.05.12
✎
16:25
|
(11) В програмировании я не силен.
У меня есть эта обработка. Но программа выдает ошибку. Код я скинул. Поможете исправить? |
|||
14
Mort
15.05.12
✎
16:25
|
(13) Сколько платишь?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |