powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Индекс находится за границами массива
4 сообщений из 4, страница 1 из 1
Индекс находится за границами массива
    #40044904
Evgk84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день такая ситуация: При проведении документа "Приобритение товаров и услуг" вышла ошибка: "Индекс находится за границами массива"

Индекс находится за границами массива
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1957)}: Результат = Форма.Записать(ПараметрыЗаписи);
{Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента.Форма(8382)}: ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);

по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Индекс находится за границами массива
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(891)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);

по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
Индекс находится за границами массива
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(4576)}: Если сч <= КурсыВалютыРасчетов.Количество()
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(150)}: ТаблицаКурсовВалют = ПолучитьКурсыВалют(Запрос, ДатаНачалаКурсов, ГлобальныеПеременные);
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(1408)}: ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры);
{РегистрНакопления.РасчетыСПоставщиками.МодульНабораЗаписей(313)}: ОперативныеВзаиморасчетыСервер.РассчитатьПоИзменениям(Запрос.МенеджерВременныхТаблиц, Ложь, Отбор.Регистратор.Значение, ДополнительныеСвойства);
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(891)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);


Потом посоветовали сделать так:
поменять

Если сч <= КурсыВалютыРасчетов.Количество()
на
Если сч < КурсыВалютыРасчетов.Количество()
в ОМ ОперативныеВзаиморасчетыСервер


После стало так:

Индекс находится за границами массива
{ОбщийМодуль.ОбщегоНазначенияУТКлиент.Модуль(1957)}: Результат = Форма.Записать(ПараметрыЗаписи);
{Документ.ПриобретениеТоваровУслуг.Форма.ФормаДокумента.Форма(8382)}: ОбщегоНазначенияУТКлиент.ОбработатьЗаписьОбъектаВФорме(ЭтотОбъект, ПараметрыДляЗаписи);

по причине:
Ошибка при выполнении обработчика - 'ОбработкаПроведения'
по причине:
Индекс находится за границами массива
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(891)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);

по причине:
Ошибка при выполнении обработчика - 'ПриЗаписи'
по причине:
Индекс находится за границами массива
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(4583)}: Если КурсыВалютыРасчетов[сч].КурсРегл = 0 Тогда
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(150)}: ТаблицаКурсовВалют = ПолучитьКурсыВалют(Запрос, ДатаНачалаКурсов, ГлобальныеПеременные);
{ОбщийМодуль.ОперативныеВзаиморасчетыСервер.Модуль(1408)}: ЗаполнитьОперативныеВзаиморасчеты(ОсновныеПараметры);
{РегистрНакопления.РасчетыСПоставщиками.МодульНабораЗаписей(313)}: ОперативныеВзаиморасчетыСервер.РассчитатьПоИзменениям(Запрос.МенеджерВременныхТаблиц, Ложь, Отбор.Регистратор.Значение, ДополнительныеСвойства);
{ОбщийМодуль.ПроведениеСерверУТ.Модуль(355)}: Объект.Движения.Записать();
{Документ.ПриобретениеТоваровУслуг.МодульОбъекта(891)}: ПроведениеСерверУТ.ЗаписатьНаборыЗаписей(ЭтотОбъект);



А это из отладчика:

Функция ПолучитьКурсыВалют(Запрос, ДатаНачала, ГлобальныеПеременные)

ДатаОкончания = НачалоДня(ТекущаяДатаСеанса());

Запрос.Текст = "
|ВЫБРАТЬ
| ДанныеПроизводственногоКалендаря.Дата КАК Дата
|ПОМЕСТИТЬ ПериодыКурсов
|ИЗ
| РегистрСведений.ДанныеПроизводственногоКалендаря КАК ДанныеПроизводственногоКалендаря
|ГДЕ
| ДанныеПроизводственногоКалендаря.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|;
|ВЫБРАТЬ
| ПериодыКурсов.Дата КАК Дата,
| ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыРасчетов.Курс,0) = 0 И &ВалютаРасчетов <> &ВалютаРегл
| ТОГДА 0
| ИНАЧЕ ЕСТЬNULL(КурсыВалютыРасчетов.Курс,1) / ЕСТЬNULL(КурсыВалютыРасчетов.Кратность,1)
| КОНЕЦ КАК КурсРегл,
| ВЫБОР
| КОГДА ЕСТЬNULL(КурсыВалютыРасчетов.Курс,0) = 0 И &ВалютаРасчетов <> &ВалютаРегл
| ТОГДА 0
| КОГДА ЕСТЬNULL(КурсыВалютыУпр.Курс,0) = 0 И &ВалютаУпр <> &ВалютаРегл
| ТОГДА 0
| ИНАЧЕ (ЕСТЬNULL(КурсыВалютыРасчетов.Курс,1) / ЕСТЬNULL(КурсыВалютыРасчетов.Кратность,1)) / (ЕСТЬNULL(КурсыВалютыУпр.Курс,1) / ЕСТЬNULL(КурсыВалютыУпр.Кратность,1))
| КОНЕЦ КАК КурсУпр
|ИЗ
| ПериодыКурсов КАК ПериодыКурсов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалютыРасчетов
| ПО ПериодыКурсов.Дата = КурсыВалютыРасчетов.Период
| И КурсыВалютыРасчетов.Валюта = &ВалютаРасчетов
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют КАК КурсыВалютыУпр
| ПО ПериодыКурсов.Дата = КурсыВалютыУпр.Период
| И КурсыВалютыУпр.Валюта = &ВалютаУпр
|УПОРЯДОЧИТЬ ПО
| Дата ВОЗР
|;
|ВЫБРАТЬ
| &ДатаНачала КАК Дата,
| ЕСТЬNULL(КурсыВалют.Курс,1) / ЕСТЬNULL(КурсыВалют.Кратность,1) КАК КурсРегл,
| (ЕСТЬNULL(КурсыВалют.Курс,1) / ЕСТЬNULL(КурсыВалют.Кратность,1)) / (ЕСТЬNULL(КурсыВалютыУпр.Курс,1) / ЕСТЬNULL(КурсыВалютыУпр.Кратность,1)) КАК КурсУпр
|ИЗ
| РегистрСведений.КурсыВалют.СрезПоследних(&ДатаНачала) КАК КурсыВалют
| ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.КурсыВалют.СрезПоследних(&ДатаНачала) КАК КурсыВалютыУпр
| ПО КурсыВалютыУпр.Валюта = &ВалютаУпр
|ГДЕ КурсыВалют.Валюта = &ВалютаРасчетов";

Запрос.УстановитьПараметр("ЕжедневнаяПереоценка", ГлобальныеПеременные.ЕжедневнаяПереоценка);
Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала));
Запрос.УстановитьПараметр("ДатаОкончания", ДатаОкончания);
Запрос.УстановитьПараметр("ВалютаРасчетов", ГлобальныеПеременные.ВалютаРасчетов);
Запрос.УстановитьПараметр("ВалютаУпр", Константы.ВалютаУправленческогоУчета.Получить());

Результаты = Запрос.ВыполнитьПакет();

КурсыВалютыРасчетов = Результаты[1].Выгрузить();
КурсыВалютСрезПоследних = Результаты[2].Выгрузить();

ТекущийКурсРегл = ?(КурсыВалютСрезПоследних.Количество() > 0, КурсыВалютСрезПоследних[0].КурсРегл, 1);
ТекущийКурсУпр = ?(КурсыВалютСрезПоследних.Количество() > 0, КурсыВалютСрезПоследних[0].КурсУпр, 1);

ТекущаяДата = НачалоДня(ДатаНачала);
сч = 0;
Пока ТекущаяДата <= ДатаОкончания Цикл
Если сч < КурсыВалютыРасчетов.Количество()
И КурсыВалютыРасчетов[сч].Дата <> ТекущаяДата Тогда
НовСтр = КурсыВалютыРасчетов.Вставить(сч);
НовСтр.Дата = ТекущаяДата;
НовСтр.КурсРегл = ТекущийКурсРегл;
НовСтр.КурсУпр = ТекущийКурсУпр;
Иначе
Если КурсыВалютыРасчетов[сч].КурсРегл = 0 Тогда
КурсыВалютыРасчетов[сч].КурсРегл = ТекущийКурсРегл;
Иначе
ТекущийКурсРегл = КурсыВалютыРасчетов[сч].КурсРегл;
КонецЕсли;
Если КурсыВалютыРасчетов[сч].КурсУпр = 0 Тогда
КурсыВалютыРасчетов[сч].КурсУпр = ТекущийКурсУпр;
Иначе
ТекущийКурсУпр = КурсыВалютыРасчетов[сч].КурсУпр;
КонецЕсли;
КонецЕсли;
ТекущаяДата = ТекущаяДата + 24*60*60;
сч = сч + 1 ;
КонецЦикла;

КурсыВалютыРасчетов.Индексы.Добавить("Дата");

Возврат КурсыВалютыРасчетов;

КонецФункции



Кто подскажет как быть?
...
Рейтинг: 0 / 0
Индекс находится за границами массива
    #40044906
Evgk84
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Индекс находится за границами массива
    #40045052
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Evgk84,

Производственный календарь за период не заполнен?

КурсыВалютыРасчетов - откройте и посмотрите результат запроса - что там и сколько строк.
...
Рейтинг: 0 / 0
Индекс находится за границами массива
    #40045358
Программист 1с
что там и сколько строк.


и так понятно что ни одной...
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Индекс находится за границами массива
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]