|
Обход массива. Что со мной не так? | ☑ | ||
---|---|---|---|---|
0
tabarigen
30.04.20
✎
14:05
|
ШкСтрока = Новый Структура;
//Получаем штрихкоды товара ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка); Если ШтрхкодыТовара.Количество()>0 Тогда Для Каждого шк Из ШтрхкодыТовара Цикл ШкСтрока.Вставить("code",ВыборкаДетальныеЗаписи.НоменклатураКод); ШкСтрока.Вставить("barcode",шк); шк = Неопределено; Штрихкоды.Добавить(ШкСтрока); КонецЦикла; КонецЕсли; Банальный код.. В итоге в масиве Штрихкоды получаю сдвоенные штрихкоды. Всему виной видимо ШкСтрока.Вставить("barcode",шк);. Так как когда я получаю последний штрихкод по номенклатуре и добавляю его массив то он почему то перезаписывает все предыдущие штрихкоды тоже. Я догадываюсь, что надо как то освободить переменную шк после ее добавления в массив. Попробовал так шк= Неопределено; но у меня не сработало |
|||
1
fisher
30.04.20
✎
14:08
|
Перенеси создание структуры во вложенный цикл.
Ты пишешь в массив ссылку на одну и ту же структуру, в которой перезаписываешь ключи. |
|||
2
fisher
30.04.20
✎
14:10
|
ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка);
Если ШтрхкодыТовара.Количество()>0 Тогда Для Каждого шк Из ШтрхкодыТовара Цикл ШтрихКоды.Добавить(Новый Структура("code,barcode", ВыборкаДетальныеЗаписи.НоменклатураКод, шк)); КонецЦикла; КонецЕсли; |
|||
3
fisher
30.04.20
✎
14:12
|
Проверка на количество тоже лишняя.
|
|||
4
tabarigen
30.04.20
✎
14:12
|
(2) спасибо, большое. Теперь понял в чем проблема.
|
|||
5
tabarigen
30.04.20
✎
14:13
|
(2) работает
|
|||
6
Cthulhu
30.04.20
✎
14:17
|
// ну или прост заменит Штрихкоды.Добавить(ШкСтрока); на вотето:
Штрихкоды.Добавить(ЗначениеИзСтрокиВнутр(ЗначениеВСтрокуВнутр(ШкСтрока))); |
|||
7
fisher
30.04.20
✎
14:20
|
Только не очень понятно, что с этой структурой данных ты делать собираешься.
Если тебе надо по штрихкоду быстро получать код номенклатуры, тогда тебе надо Соответствие() Тогда будет так СоответствиеШтрихкодов = Новый Соответствие; ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка); Для Каждого шк Из ШтрхкодыТовара Цикл СоответствиеШтрихкодов.Вставить(шк, ВыборкаДетальныеЗаписи.НоменклатураКод); КонецЦикла; А получать потом тупо: КодНоменклатурыПоШтрихкоду = СоответствиеШтрихкодов[МойШтрихкод]; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |