Версия для печати темы (https://pro1c.org.ua/index.php?s=5395b5aceadde2791e5d86d1002e1e76&showtopic=40715)

Нажмите сюда для просмотра этой темы в обычном формате

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7 _ Программирование обычных форм 1С 8.2 и не интерфейсной логики _ РегистрСведений Штри-коды ошибка записи.

Автор: bizisoft 02.10.17, 12:02

Здравствуйте.

1С:Предприятие 8.2 (8.2.19.130)
"Альфа-Авто: Автосервис+Автозапчасти, украинская версия 4.1" (4.1.14.01)
обычные формы.

Пытаюсь программно из внешней обработки записывать в регистр сведений "штрих-коды".
Кидаю на форму несколько полей ввода, пвНоменклатура, пвШтрихКод, пвЕдИмз, пвХарНом, все кроме пвШтрихКод установлены указатели на соотв-е справочники.
Для добавления используется код

    МенеджерЗаписи = РегистрыСведений.ШтрихКоды.СоздатьМенеджерЗаписи();
    
    МенеджерЗаписи.Объект = пвНоменклатура;
    МенеджерЗаписи.ШтрихКод = пвШтрихКод;
    МенеджерЗаписи.ЕдиницаИзмерения = пвЕдИзм;
    МенеджерЗаписи.ХарактеристикаНоменклатуры = пвХарНом;
    МенеджерЗаписи.Записать();
    
    НаборЗаписей = РегистрыСведений.ШтрихКоды.СоздатьНаборЗаписей();
    НаборЗаписей.Отбор.Объект.Установить(пвНоменклатура);
//---
    НоваяЗапись = НаборЗаписей.Добавить();               
    НоваяЗапись.Объект = пвНоменклатура;     
    НоваяЗапись.ШтрихКод = пвШтрихКод;                                                            
    НоваяЗапись.ЕдиницаИзмерения = пвЕдИзм;
    НоваяЗапись.ХарактеристикаНоменклатуры = пвХарНом;    
    НаборЗаписей.Записать();
//---    
    НоваяЗапись = НаборЗаписей.Добавить();               
    НоваяЗапись.Объект = пвНоменклатура;     
    НоваяЗапись.ШтрихКод = пвШтрихКод+"        0001";                                                            
    НоваяЗапись.ЕдиницаИзмерения = пвЕдИзм;
    НоваяЗапись.ХарактеристикаНоменклатуры = пвХарНом;    
    НаборЗаписей.Записать();
//---

Все работает как и задумывалось.
Далее пробую делать через запрос выборкой по группе
ЗапросНоменклатура = Новый Запрос;
    ЗапросНоменклатура.Текст =
            "ВЫБРАТЬ
            |    Номенклатура.Ссылка,
            |    Номенклатура.ПометкаУдаления,
            |    Номенклатура.Родитель,
            |    Номенклатура.ЭтоГруппа,
            |    Номенклатура.Код,            
            |    Номенклатура.Артикул,
            |    Номенклатура.Наименование,            
            |    Номенклатура.Производитель
            |ИЗ
            |    Справочник.Номенклатура КАК Номенклатура
            |ГДЕ
            |    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)
            |    И Номенклатура.ЭтоГруппа = ЛОЖЬ";
    ЗапросНоменклатура.УстановитьПараметр("Ссылка",пвГруппа.Ссылка);
    Результат = ЗапросНоменклатура.Выполнить();
    ТЗ = Результат.Выбрать();    
    Пока ТЗ.Следующий() Цикл
        СтрШтрихКод = СтрЗаменить(ТЗ.Ссылка.Артикул, "-", "");
        
        МенеджерЗаписи = РегистрыСведений.ШтрихКоды.СоздатьМенеджерЗаписи();
    
        МенеджерЗаписи.Объект = ТЗ.Ссылка;
        МенеджерЗаписи.ШтрихКод = СтрШтрихКод;
        МенеджерЗаписи.ЕдиницаИзмерения = пвЕдИзм;
        МенеджерЗаписи.ХарактеристикаНоменклатуры = пвХарНом;
        МенеджерЗаписи.Записать();
        
        НаборЗаписей = РегистрыСведений.ШтрихКоды.СоздатьНаборЗаписей();
        НаборЗаписей.Отбор.Объект.Установить(пвНоменклатура);
    //---
        НоваяЗапись = НаборЗаписей.Добавить();               
        НоваяЗапись.Объект = ТЗ.Ссылка;     
        НоваяЗапись.ШтрихКод = СтрШтрихКод;                                                            
        НоваяЗапись.ЕдиницаИзмерения = пвЕдИзм;
        НоваяЗапись.ХарактеристикаНоменклатуры = пвХарНом;    
        НаборЗаписей.Записать();
    //---    
        НоваяЗапись = НаборЗаписей.Добавить();               
        НоваяЗапись.Объект = ТЗ.Ссылка;      
        НоваяЗапись.ШтрихКод = СтрШтрихКод+"        0001";                                                            
        НоваяЗапись.ЕдиницаИзмерения = пвЕдИзм;
        НоваяЗапись.ХарактеристикаНоменклатуры = пвХарНом;    
        НаборЗаписей.Записать();
    //---    

    КонецЦикла;


На этапе перебора результата в цикле и записи в регистр, выдает ошибку:
Цитата
{Форма.Форма.Форма(95)}: Ошибка при вызове метода контекста (Записать)
НаборЗаписей.Записать();
по причине:
Запись не верна! Значение поля не соответствует установленному отбору: ШтрихКоды: 3515623700, Прокладка клапана х/хода ( 35156-23700 ), , (Регистр сведений: Штрих-коды; Номер строки: 1; Поле: Объект)


Подскажите пожалуйста в чем косяк, т.к. не совсем понятно, почему измерение Объект не "принимает" присвоенную ему ссылку на объект номенклатуры?

Автор: sava1 02.10.17, 12:13

Цитата(bizisoft @ 02.10.17, 13:02) *
НаборЗаписей.Отбор.Объект.Установить(пвНоменклатура);


это как ?

Автор: Petre 02.10.17, 12:15

bizisoft @ Сегодня, 13:02 * ,
Если уж вы в наборе установили отбор по полю, то нечего присваивать данному полю другие значения в пределах этого же набора. Иначе пользуйтесь менеджером записи.

Автор: bizisoft 02.10.17, 21:22

Благодарю вас SAVA1 и PETRE, за подсказку.
Вот что копи-паст косячный делает - скопировать, скопировал, а в этом месте забыл поменять пвНоменклатура на ТЗ.Ссылка.

Украинский 1С форум: всё про 1С 8.3, 1С 8.2, 1С 8.1, 1С 8.0, 1С 7.7
https://pro1c.org.ua