|
Обход массива. Что со мной не так? |
☑ |
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
|
Только не очень понятно, что с этой структурой данных ты делать собираешься.
Если тебе надо по штрихкоду быстро получать код номенклатуры, тогда тебе надо Соответствие()
Тогда будет так
СоответствиеШтрихкодов = Новый Соответствие;
ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка);
Для Каждого шк Из ШтрхкодыТовара Цикл
СоответствиеШтрихкодов.Вставить(шк, ВыборкаДетальныеЗаписи.НоменклатураКод);
КонецЦикла;
А получать потом тупо:
КодНоменклатурыПоШтрихкоду = СоответствиеШтрихкодов[МойШтрихкод];
|
|