Здравствуйте.
УТП 8.1
У номенклатуры есть несколько характеристик, каждой характеристике присвоен штрихкод. У одной характеристики может быть штрих код EAN13 и EAN8. Сами штрихкоды отличаются.
Надо из документа на печать вывести только штрихкоды которые имеют признак EAN8.
Делаю так :
```1c
    Характеристика = ВыборкаСтрокТовары.Характеристика;
    ТипEAN8 = ПланыВидовХарактеристик.ТипыШтрихкодов.EAN8;

    НаборЗаписей = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.ХарактеристикаНоменклатуры.Установить(Характеристика);
    НаборЗаписей.Отбор.ТипШтрихКода.Установить(ТипEAN8);
    НаборЗаписей.Прочитать();

    Для Каждого Запись Из НаборЗаписей Цикл
    ОбластьМакета.Параметры.ШтрихКод = Запись.ШтрихКод;
    ОбластьМакета.Параметры.КодУпаковки = Запись.КодУпаковки;
    КонецЦикла;
```

Начинается отбор вроде правильно и для тех характеристик которым не задан EAN8, остаются пустые поля. Как только нашло первый подходящий штрихкод, выводит его на форму верно, но если у следующей позиции нет EAN8, то почему то вставляет на форму штрихкод предыдущей позиции, хотя должно быть просто пустое поле.
В чем причина подскажите.
Скриншот проблемы: http://joxi.ru/Dr86an0S4NYak2
---
для начала проверьте сколько вообще записей в наборе - может вообще какой-то "непонятный" дубль существует

и еще - лучше вынести перебор выборки товаров (я так понимаю с запроса) в отдельную процедуру, а там уже

```1c
    Если НаборЗаписей.Количество () Тогда
    Для Каждого Запись Из НаборЗаписей Цикл
    ОбластьМакета.Параметры.ШтрихКод = Запись.ШтрихКод;
    ОбластьМакета.Параметры.КодУпаковкы = Запись.КодУпаковкы;
    ТабДок.Вывести(ОбластьМакета);
    КонецЦикла
    иначе
    ОбластьМакета.Параметры.ШтрихКод = ";
    ОбластьМакета.Параметры.КодУпаковкы = ";
    ТабДок.Вывести(ОбластьМакета);
    КонецЕсли;
```

а где у Вас находится конструкция типа "ТабДок.Вывесты (ОбластьМакета),"?
---
Скорее всего при выводе "ОбластьМакета" используются параметры с предыдущей итерации. При очередном шаге вы заполняете параметры новыми значениями, а так как нужного штрихкода нет (НаборЗаписей пустой), то остается значение с предыдущего шага.

Попробуйте очищать параметры "ШтрихКод" и "КодУпаковки", если НаборЗаписей пустой, или при каждой итерации цикла получайте заново область "ОбластьМакета".
---
попробовал получить в цикле "ОбластьМакета", результат тот же. А как в наборе записей очищать значения?
---
"Если НаборЗаписей.Количество() = 0 Тогда ОбластьМакета.Параметры.ШтрихКод = ""; КонецЕсли;".
---
Сделал, но в том то и дело что там НаборЗаписей.Количество() <> 0. Там есть подходящие штрихкоды и условие не выполняется
---
для начала проверьте сколько вообще записей в наборе - может вообще какой-то "непонятный" дубль существует

и еще - лучше вынести перебор выборки товаров (я так понимаю с запроса) в отдельную процедуру, а там уже

```1c
    Если НаборЗаписей.Количество () Тогда
    Для Каждого Запись Из НаборЗаписей Цикл
    ОбластьМакета.Параметры.ШтрихКод = Запись.ШтрихКод;
    ОбластьМакета.Параметры.КодУпаковкы = Запись.КодУпаковкы;
    ТабДок.Вывести(ОбластьМакета);
    КонецЦикла
    иначе
    ОбластьМакета.Параметры.ШтрихКод = ";
    ОбластьМакета.Параметры.КодУпаковкы = ";
    ТабДок.Вывести(ОбластьМакета);
    КонецЕсли;
```

а где у Вас находится конструкция типа "ТабДок.Вывесты (ОбластьМакета),"?
---
Спасибо!
Немного переделал, потому как если оставлять
```1c
    ТабДок.Вывести(ОбластьМакета);
```
 в цикле, то задваивает сами строки с товаром.
Сделал так:

```1c
    Если НаборЗаписей.Количество() Тогда
    Для Каждого Запись Из НаборЗаписей Цикл
    ОбластьМакета.Параметры.ШтрихКод = Запись.ШтрихКод;
    ОбластьМакета.Параметры.КодУпаковки = Запись.КодУпаковки;
    КонецЦикла;
    Иначе
    ОбластьМакета.Параметры.Штрихкод = ";
    ОбластьМакета.Параметры.КодУпаковки = ";
    КонецЕсли;
```
---
ок, но эта конструкция будет работать когда в наборе записей точно 1 запись - а если будет несколько и Вы вынесли ТабДок.Вывесты (ОбластьМакета) "наружу", то на печатный документ выведет только данные последней записи
---
Так и выходит, штрихкоды в базе уникальные, каждой характеристике соответствует только один штрихкод EAN8 и один EAN13 и никак по другому.
---
Если вместо пустой записи выводится штрихкод предыдущей позиции, то это может происходить только из-за того, что не выполняется участок кода

```1c
    Для Каждого Запись Из НаборЗаписей Цикл
    ОбластьМакета.Параметры.ШтрихКод = Запись.ШтрихКод;
    ОбластьМакета.Параметры.КодУпаковки = Запись.КодУпаковки;
    КонецЦикла;
```

то есть НаборЗаписей пуст.

Выложите весь кусок кода, гда вы перебираете номенклатуру и выводите в табличный документ.
---
Записи были и ровно те которые мне нужны, смотрел отладчиком. Никаких других записей в набор не попадало. Это процедура печати обычной Реализации из типовой УТП, ее я не кроме этого не допиливал