Здравствуйте. Запрос к этой функции выдаёт ошибку выхода индекса за границы. Однако в отладке показывает что индекс равен 0.
Делал массив неограниченным, однако всё равно пишет об индексе. Вручную как-то задать его?
&НаСервере
Функция ЗапросКонтейнеров(Ссылка)
Перем Счетчик;
МассивКонтейнеры = Новый Массив(6, 6);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| ПеремещениеТоваровПломбированиеТО.ТипОборудования,
| ПеремещениеТоваровПломбированиеТО.НомерТО,
| ПеремещениеТоваровПломбированиеТО.Замок,
| ПеремещениеТоваровПломбированиеТО.Пломба1,
| ПеремещениеТоваровПломбированиеТО.Пломба2
|ИЗ
| Документ.ПеремещениеТоваров.ПломбированиеТО КАК ПеремещениеТоваровПломбированиеТО
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
| ПО ПеремещениеТоваровПломбированиеТО.Ссылка = ПеремещениеТоваровТовары.Ссылка
|ГДЕ
| ПеремещениеТоваровТовары.Ссылка = &Ссылка";
Запрос.УстановитьПараметр("Ссылка", Ссылка);
РезультатЗапроса = Запрос.Выполнить();
ВыборкаКонтейнеры = РезультатЗапроса.Выбрать();
Счетчик=0;
Пока ВыборкаКонтейнеры.Следующий() Цикл
МассивКонтейнеры[Счетчик][0]=ВыборкаКонтейнеры.ТипОборудования;
МассивКонтейнеры[Счетчик][1]=ВыборкаКонтейнеры.НомерТО;
МассивКонтейнеры[Счетчик][2]=ВыборкаКонтейнеры.Замок;
МассивКонтейнеры[Счетчик][3]=ВыборкаКонтейнеры.Пломба1;
МассивКонтейнеры[Счетчик][4]=ВыборкаКонтейнеры.Пломба2;
Счетчик=Счетчик+1;
КонецЦикла;
МассивКонтейнеры[5][5]=Счетчик;
Возврат МассивКонтейнеры;
КонецФункции
ПоказатьДелал массив неограниченным, однако всё равно пишет об индексе. Вручную как-то задать его?
Прикрепленные файлы:
По теме из базы знаний
- Ошибки в ЦУП и способы решения
- Ошибка 2-НДФЛ ЗУП (3.0.25.150) {ОбщийМодуль.ЗарплатаКадры.Модуль(5279)}: Индекс находится за границами массива
- Отбор/фильтр в отчетах/СКД/обработках 1C: БП, УТ, ERP, Кронос: WMS по файлу Excel, текстовому файлу или списку текстовых строк (номер документа, артикул, ИНН, QR-код, штрих-код, наименование)
- О цикле обратном замолвите слово...
- Как готовить и есть массивы
Найденные решения
(17)
Вы связали 2 табличных части документа левым соединением, с условием отбора по документу. Это значит ровно следующее:
Например, если у вас В ТЧ "Товары" - 5 строк, а в ТЧ ПломбированиеТО - 3 строки
То ваш запрос вернёт вам 15 строк, при текущем условии
Вы связали 2 табличных части документа левым соединением, с условием отбора по документу. Это значит ровно следующее:
Например, если у вас В ТЧ "Товары" - 5 строк, а в ТЧ ПломбированиеТО - 3 строки
То ваш запрос вернёт вам 15 строк, при текущем условии
(21) соединение с самим документом можно было не делать:
"ВЫБРАТЬ
| ПеремещениеТоваровПломбированиеТО.ТипОборудования,
| ПеремещениеТоваровПломбированиеТО.НомерТО,
| ПеремещениеТоваровПломбированиеТО.Замок,
| ПеремещениеТоваровПломбированиеТО.Пломба1,
| ПеремещениеТоваровПломбированиеТО.Пломба2
|ИЗ
| Документ.ПеремещениеТоваров.ПломбированиеТО КАК ПеремещениеТоваровПломбированиеТО
|
|ГДЕ
| ПеремещениеТоваровПломбированиеТО.Ссылка = &Ссылка";
ПоказатьОстальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
Ошибку тут выдаёт:
Тут оставил точку останова:
МассивКонтейнеры[Счетчик][0]=ВыборкаКонтейнеры.ТипОборудования;
Тут оставил точку останова:
ЗаписьXML.ЗаписатьНачалоЭлемента("Containers");
Массив = ЗапросКонтейнеров(Элемент.Значение); //Поставил точку
Счетчик = 0;
Пока Счетчик<>Массив[5][5] Цикл
ЗаписьXML.ЗаписатьНачалоЭлемента("Container");
ЗаписьXML.ЗаписатьНачалоЭлемента("ContainerKind");
ЗаписьXML.ЗаписатьТекст(Строка(Массив[Счетчик][0]));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("ContainerNumber");
ЗаписьXML.ЗаписатьТекст(Строка(Формат(Массив[Счетчик][1], "ЧГ=")));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("NumberLock");
ЗаписьXML.ЗаписатьТекст(Строка(Формат(Массив[Счетчик][2], "ЧГ=")));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("NumberSeal");
ЗаписьXML.ЗаписатьТекст(Строка(Формат(Массив[Счетчик][3], "ЧГ=")));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьНачалоЭлемента("NumberSeal2");
ЗаписьXML.ЗаписатьТекст(Строка(Формат(Массив[Счетчик][4], "ЧГ=")));
ЗаписьXML.ЗаписатьКонецЭлемента();
ЗаписьXML.ЗаписатьКонецЭлемента();
Счетчик= Счетчик+1;
КонецЦикла;
ЗаписьXML.ЗаписатьКонецЭлемента(); //Containers
Показать
(6)
Если так, то это значит, что у вас счетчик превысил допустимое значение.
Проблема 1. Нет ограничений на выборку и на количество результата:
1) В запросе не стоит, например, ВЫБРАТЬ ПЕРВЫЕ 5
2) Запрос вы делаете из табличной части: "Документ.ПеремещениеТоваров.ПломбированиеТО"
То может дело в том, что в табличной части этого документа у вас больше 6 строк?
Проблема 2.
На кой чёрт у вас в запросе вообще левое соединение?
По сути дела это даст вам количество строк в запросе равное количеству товара, если я ничего не путаю...
Если так, то это значит, что у вас счетчик превысил допустимое значение.
Проблема 1. Нет ограничений на выборку и на количество результата:
1) В запросе не стоит, например, ВЫБРАТЬ ПЕРВЫЕ 5
2) Запрос вы делаете из табличной части: "Документ.ПеремещениеТоваров.ПломбированиеТО"
То может дело в том, что в табличной части этого документа у вас больше 6 строк?
Проблема 2.
На кой чёрт у вас в запросе вообще левое соединение?
| Документ.ПеремещениеТоваров.ПломбированиеТО КАК ПеремещениеТоваровПломбированиеТО
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
| ПО ПеремещениеТоваровПломбированиеТО.Ссылка = ПеремещениеТоваровТовары.Ссылка
По сути дела это даст вам количество строк в запросе равное количеству товара, если я ничего не путаю...
(15)
повторюсь тут.
Проблема 2.
На кой чёрт у вас в запросе вообще левое соединение?
По сути дела это даст вам количество строк в запросе равное количеству товара, если я ничего не путаю...
повторюсь тут.
Проблема 2.
На кой чёрт у вас в запросе вообще левое соединение?
| Документ.ПеремещениеТоваров.ПломбированиеТО КАК ПеремещениеТоваровПломбированиеТО
| ЛЕВОЕ СОЕДИНЕНИЕ Документ.ПеремещениеТоваров.Товары КАК ПеремещениеТоваровТовары
| ПО ПеремещениеТоваровПломбированиеТО.Ссылка = ПеремещениеТоваровТовары.Ссылка
По сути дела это даст вам количество строк в запросе равное количеству товара, если я ничего не путаю...
(17)
Вы связали 2 табличных части документа левым соединением, с условием отбора по документу. Это значит ровно следующее:
Например, если у вас В ТЧ "Товары" - 5 строк, а в ТЧ ПломбированиеТО - 3 строки
То ваш запрос вернёт вам 15 строк, при текущем условии
Вы связали 2 табличных части документа левым соединением, с условием отбора по документу. Это значит ровно следующее:
Например, если у вас В ТЧ "Товары" - 5 строк, а в ТЧ ПломбированиеТО - 3 строки
То ваш запрос вернёт вам 15 строк, при текущем условии
(21) соединение с самим документом можно было не делать:
"ВЫБРАТЬ
| ПеремещениеТоваровПломбированиеТО.ТипОборудования,
| ПеремещениеТоваровПломбированиеТО.НомерТО,
| ПеремещениеТоваровПломбированиеТО.Замок,
| ПеремещениеТоваровПломбированиеТО.Пломба1,
| ПеремещениеТоваровПломбированиеТО.Пломба2
|ИЗ
| Документ.ПеремещениеТоваров.ПломбированиеТО КАК ПеремещениеТоваровПломбированиеТО
|
|ГДЕ
| ПеремещениеТоваровПломбированиеТО.Ссылка = &Ссылка";
Показать
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот