Имя: Пароль:
1C
1С v8
Не записывается независимый непериодический регистр сведений
0 AlexC111
 
06.08.12
16:59
НаборЗаписиРС = РегистрыСведений.Штрихкоды.СоздатьНаборЗаписей();
НаборЗаписиРС.Отбор.Код.Установить(НовыйКодШтрихкода);
ЗаписьРС = НаборЗаписиРС.Добавить();
ЗаписьРС.Штрихкод = НовыйШтрихкод;
ЗаписьРС.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(ТекущаяСтрока.Номенклатура);
ЗаписьРС.ЕдиницаИзмерения = Справочники.ЕдиницыИзмерения.НайтиПоНаименованию(ТекущаяСтрока.ЕдиницаИзмерения);
НаборЗаписиРС.Записать();


НовыйКодШтрихкода - это функция, работает верно, возвращает число "следующего" штрихкода (т.е. если в регистре 15 записей, то оно возвратит 16)
НовыйШтрихкод - тоже работает верно, возвращает строку.

Ошибка такая:
{Документ.ЗаказПоставщику.Форма.ФормаДокумента.Форма(2186)}: Ошибка при вызове метода контекста (Записать)
       НаборЗаписиРС.Записать();
по причине:

по причине:
Запись не верна! Значение поля "Код" не может быть пустым!: Штрихкоды: 0 (Регистр сведений: Штрихкоды)

В чём дело, не пойму. В отладчике Номенклатура подхватывается, а Код действительно остается равено 0( Пробовал вручную тупо указать число, не помогло.
1 Ненавижу 1С
 
гуру
06.08.12
17:00
а где тут поле Код?
2 AlexC111
 
06.08.12
17:01
Код - это измерение регистра. Я по нему установил отбор:
"НаборЗаписиРС.Отбор.Код.Установить(НовыйКодШтрихкода); "
3 х86
 
06.08.12
17:01
(0)типы значений сравни
4 Ненавижу 1С
 
гуру
06.08.12
17:01
(2) отбор установил, но нужно его еще и записать
5 AlexC111
 
06.08.12
17:02
Уже. ТипЗнч(НовыйКодШтрихкода)=Число. Измерение "Код" тоже число.
6 Ненавижу 1С
 
гуру
06.08.12
17:02
+(4) точнее заполнить
НаборЗаписиРС.Код = НовыйКодШтрихкода;
7 боксер
 
06.08.12
17:03
за такой код увольнять сразу надо:
ЗаписьРС.Владелец = Справочники.Номенклатура.НайтиПоНаименованию(ТекущаяСтрока.Номенклатура);
8 AlexC111
 
06.08.12
17:06
(7) Это уже от нечего делать) изначально было "ЗаписьРС.Владелец = ТекущаяСтрока.Номенклатура;"
9 х86
 
06.08.12
17:06
(7)почему? мошт у него ТекущаяСтрока.Номенклатура строка и он точно уверен что уникальная?
10 AlexC111
 
06.08.12
17:08
(6) ЗаписьРС.Код = НовыйКодШтрихкода;
Благодарю, заработало. И главное понимал, что надо сделать что-то подобное, но меня сбивал с толку следующий код, которые почему-то работает, несмотря на то, что те измерения регистров тоже не заполнены:
       НаборЗаписиРС = РегистрыСведений.ЗначенияСвойствОбъектов.СоздатьНаборЗаписей();
       НаборЗаписиРС.Отбор.Объект.Установить(ТекущаяСтрока.Номенклатура);
       НаборЗаписиРС.Отбор.Свойство.Установить(ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("ПроверитьШтрихкод"));
       ЗаписьРС = НаборЗаписиРС.Добавить();
       ЗаписьРС.Объект   = ТекущаяСтрока.Номенклатура;
       ЗаписьРС.Свойство = ПланыВидовХарактеристик.СвойстваОбъектов.НайтиПоНаименованию("ПроверитьШтрихкод");
       ЗаписьРС.Значение = (ИСТИНА);
       НаборЗаписиРС.Записать();
11 AlexC111
 
06.08.12
17:09
(7) Согласен, конечно, эта строка попахивает извращением)
12 hhhh
 
06.08.12
17:29
(10) наверно, ты эту строчку не заметил

ЗаписьРС.Объект   = ТекущаяСтрока.Номенклатура;
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший