Имя: Пароль:
1C
1С v8
УГГ Запись серии в регистр штрих-кодов
, , ,
0 disk-2008
 
27.12.13
14:17
УПП 1.3.29.2

В регистр штрих-кодоов, к уже имеющемуся штрих-коду надо добавить серию (равную штрих-коду).

Данные подготавливаю в структуре после запроса, по отладке - все корректно.

Проблема в том, что программа не дает сделать запись в регистр и сообщает, что такой штрих-код уже имеет владельца.
Без владельца (ссылки на номенклатуру) - сообщает, что нет владельца.

Подскажите, пожалуйста, как все-таки добавить информацию к уже имеющемуся штрих-коду?
1 shuhard
 
27.12.13
14:20
(0)[УГГ]
симптоматично
2 disk-2008
 
27.12.13
14:21
Сейчас такой код.
        
Процедура КнопкаВыполнитьНажатие(Кнопка)                

...

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

//&НаСервереБезКонтекста

Процедура МенеджерЗаписиСерииШК(СтруктураШК)

            Менеджер = РегистрыСведений.Штрихкоды.СоздатьМенеджерЗаписи();
              Менеджер.Штрихкод = СтруктураШК.Штрихкод;
            
            
            Менеджер.Владелец= СтруктураШК.Владелец;
            Менеджер.ТипШтрихкода= СтруктураШК.ТипШтрихкода;
            Менеджер.ЕдиницаИзмерения= СтруктураШК.ЕдиницаИзмерения;
            Менеджер.ХарактеристикаНоменклатуры= СтруктураШК.ХарактеристикаНоменклатуры;        
            Менеджер.Качество= СтруктураШК.Качество;
        
            Менеджер.СерияНоменклатуры= СтруктураШК.СерияНоменклатуры;            
            
            Менеджер.Записать ();
        
КонецПроцедуры
3 disk-2008
 
27.12.13
14:23
(1)Как обойти проверку уникальности штрих-кода без доработки конфигурации.
У меня код во внешней обработке.
4 disk-2008
 
27.12.13
14:27
Никто не знает?
5 Defender aka LINN
 
27.12.13
14:31
один штрих-код для двух разных позиций?
Какие у вас интересные грабли, узорчатые...
6 disk-2008
 
27.12.13
14:31
Набор записи с отбором - аналогично.
7 disk-2008
 
27.12.13
14:32
(5)Мне надо одну позицию - к уже имеющемуся штрих-коду добавить серию, которую я программно создаю.
8 MrStomak
 
27.12.13
14:33
(7) Ну так удаляй запись без серии и добавляй запись с серией.
9 disk-2008
 
27.12.13
14:33
(5)Сначала штрих-код - без серии, обработкой надо сделать, чтобы появилась серия именно для этого штрих-кода, а не новая строка в регистре сведений штрих-кодов.
10 Defender aka LINN
 
27.12.13
14:34
(7) Серия у штрих-кода? Ты продолжаешь ломать мою психику.
Серия есть у номенклатуры. При чем тут вообще штрих-код?
11 disk-2008
 
27.12.13
14:34
(8)Уже пробовали.
Появляются две строки - одна без серии, вторая с серией без штрих-кода.
12 MrStomak
 
27.12.13
14:35
(11) Плохо пробуете. Метод Удалить() известен?
13 disk-2008
 
27.12.13
14:37
(10)Не так формулирую, конечно.
Серия должна появиться у владельца штрих-кода, ее программно формируем - появляется в карточке номенклатуры, которая является владельцем этого штрих-кода.
Но, когда смотрим в регистр штрих-кода - там этой серии  нет, как и в карточке номенклатуры на закладке штрих-кодов.
Надо сделать связь имеющегося штрих-кода и серии.
14 disk-2008
 
27.12.13
14:37
(11)Через Менеджер.Удалить()  и пробовали.
2 строки появляются.
15 MrStomak
 
27.12.13
14:41
(14) Я не могу протелепатировать все 100500 ошибок, которые вы можете сделать. Методически все следующим образом происходит: удаляете запись на комбинацию измерений без серии, добавляете запись на комбинацию измерений с серией. Если у вас там по 2 строки, то как минимум вы не смогли удалить запись.
16 MrStomak
 
27.12.13
14:42
А если при этом метод Удалить все же использовался - значит проблема в заполнении ключевых полей менеджера записи.
17 disk-2008
 
27.12.13
14:42
(15)Именно так методически и пытались.
18 disk-2008
 
27.12.13
14:43
(16)На отладке все корректно - поля заполнены, типы правильные.
19 disk-2008
 
27.12.13
14:44
(18)+
На 8.3.3.721.
20 MrStomak
 
27.12.13
14:47
(19) значит поля заполнены не тем. после и перед удалением в отладчике посмотреть регистрысведений.штрихкоды.получить(Отбор) наличие записи в базе
21 Umga2002
 
27.12.13
14:47
Запись регистра с заменой(параметр записать)
22 MrStomak
 
27.12.13
14:50
(21) Комбинация измерений не совпадает, ты чего.
23 disk-2008
 
27.12.13
14:58
(22)Спасибо, получилось!!!

Не удалялось из-за пустой ссылки на серию - сделали отдельную переменную,  стало работать.
24 disk-2008
 
27.12.13
15:02
(23)+
Т.е., в Менеджер.СерияНоменклатуры не было явно указанной пустой ссылки на серию перед удалением, просто ее не указывали.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший