//Получаем штрихкоды товара
ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка);
Если ШтрхкодыТовара.Количество()>0 Тогда
Для Каждого шк Из ШтрхкодыТовара Цикл
ШкСтрока.Вставить("code",ВыборкаДетальныеЗаписи.НоменклатураКод);
ШкСтрока.Вставить("barcode",шк);
шк = Неопределено;
Штрихкоды.Добавить(ШкСтрока);
КонецЦикла;
КонецЕсли;
Банальный код..
В итоге в масиве Штрихкоды получаю сдвоенные штрихкоды.
Всему виной видимо ШкСтрока.Вставить("barcode",шк);.
Так как когда я получаю последний штрихкод по номенклатуре и добавляю его массив то он почему то перезаписывает все предыдущие штрихкоды тоже. Я догадываюсь, что надо как то освободить переменную шк после ее добавления в массив.
Попробовал так шк= Неопределено; но у меня не сработало
ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка);
Если ШтрхкодыТовара.Количество()>0 Тогда
Для Каждого шк Из ШтрхкодыТовара Цикл
ШтрихКоды.Добавить(Новый Структура("code,barcode", ВыборкаДетальныеЗаписи.НоменклатураКод, шк));
КонецЦикла;
КонецЕсли;
Только не очень понятно, что с этой структурой данных ты делать собираешься.
Если тебе надо по штрихкоду быстро получать код номенклатуры, тогда тебе надо Соответствие()
Тогда будет так
СоответствиеШтрихкодов = Новый Соответствие;
ШтрхкодыТовара = ПолучитьШтрихкодыТовара(ВыборкаДетальныеЗаписи.Ссылка);
Для Каждого шк Из ШтрхкодыТовара Цикл
СоответствиеШтрихкодов.Вставить(шк, ВыборкаДетальныеЗаписи.НоменклатураКод);
КонецЦикла;
А получать потом тупо:
КодНоменклатурыПоШтрихкоду = СоответствиеШтрихкодов[МойШтрихкод];
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший